ROS in Ångström

ROS wiki already has installation instructions for Ångström so hopefully now more users will be able to benefit themselves from the Beagle-ROS project :).

A Pre-release has been pushed to the git repository. Feel free to test it and give feedback about it.

Regarding documentation I believe that the README and the FAQ cover pretty much everything needed but let me know if i missed something and i’ll be pleased to work on it.




Documentation has already started. The ROS packages for the Beaglebone created have been documented:

A FAQ has been created and a good place to start is the beagle-ros/README file:

BEAGLE-ROS project


Integration of the Robot Operative System (ROS) and the BeagleBone through the meta-ros project, a layer for OpenEmbedded Linux.

This project is part of the Google Summer of Code (GSOC) 2013. The aim is to work in the integration of the Robot Operative System (ROS) and the BeagleBone. Both ROS and the BeagleBone are great tools and increasingly being used in robotics. Having both of them working together in a easy way would be a great asset.

A lot of users show their interest for ARM ROS integration. Some made a couple of tutorials about how to install ROS on Ubuntu on the BeagleBoard however this documentation is getting a bit old fashioned and probably not the right way. There’s also some code to use lightweight versions of ROS but again, roboticists might not be looking for a light-ROS device but a fully functional one.

It’s highly recommended to have the last version of Angstrom.

Description of the files:

  • LICENSE: License of the code.
  • This document.
  • scripts: Scripts to automate processes.
  • docs: Documentation.
  • lib: Libraries used.
  • recipes: OpenEmbedded recipes. These recipes should be used with the meta-ros code.
  • conf: OpenEmbedded configuration directory. This directory is added so that the beagle-ros project can be directly added as a layer in Angstrom/OpenEmbedded systems.


Getting roscore running

  • Get an Angstrom distribution following
  • Put the MLO, u-boot and FS in the SD card as explained in
  • Update the Angstrom feed through opkg update.
  • Install git using opkg install git.
  • Get the beagle-ros code: git clone git://
  • Install all the packages for ROS in Angstrom (30 minutes):
    cd beagle-ros/scripts
  • source /usr/setup.bash. Updates in the ROS recipes doesn’t install scripts in the /usr/ directory anymore. To configure the enviroment properly check this bashrc file.
  • run roscore.

First steps

Getting started with Angstrom (or OpenEmbedded) and bitbake might be a bit tough at the beggining but it gets better and after a while you will love it, promised ;). First, take a look at the FAQ.

Beagle-ROS makes use of the meta-ros project, an OpenEmbedded layer that provides ROS to embedded devices. In order to get comfortable with meta-ros the diving-meta-ros repo aims to give you some aid with the first steps (take into account that this tutorial assumes that you are already comfortable with ROS. If not take a look at their tutorials).

Installing the recipes

The easiest way to install the bitbake recipes provided is to git clone the beagle-ros code directly into the Angstromsources/ directory and add the beagle-ros as a layer:

  • Edit conf/bblayers.conf
  • add ${TOPDIR}/sources/beagle-ros \ to the BASELAYERS variable

It’s also possible to add the recipes inside of the meta-ros code. There’re instructions in of how to put these recipes in the meta-ros file structure. (Here you can see the recipes available).

Cross-compiling the recipes

From the TOPDIR of Angstrom run bitbake <recipe-name>. For example: bitbake beginner-tutorials

Please provide feedback.


GP2Y0D810Z0F finally tested

I previously introducted the changes into the bb_sharp_ir ROS package however due to my bad soldering capabilities they remained untested. I just received today one of the GP2Y0D810Z0F soldered and gave it a try:

GP2Y0D810Z0F worked so the GP2Y0D805Z0F will probably work as well. This means that the following sensors have been beagle-rosified:

  • GP2Y0A21 Distance Sensor (10-80cm) [scripts/]
  • GP2Y0D810Z0F Digital Distance Sensor (10cm) [scripts/]
  • GP2Y0D805Z0F Digital Distance Sensor (5cm) [scripts/]

Recipes status

Just spent some time updating the recipes README to illustrate the current situation. There’s still some work to be done with the ros_control packages but it looks promising:

Recipe Status (cross-compilation) Test (BeagleBone)
beginner-tutorials Ok Ok
ros-tutorials Turtlesim doesn’t cross-compile. Ok
common-tutorials actionlib-tutorials and turtlesim-tutorials doesn’t cross-compile. Ok
linux-mpu9150 Ok Ok
bb-mpu9150 Ok Ok
bb-dc-motors Ok Ok
bb-sharp-ir Ok GP2Y0D810Z0F and GP2Y0D805Z0F remain untested.
bb-altimeter Ok Code seems to work but there’re some issues with the sensor data
cmake-modules Ok  
control-msgs Ok  
control-toolbox Ok  
realtime-tools Ok  
robot-model WIP  
rosconsole-bridge Ok  
ros-control Ok  
ros-controllers WIP  
tinyxml Ok  
urdfdom problems when inherit cmake.  
urdfdom-headers Ok  
ros-mpu9150 Ok Ok. Deprecated
ros-bb-dc-motors Ok Ok. Deprecated

WIP: Work In Progress
Packages out of the scope of the GSOC.

Keep in mind that this information is refers to the recipes that have been created at the Beagle-ROS project however the meta-ros guys have much more ;).


More on IR sensors: GP2Y0D810Z0F and GP2Y0D805Z0F

bb_sharp_ir ROS package has been updated to incorporate two new scripts that launch ROS nodes for these two new IR sensors: GP2Y0D810Z0F and GP2Y0D805Z0F.

These two sensors detect whether and object is within 10 and 5 centimeters respectively. Their output is digital (oposed to the analog one in the previous IR sensor): 1 in case the object is not detected and 0 in case the object is within the range. The output is read using the previously mentioned Adafruit’s BeagleBone IO Python Library.

I’m afraid my soldering abilities are not as my coding ones so unfortunately, I have not been able to test these sensors because (i guess) a sensor bad soldered (it’s really tiny!).

20130818_183718 20130818_183711 20130818_183707

Nevertheless, i’ll order a soldered one and give it a try.


Altimeter ROS package

This ROS package (and its recipe)  publishes the altimeter MPL3115A2 values into a topic. The package makes use of the Linux i2c-tools so you should install them before running the package.

The python script checks if Linux i2c-tools have been installed and in that case it runs a loop that gathers and publishes altitute samples. The sensor can also get samples of pressure and/or temperature. Take a look at the datasheet for more details.

There’s also more information about the sensor at the Data Manipulation and Basic Settings of the MPL3115A2 Command Line Interface Driver Code and Sensor I2C Setup and FAQ. The equations used for the altimeter are further explained at Pressure Altimetry using the MPL3115A2.

In order to test the package with the Bone, this breakout board has been used.

Although some people have found some issues with it, the communication seems fine however the values that the sensor output are about 100 meters below what i was expecting.