Brandon's dead reckoning robot
For the recent LVBots dead reckoning competition that was hosted here at Pololu, I decided to make a robot based on the Baby Orangutan robot controller. This post details my robot and some of the considerations made while I went through my design process. If you would like more details about the competition rules and how it was judged, see the LVBots dead reckoning rules (23k pdf).
I started by choosing my parts and making sure that my robot, which would later be named “Baby Blues”, would be able to function in the way I wanted. I decided on using the Baby Orangutan because of its integrated motor driver and compact size. Since this robot was made for dead reckoning, I decided to use our optical encoders with our micro metal gearmotors with extended shafts. Using the 3pi robot as a reference, I chose the 30:1 micro metal gearmotors with extended shafts (the 3pi uses our standard 30:1 Micro Metal Gearmotors). Our 32×7 mm wheel seemed like a natural fit for the size and scale of my robot, and their narrow width helps prevent slip that can occur with wider tires. I also wanted Baby Blues to transition to a maze solving robot after this competition, so I used our QTR-3RC reflectance sensor array as a main line following sensor with two QTR-1RC reflectance sensors as optional supporting sensors on each side. To power my system, I used 4 AAA batteries, housed by a 4-AAA Battery Holder, combined with an adjustable step-up/step-down voltage regulator so I can control the voltage to the Baby Orangutan.
With part selection nearly done, I focused on the mechanical design. Originally starting with a round chassis design, I ended up giving the robot a hexagonal shape to add some style. The laser-cut chassis is made up of two pieces: the bottom piece holds the microcontroller, motors, ball caster, and QTR sensors, while the top piece carries the battery holder, regulators, pushbutton power switch, and a few extra components added for convenience (more on that later). After looking at the height of the battery holder and motors/wheels, it became apparent that our 1 in. aluminum standoffs would work great as spacers for my two chassis plates. Before moving forward, I modeled Baby Blues in SolidWorks to get a better idea of how everything would fit together. Once most of the major components (mechanically speaking) were modeled, a side view of Baby Blues showed that our 3/8 in. ball caster would extend below the chassis a little more than the wheels (shown in the picture below) and cause the robot to tilt forward slightly. This ended up being advantageous as it moved the reflectance sensors closer to the ground and closer to their optimal sensing distance of 3 mm.
After laser cutting the acrylic chassis and assembling all of the major parts, I focused on adding some extra, non-essential, features. Baby Blues includes 3 user pushbuttons for easy debugging and control, a pushbutton power switch, charging port, and a 6-pin header to allow easy access to the Baby Orangutan’s ISP programming pins. The main purpose of these features was to avoid the need to take apart the chassis to charge the batteries or program the robot since I knew it would be a tight fit with all the wires. The pictures below show my completed robot.
Final results and considerations
With the deadline for the competition quickly approaching, I ran into a few unexpected problems. One of my encoders had a bad connection, which required me to take apart my robot and resolder some wires. After that, I could focus on debugging my code. Unfortunately, I had an issue in my code that caused the unit vectors I was using to track my orientation to decrease in magnitude over extended distances. About twenty minutes before the competition, with no clear solution to my problem, I decided to take a different approach. I programmed the robot to follow the line and, once it had finished, to rotate for a random amount of time, then drive forward for a random amount of time in whatever direction it ended up in. While this solution is far from ideal, it was able to offer some excitement and suspense. I could have done it in a more systematic way that would spread my results so that I was sure that at least one of them gave me a positive result, but I chose to leave it to luck—we are in Las Vegas after all.
Moving forward, I would still like to get Baby Blues dead reckoning properly. I will continue to work on it and try to smooth out the problems I ran into. If I were to do the dead reckoning competition again, I would leave more time for debugging my code and try to focus less on the convenient features until after the robot is functional. However, with its whole structure put together now, Baby Blues can also be repurposed for other competitions.