Here’s a new video showing off obstacle avoidance. The robot manages to avoid walls, chairs, tables, couches, and a dog (although the dog usually runs away, probably because it knows the robot’s secret world domination plans).
Much work remains, and not enough time remains.
- I’ve replaced the motors to increase torque. The old, faster, lower torque motors tended to stall. The new motors work well although they produce more electrical noise. Next time I have the robot apart, I’ll add the vendor’s recommend filter caps to the motors. As an interim solution, I limit the acceleration, which keeps to noise to a manageable level.
- The wheels tend to fall off. That would be embarrassing during competition. I cannot get the set screws on the wheel hubs to stay put. I’ll drill out the hubs a bit so the wheel sit further on the motor shaft. If that doesn’t help, I’ll try a thread locking compound.
- The micro-controller appears to radiate interference that affects the GPS receiver. I experimented with tin-foil shielding and didn’t observe improved reception. I added a 3.3V regulator dedicated to the GPS, and performance is now acceptable.
- The software has grown substantially. The robot sports an interactive serial monitor. The monitor allows configuring various parameters and saving those parameters in battery-backed RAM, which allows me to tune behaviors without the time consuming compile/load cycle. Also, the monitor permits checking sensor values, watching raw NMEA data from the GPS, and restarting the GPS.
- Waypoint seeking and route following code is done and working. Unfortunately, the GPS doesn’t provide reliable heading data at the robot’s typical speeds. I’m not really surprised and planned from the beginning to include a magnetic compass, but I never got around to integrating the compass.
- The tail wheel is too small and tends to catch on obstacles. I have several new candidate wheels in the mail.
- Integrate the compass and update the navigation code to use the compass.
- Replace the tail wheel with something less likely to get stuck.
- Improve main wheel mounting.
- Use the buttons on the top of the robot for something.
- Implement a data logger to permit better analysis of robot performance.
That is some impressive code you got running there. I was really surprised that it recovered from between the recliner and the wall.
Looking really good. The OA system seems very robust.