The main idea of the Andar Robot project is to create a robot that has an Arduino as Backbone, an Android device as Brain, and a second Android device as Remote control.
It is a never ending project, intended to create a platform I can use to learn and test ideas.
The main chassis is the Robo Soul TK 100, it looks super nice, and it is really strong. The drawback I found is the strength of its motors.. they could be a lot better.. nevertheless, I quite recommend it.
- An Arduino Mega ADK as the Backbone, responsible of handling motors and sensors in the robot
- A Arduino Mega sensor shield to make connections more clear.
- An Android phone that acts as the Brain of the robot, responsible of directing the Backbone and of handling the sensors in the phone (GPS, camera, gyro, etc)
- An Android tablet, that acts as Remote control, responsible of sending commands to the brain through internet or LAN when the robot is in remote control mode, or be a status panel when in autonomous mode.
- The sonar, built with 12 ultrasonic distance sensors (Same idea used by super droid bot Anna, (in fact, that design is quite similar to what I was imaging).
- I also plan to add infrared range finders to detect the presence of floor and roof.
The robot consist in three applications:
- Code that runs in Arduino, and acts as Backbone
- Code that runs on the cellphone placed on the robot and acts as its Brain
- Code that runs on android tablet and acts as internet enabled Remote control
NOTE: Most of us are into robotics as a hobby, and many times we have to “re invent the wheel”, just because we don’t have anything to get based on. (That’s usually my case at least). To change that, Andar is an open source project, so, even there is not much to share for now, if you want to review the code, improve it, clone it ask me something about it, or whatever, you are more than welcome to do so. I always try to comment everything, and always add a detailed message when pushing changes, so looking at the commit history will give ideas of what I’m working on. The repository can be found at https://bitbucket.org/nahueltaibo/andar/. I hope it can help anyone to get ideas, and help me to improve thanks to your comments and critics. And specially it would be awesome if you do the same with your projects. I’m sure our robots will be a lot better if we do so.
Connect Arduino Mega ADK to Android
For this connection I am using Android Accessory library. I also created a Message structure really easy to use. Its main idea is that you just push or pop values (int, byte, char, etc) to a Message object, so you are responsable to know the order of them on both sides of the communication.
I did it this way so you can push for example, a byte for a message type, and then push all parameters that type of message needs. on the recipient side, yo pop that first type byte, and using that, you decide what else you should pop from the message according with the message type.
Create the chain that connects Remote – Brain – Backbone
This includes creating the Remote app, and enabling sending packages from Backbone’s Arduino to Brain’s Android, (through usb communication), and from there to Remote’s Android (using TCP-IP communication). The other way is supported also, of course.
Design and learn how to 3D print some of the required parts of Andar Hardware
I created a 3D model of the chassis, and on top of that I’ll design the pieces that I see that I’m needing. I think that will be easier that make them by hand.
Adding Camera support on the chain Brain – Remote
Video streaming between Brain and Remote Using internet to control the robot, without a camera makes no sense.. that is why I need to stream video from the robot to the Remote Control app
Add to it a range finder sonar ring
As I plane it, it has one range finder every 30 degrees, so 12 range finders. if that is too much for the Arduino, (might be because of the response time of the ultrasonic sensors) I think that I’l use a Arduino mini to handle all distance sensors. The advantage of this approach will be also that I will be able to reuse the sonar on any other project. (Time will say)
Make it basically autonomous (just move through a room without kicking anything)
Enable switching from Autonomous to Remote Controlled from the remote control
Send Android Brain sensors information to Remote
Add Autonomous Map creation, and usage