-
Prequel 2: LaserBot Rev1.1
08/21/2017 at 11:15 • 0 commentsIn September 2014 I thought that the reason the LaserBot didn't balance properly is because I designed it to have a reasonably low center of gravity (having the battery compartment at the back of the bot). I discovered that balancing robots need to have a high center of gravity, so that force created at the contact of wheels and ground can create maximum torque about the CG. I had very little time to work on the project at the time, so I still didn't do any calculations or simulation. I just tried to build a new LaserBot chassis with battery compartment on the top. I designed it in Solidworks and again cut it out of 3mm acrylic. Unfortunately it still couldn't balance properly and I still didn't know why.
-
Prequel 1: LaserBot Rev1.0
08/21/2017 at 10:34 • 0 commentsI designed and built the first revision of the LaserBot in Spring 2014 during my second year at Simon Fraser University. The main goal of the project was to practice using laser cutter and Arduino. I also wanted to learn how to work with an IMU.
This was way before I have taken any courses on feedback control or system simulation. Also I was quite busy with university courses. For these reasons I didn't design the robot carefully. I didn't calculate any dynamics, didn't do any simulations. I just eyeballed the chassis design and picked the first motors that seemed decent to me.
I must mention that I picked rather small motors and small wheels. I wanted to make the task more challenging for myself.
I designed the rev1.0 chassis in Autodesk inventor and cut it on a laser cutter out of 3mm acrylic sheet. I programmed the Arduino using complementary filter for IMU and PID controller. The controller loop was not even called by a timed interrupt, so there was no guarantee that it ran at a constant frequency.I wrote a Desktop application using Processing. The application could receive data about robot's attitude over serial port and display it graphically. It could also control PID gain constants on the robot.
In the end, rev1.0 couldn't balance itself no matter how I tuned the PID constants. At that moment I had to means of figuring out what was wrong.