Introduction: BOBO Arduino Based Semi-Autonomous RC Car
BOBO, is my attempt at an arduino based, autonomous robot platform. The little guy is based on an arduino mega, although the base state could be attempted on a Arduino Uno or similar. He has 4 independent motors controlling each wheel, and as of right now 3 HC-SR04 Ping sensors to interact with his environment. He scatters around driving forward until he detects an obstruction. If the obstacle is directly in front of him, it will slow down and stop, choose a new direction and then continue on his merry way. If one of the side sensors detects an obstacle it will course correct and avoid hitting the object. My current goals for the project is to implement a few more sensors to allow the robot to choose which direction he will turn when he is on a collision course. In addition I am experimenting with an accelerometer based control system to get him to drive straight or to have feed back to make it turn in a precise arc. If this fails I will most likely implement wheel counters. Eventually I would like to employ a LIDAR system, and implement a some SLAM algorithms into Linux/ PI based mapping software that if I let BOBO go in a new environment, he will build a digital map of the area and perhaps take photos and place them in that environment.
Any questions, comments, concerns, suggestions, new ideas or complaints are more then welcome in the comments section!
Step 1: Video!
Step 2: Hardware
Bobo is currently running:
An Arduino Mega
SainSmart Motor Shield
HC-SR04 Sonar Ping Sensors
Accelerometer: Arrela Adxl335 Analog Accelerometer
Step 3: Wiring
Well as a disclaimer, the wiring is a mess, and i have no intention of cleaning it up until Bobo is running much better then he is right now.
The battery is wired into the motor shield. The motor shield is powering the arduino. Each of the motors is wired into the motor shield. The ping sensors are tied into digital pins of the arduino and the power rail of the breadboard. The accelerometer is tied into the analog pins of the arduino and the power rail. The rest is fairly self explanatory.
Step 4: Code
The code is still in progress but ill share with whats working right now. The code (unfortanley I havent had time to comment it yet), that is employed on the last working version, ( the code contolling BOBO in the video), is fairly simple. It works under the premise that if there is an obstruction, it will stop the car, or course correct until there is no longer an obstruction.
The code is available on GitHub!
If you update the code and feel like sharing your ideas, feel free to share it in the comments!
Step 5: Future Goals
As I mentioned in the Intro.
Bobo still has a long way to go.
Right now i would like to finish adding some additonal sensor so I can build some logic into the way it turns after it
detects an object.
Eventually i would like to replace all of the sensors with a diy LIDAR, that I would build.
Also building in some mapping capabilities whether it be on linux or matlab, i think it would be cool to let loose and
have it map out the area and associate pictures it takes to where they were taken and maybe build a 3d model of its environment.
Long term goals after all of this is all built, replace the car with a Quadcopter and do it in the air, or boat/submarine and do it underwater.
Thanks for reading!
Hopefully Ill have some updates soon and some progress to share.