Category: tech

Installing ROS on Gumstix Overo running Ubuntu 10.04

ROS logoSnowbots users ROS as the software platform for our robots. Since deciding to experiment with Gumstix to build smaller, nicer looking vehicles we have been looking for a way to run ROS on it so we do not have to modify any of our other code to make our robot work.

After figuring out how to install Ubuntu 10.04 on the Gumstix Overo, installing ROS became trivial. Ubuntu has all the required dependencies for ROS so all that was required was to compile ROS. Following the ROS Installing On Ubuntu from SVN instructions located here worked perfectly. This solution does work perfectly but it does require compiling the code natively which can be quite slow. It took nearly 2 hours to compile ROS itself. I was also able to get add-ons like OpenCV to work correctly as well, but compiling code for it was extremely slow. I have yet to performance testing

Now that ROS is installed, the only thing remaining to drive our robots with a Gumstix is to interface our hardware with the Gumstix.

Videos to come when we get everything working


Ubuntu 10.04 on Gumstix Overo

Checkout our new Website/Blog here.

I have installed Ubuntu 10.04 on a gumstix overo using a collection of instructions found online. A summary of the instructions is below for convenience. This is my first attempt and there are a few issues that I am going to try to resolve.

I used an ubuntu 10.04 desktop machine as my working environment for these instructions.

1. Install rootstock: ‘sudo apt-get install rootstock’

Rootstock is a utility used to make a rootFS for a port

2. make rootfs using rootstock. This may take several hours

I used the following command but doing ‘man rootstock’ will give you a list of advanced commands

I set my distribution with -d to lucid because I wanted ubuntu 10.04

the openssh-server will allow you to connect your gumstix to the internet and ssh in

‘sudo rootstock -f “Gumstix” -l “gumstix” -p “overo” -n “Gumstix Overo

Ubuntu” -s lxde,gdm,openssh-server,x11vnc -t “America/Vancouver” –serial ttyS2 -d lucid –locale en_US.UTF-8’

Note 1: the user gumstix and password overo do not work because the user does not get created properly. More on how to deal with that later

Note 2: my rootstock command threw a segfault near the end but still made the image. Everything appears to be working fine so far but I am going to try to figure out how to stop it from doing that

Note 3: the lxde,gdm is good for a minimal install for use on a small device with limited power and storage space. Good for a headless system.

Link for more info on making a rootfs

3. Get MLO and u-boot from this link

4. Get your kernel u-image This kernel is based on the 2.6.34 kernel. Newer and older kernels should work but you will have to find modules for that kernel. (see step 8 )

6. put MLO, u-boot, u-image on microSD card boot partition

7. extract generated rootfs to second partition

8. Download and extract modules and copy them to second partition (where you extracted the rootfs)

9. On the second partition open the /etc/shadow file. ‘sudo gedit /path/to/second/partition/etc/shadow’

Delete the ‘*’ for the root entry. This will allow you to login as root and create a user.

Note: remember to put the ‘*’ back after you have created a user so someone can’t login as root and screw up your system

10. open the ‘/etc/network/interfaces’ file. ‘sudo gedit /path/to/second/partition/etc/network/interfaces’

add the following code to the bottom

auto eth0

iface eth0 inet dhcp

You can now unmount the microSD card, place it in the gumstix and boot to it.

Login using serial console using the gumstix instructions in the link below or you can plug an ethernet card in and ssh in

11. login as root and then create a user for yourself and give yourself sudo

sudo adduser youruser

sudo adduser youruser sudo

sudo apt-get install nano

nano /etc/shadow

add the ‘*’ back in that we removed earlier

log out as root

12. log in as your user

open the /etc/apt/sources.list file

add the following lines if they are not present

deb lucid-updates main

deb lucid-security main

then close the file

sudo apt-get update && sudo apt-get upgrade

13. Have fun

email me at if you have any problems or have something you want to add that other people should know

Optical Encoder

We have been working on getting a new encoder this year for our robots after last years hall-efect ones started breaking through out the year.  The new odometer will have have a resolution that will have more than one tick per revolution of the wheel so we no longer have to worry about are odometer not working at low speeds.

The basic priceable is that we have photo transistor to see the difference between white and black and send ether a high or low signal to our micro controller.  The LED is used to show what the out put is to avoid having to have a programme running to do basic circuit debugging.