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.
- An SD card with 2Gb or larger (ROS is quite big)
Download the official UDOO kernel from http://www.udoo.org/downloads/
Download the official UDOO Modules from http://www.udoo.org/downloads/
Download the official UDOO u-boot from http://www.udoo.org/downloads/
- A linux system (used for the setup)
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 220.127.116.11" | tee /etc/resolv.conf > /dev/null apt-get update
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
Some ROS tools require you to setup the locale first. Do that using the following command:
sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX
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
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
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