This project is my third robot, and I hope it get better than the previous two, (that's not too difficult due to the reduced functionalities of CDBot and Aum.
It is a never ending project, intended to create a platform I can use to learn and test ideas.
HARDWARE
- 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 couls be a lot better.. nevertheless, I quite recomend 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 comands to the brain through internet or LAN when the robot is in remote control mode, or be a status panel when in autonomouse mode.
- The sonar, built with 12 ultrasonic distance sensors (Same idea used by super droid bot anna, (in fact, that design is quite simmilar to what I was imaging).
- I also plan to add infrared range finders to detect the presence of floor and roof.
SOFTWARE
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
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.
PROJECT PLAN
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 receipient 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
Using internet to control the robot, without a camera makes no sense.. that is why I need to stream video from the robot to theRemote 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 aproach 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 Controled from the remote control
Send Android Brain sensors infomation to Remote
Add Autonomous Map creation, and usage
IMAGES
UPDATES
2015-10-31
15 years ago, when I was in the secondaty school, we dissasambled a fotocopy machine, and since then I stored two sensors that today I installed as wheel encoders. So, I'm now a step closer to start working on SLAM, I have something with that, I always wanted to do something in that field... the moment is coming (also the winter in here).
I've been also organizing the power wiring, i think it looks quite good.
Installed a hinge, so the red shell behaves as a car hood.
2015-10-24
I've been workin a little on the sonar ring. I'm now sure that it is possible to connect the 12 range finders to a Arduino Nano, using a single pin configuration. I got it working and upload the test sketch in my repo at https://goo.gl/z4f1DW. Anyway is almost a merged copy of the examples Single Pin Sketch and 15 sensor sketch that can be found in the newping library documentation.
I think it is time to start assembling the parts of the robot that I already have, so I can move it without thinking that I'll break every connection all the time. That sonar ring will look a lot better as soon as I hide a little more all those wires...
2015-10-16
I'm not sure if this can be called an "update" but I think it's important. 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. (Thas is usually my case at least). That's why 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 everithing, 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.
2015-10-14
Cardboard model of the sonar After the recomendations of some good co-roboters, I started working on a model of the sonar ring.. The thing was that I thought that there was no way to accomodate 12 range finders in a layout small enough to fit my robot "design", but well, I never thought in puting the rangers vertical.. Thanks for the idea :).
I created a cardboard model, to check how it would look when I finally lern to 3D print the pieces I'm needing (I'll do a free course to learn about 3D printing oin two weeks, so I should start to get a better looking robot after that).
I'm not totally conviced with the sonar, but it looks good enough, It looks like a spiked dog collar.
2015-10-10
The video streaming is working! Not yet polished enough for a video dough. Anyway, I'm so happy that it was a lot more simple than what I was expecting!
Everything was thanks to this project: https://github.com/fyhertz/libstreaming
The problem that I have to solve is that I have a 5 sec delay when streaming from android to android!!! not acceptable.. If I stream from android to PC, the delay is 1 sec, so.. If I cant find a solution, I think my remote will be a PC instead of another phone.
I've been also thinking on the body of the robot, I got a nice bowl, (just 1,5 cad!) and I like how it looks as Andar's body. I'm also wayting for the servos and Pan Tilt parts that I'm planning to use on the head.
About the sonar ring.. 12 is too much.. too big, won't look good, so I think I'll use 6, attached to the neck, so I can rotate a little the head and complete a full circle of measurements if needed. I would love to hear your opinions on this points!
2015-09-25
Remote control is stable enough to consider it done. I uploaded a video showing the progress
2015-09-13
What a complicated hobby we like guys.. I'm a little ashamed of showing such a small update, when I see so many great robots, but well, everyone started from scratch at some time. So, here are the updates made to the project.
I've been woking on a messaging protocol and library to connect Arduino and Android applications. My idea is that anyone can use this library so they can avoid spending this long long time on creating a reliable connection between arduinos, and androids.
I also made some progress on Backbone, Brain and Remote applications, since now they are connecting to each other and moving Andar motors as can be seen in the latest video.
2015-08-25
Testing a possible body structure
I've been creating a model of a possible head on cardboard, it looks quite well, but I have to decide what to do with the body since I don't like how it looks. The wide can represents what will be the sonar ring. I think I should make the body (below the sonar) fatter, It might look better, Wall-e and and R2-D2 are that fatter also. What do you think? any ideas?
Also added the communication protocol section to the documentation.
2015-08-11
I've been fighting with Android sockets all weekend to stablish a reliable connection between a Remote and Brain. I did it, nevertheless, I will create a kind of start sequence that test that everything is in place so I can detecting those basic connection errors at startup. The best idea would be to create unit tests, but maybe that is to much for this robot :)
Navigate around via ultrasound, Uses Android and Arduino
- Control method: autonomous, radio control
- CPU: Android phone
- Operating system: Windows, Android
- Programming language: C++, Java, C#
- Sensors / input devices: Sharp IR, camera, compass, accelerometer, HC-SR04
- Target environment: indoor flat surfaces
This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/andar