[Documentation] [TitleIndex] [WordIndex

Installing ROS on UDOO

UDOO is a stand alone computer based on the Freescale i.MX 6 CPU. It comes in dual and quad CPU variants, with a built in Arduino Due hardware and Arduino IDE support, making it a good hardware for Robotic applications.

The steps below allows you to install ROS Hydro on UDOO quite easily. This could only be done with the help of the ROS "Ubuntu ARM" binaries infrastructure already put in place by Austin Hendrix http://wiki.ros.org/hydro/Installation/UbuntuARM .

Please note that this is still experimental an install, report any bugs or issues you encounter.

Install Ubuntu Core

Ubuntu Core is a minimal rootfs provided by Ubuntu as part of their ports program to support small embedded hardware. The good thing about Ubuntu Core, is that it supports arm, and has lots of packages built with armhf support.



You need first create an ext3 partition on the SD card, leaving some space for the UDOO boot image "u-boot-q.bin". The boot image is 2.3MB, so leaving 10MB should be quite sufficient. Use lsblk to determine where your SD card is mounted. Then use a tool like GParted to create the partition, leaving 10MB space before the partition for the u-boot.

blackcoder@blackcoder:~$ lsblk
NAME                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT sda                             8:0    0 931.5G  0 disk   ├─sda1                          8:1    0   243M  0 part  /boot ├─sda2                          8:2    0     1K  0 part   └─sda5                          8:5    0 931.3G  0 part
   . ├─kubuntu--vg-root (dm-0)   252:0    0 927.2G  0 lvm   / └─kubuntu--vg-swap_1 (dm-1) 252:1    0     4G  0 lvm
    . └─cryptswap1 (dm-2)       252:2    0     4G  0 crypt [SWAP]
 sdf                             8:80   1    15G  0 disk   └─sdf1                          8:81   1    15G  0 part  /media/blackcoder/0C4A-8FA6


Verify that your partition table is correct before you flash the u-boot:

sudo fdisk -l

you should see something like this:

Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            10240    15505407     7751680   83  Linux

now flash the u-boot on the boot sector using the following:

dd if=u-boot-q.bin of=/dev/sdd bs=512 seek=2 skip=2

Please be aware that I used sdd for my SD card, check your system to find the correct dev to use for your card (using lsblk or fdisk -l).

Now mount the SD Card to a local folder :

sudo mkdir -p /mnt/sdcard
sudo mount /dev/sdd1 /mnt/sdcard

Download and unpack the Ubuntu 13.04 Core to the scard

cd /mnt/sdcard
sudo wget http://cdimage.ubuntu.com/ubuntu-core/releases/13.04/release/ubuntu-core-13.04-core-armhf.tar.gz 
sudo tar xzf ubuntu-core-13.04-core-armhf.tar.gz

Copy UDOO's modules and UImage to sdcard:

cd /mnt/sdcard
sudo cp path/to/uImage ./boot
sudo tar xzf /path/to/modules.tar.gz

Ubuntu Core comes with bare minimal packages and setup. You will have to add at least one user yourself, and add network and ssh packages to get you going (you might need to install: binfmt-support qemu-user-static debootstrap at this stage):

sudo apt-get install binfmt-support qemu-user-static debootstrap
cp /usr/bin/qemu-arm-static /mnt/sdcard/usr/bin/
sudo chroot /mnt/sdcard
adduser udoo
adduser udoo adm
adduser udoo sudo

Install other packages:

apt-get update
apt-get install sudo nano net-tools openssh-server isc-dhcp-client
apt-get install inetutils-* wpasupplicant avahi-autoipd
apt-get install package-name # choose any other packages you want

NOTE: if you get messages like "Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/raring-security/main/i18n/Translation-en Something wicked happened resolving 'ports.ubuntu.com:80' (-11 - System error)" then do this :

echo "nameserver" | tee /etc/resolv.conf > /dev/null
apt-get update

Setup network:

sudo nano /etc/network/interfaces

Add the following at the end of the file

auto eth0
iface eth0 inet dhcp

Once you finish setting up the packages safely exit using:


Install ROS for ARM

Enable Ubuntu Repos

First enable the following Ubuntu Core repositories: "restricted" "universe" and "multiverse". You can do this by editing the /etc/apt/sources.list and removing the hash symbol "#" from the beginning of the line containing the information about the repositories.

sudo nano /etc/apt/sources.list

Your file should then look like this:

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ports.ubuntu.com/ubuntu-ports/ raring main restricted 
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://ports.ubuntu.com/ubuntu-ports/ raring-updates main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-updates main restricted
## Uncomment the following two lines to add software from the 'universe'
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://ports.ubuntu.com/ubuntu-ports/ raring universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring universe
# deb http://ports.ubuntu.com/ubuntu-ports/ raring-updates universe
# deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-updates universe
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://ports.ubuntu.com/ubuntu-ports/ raring-backports main restricted
# deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-backports main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ raring-security main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-security main restricted
# deb http://ports.ubuntu.com/ubuntu-ports/ raring-security universe
# deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ raring-security multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring-security multiverse

Setup Locale

Some ROS tools require you to setup the locale first. Do that using the following command:


Add ROS ARM Repos & Key

sudo sh -c 'echo "deb http://packages.namniart.com/repos/ros raring main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.namniart.com/repos/namniart.key -O - | sudo apt-key add -
sudo apt-get update

Install the required ROS packages

Due to some missing Lisp packages in the Ubuntu Core 13.04 armhf packages, you can not at the moment install "ros-hydro-robot" or "ros-hydro-ros-base" (I tried, but it fails because of the missing Lisp dependencies). You can, however, install the ROS packages individually. Simply list all the ROS packages using:

sudo apt-cache search ros-hydro-*

and install any package you want:

sudo apt-get install ros-hydro-slam-gmapping ros-hydro-ros ros-hydro-pcl-ros ros-hydro-navigation

Initialize rosdep

Before you start using ROS, you need to initialize rosdep:

sudo apt-get install python-rosdep 
sudo rosdep init 
rosdep update

Setup the Environment

You can either source the setup.bash file everytime you open a terminal window, or you can setup the .bashrc file so it will do it for you:

echo "source /opt/ros/hydro/setup.bash" >> ~/.bashrc
source ~/.bashrc

Install rosinstall

This package "rosinstall" is installed separately and can assist in installing packages from the source. To install it:

sudo apt-get install python-rosinstall



If you get this message:

debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)

then do the following:

apt-get install dialog

If you get this message when using apt-get

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "en_GB:en",
        LC_ALL = (unset),
        LANG = "en_GB"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

the fix it with the following:

sudo apt-get install --reinstall language-pack-en
sudo locale-gen
sudo dpkg-reconfigure locales

2024-07-13 13:16