There are two streams to support ROS on an ARM target:
-
Ubuntu ARM
-
OpenEmbedded (meta-ros)
Ubuntu ARM is the most popular among researchers since it is easy to install and a lot of ARM boards are already supporting it; a few of them are shown in the following diagram. In addition, many ROS packages are already supported or could be ported with minimal changes:
Supported platforms
However, OpenEmbedded is used by professional developers for commercial products in industries. The following table shows a comparison of both:
Ubuntu ARM
|
OpenEmbedded
|
Binary ROS packages
|
A cross-compilation tool chain for ROS packages based on catkin
|
Is compiled for a generic ARM architecture
|
Compiles all packages from their source
|
Installation with usual Ubuntu tools (dpkg, APT, and so on)
|
Supports many architectures: ARM, MIPS, PowerPC, and more
|
Easy and quick installation
|
Easy to adjust to new machines and architectures
|
No need to compile the basic ROS packages from source
|
Allows changes to the basic ROS packages
|
Common Ubuntu feel
|
Small Linux kernels and images
|
Additional compilation is onboard
|
Requires a powerful system setup to get the build machine and tool chain running
|
Despite several possibilities, we have chosen to install ROS on Ubuntu ARM because these distributions are more common and can be used on other ARM-based boards such as UDOO, ODROID-U3, ODROID-X2, or Gumstix Overo. It is recommended to use an image of Ubuntu ARM 16.04 Xenial armhf on the platform to work with ROS.
Before installing ROS on the specific ARM platform, we have to complete a few prerequisites. As this book is focused on ROS, we will list them without going into detail. However, there is a lot of information about Ubuntu ARM for specific ARM platforms available on websites, forums, and books that could be reviewed.
When we have Ubuntu ARM on our selected platform, the network interfaces must be installed to provide access to the network by configuring the network settings, such as the IP, DNS, and gateway.
An Ubuntu image for most of the ARM platform will be set up for MicroSD cards with 1-4 GB size. This is not sufficient to use a large part of the ROS Kinetic packages. In order to solve this problem, we can use SD cards with more space and expand the file system to occupy all the space available with re-partitioning:
GParted
We could use the GParted utility, an open source graphical tool that is used for creating, deleting, resizing, moving, checking, and copying disk partitions and their file systems (http://gparted.org/).