I’ve recently bought aÂ Nokia N900Â smartphone. It’s described as an Internet Tablet with phone capabilities. Interesting thing is 100% linux based, you can have full root access. On paper, this phone is awesome, in reality, it suffers from a lot of half-baked applications, poorly maintained software but, still, this opens to lots of tinkering…
On the other side, I’ve also discoveredÂ ROS. ROS stands for Robotic Operating System. It’s robotic framework, offers distributed computing over nodes, pubsub architecture for inter-processes message exchanges. It can be programmed using C++, python and other less supported language. It’s developped byÂ Willow Garage, the guys who built robotÂ PR2. If you’ve ever searched a flexible, powerful and fun robotic framework, or even wanted to develop your own (…), you definitely need to give ROS a try.
There are lots of advantages running a PC based robot. For instance you can easily plug a USB webcam and give vision to your robot. For minimal cost. Doing this with an embedded cam, likeÂ CMUCam, is certainly fun and interesting but in the end, performances can’t be compared and you’ll sure need some power computing to process incoming images. There are existing tiny PC, based onÂ ITX motherboardsÂ for instance in order to do this. You can install Linux, put ROS on it and start to build your Linux powered robot. But, wait, I also have a very, very small form factor Linux PC, my N900… Why not using it as a robotic platform ?
- 2 webcams (front, back)
- 3-axis accelerometer
- high resolution touchscreen
- micro-USB connector, can be used as a USB host with some tinkering
- Infra-red beam
- RGB LED
- 32GB memory, extendable to 64GB with microSD cards
- ambient light sensor
Doesn’t it sound awesome as your main robotic platform ?
The idea is thus to install ROS on N900. Low-level tasks, such as actually activate motors, collecting sensor data, should remain on a microcontroller board, likeÂ Jaluino. All collected data and actions should go through N900, acting as a hub, performing some pre-processing tasks before delegating more power-consuming tasks to a PC around there, also running ROS.
It’s been a while since I’ve already install ROS on N900. There were lots of trials and errors, highly time consuming, but it definitely worth it! I’ve created a dedicated Google Code project, namedÂ ros-n900. You’ll find ROS packages specific to N900 target, and deb packages to easily install ROS on N900. You can also follow instructions on this wiki page I wrote on ros.org:Â http://www.ros.org/wiki/N900ROS.
Next, we’ll see how to have fun with N900 webcams, ROS andÂ OpenCV!