Monday, November 1, 2010

Android (Phone) Robot for Robomagellan

As of a couple weeks ago, I've entered the new millenium with the purchase of an Android phone, an LG Ally (pic from intomobile.com).

Though I'm notoriously a Mac guy and most of my friends expected me to get an iPhone, my blogs, pictures, email, calendar, etc., are all hosted on Google.

And I was drawn to it because it's programmable in Java. On the other hand, programming the iPhone... well, let's just say that Robotgrrl successfully scared the bejeepers out of me in one of her blog entries with such quotes as:

If you’re ever looking for a challenge worth pulling your teeth out, making an iPhone App is a great place to start. 

and

The language, the concepts, everything is completely different from what is seen in languages like Java and C++.

Um, no thanks. Not that I'm a Java master, or anything. I'm a newb (and how many people are truly masters with an API that big anyway?).  But at least I'd be facing a learning curve instead of a learning cliff equipped with pillboxes and landmines. So Android was the obvious choice all around.

I got to thinking, gee, this thing has a GPS, a compass, and a 3-axis accelerometer, all the stuff that would cost me a couple hundred bucks to add to a scratch-built robomagellan robot.

That is, if I were to follow my dream of entering the Sparkfun Autonomous Vehicle Contest in 2011. Or any other robomagellan-esque challenge at any time in the near future.

So instead of a scratch-built robomagellan robot, why not an Android brain with the navigation smarts coded in, sitting atop some cheap RC chassis equipped with an Arduino brain stem, and some simple comm code on both ends for control.

That has to be easier and better than trying to do all this with 8-bit, 16MHz microcontrollers and C, right? I'd say so. Did I mention that OpenCV has been ported to Android?

Here's a great PDF write-up on the topic of Androids for robotics and robomagellan.

2 comments:

  1. I am interested in doing something like this. I have a Nexus one and some robotic experience.
    Please tell me if you have some design / hardware in mind for the robot.

    ReplyDelete
  2. Ernesto, thanks for the note! I've spent some time researching and thinking since I posted this. Here's my thoughts. Arduino-based low level controller for the RC car. Bluetooth comm between Arduino and Phone is the simplest for me; I already have BT working on Pokey. The code can be reused along with the same BT modem. Unfortunately my phone doesn't have an X-axis gyro so I am currently planning on interfacing one from Sparkfun to the Arduino. I'll use the Arduino to track to the gyro and the Android to track compass heading and GPS and send the necessary (hopefully minor) course corrections to the Arduino. For turning to navigate to the next waypoint, I'll have to find the best way to get the Arduino and Android to cooperate. This would be much easier if I had a phone with 6-DOF IMU along with compass and GPS. If it gets too hard, I may just back off and have the phone handle compass and GPS only, and spend the money on IMU hardware for the Arduino... I'll post more on the blog as I work through the issues.

    ReplyDelete