Erle-brain, an open hardware Linux autopilot

Following up from BeaglePilot which meant to port APM to Linux both in the hardware and software side. I am happy today to announce that after several months of improvements, flight tests and pre-series with manufacturers we are launching a commercial Linux hardware autopilot based on this work: Erle-brain.

Erle-brain is sold at 269 € and puts together a BeagleBone Black (rev. C) and the PixHawk Fire Cape in a single package that weights about 75 grams and includes 25+ sensors. The hardware designs are open to anyone that wishes to improve them.


The autopilot has a 4 GB eMMC flash memory that comes pre-flashed and provides:

  • Linux 3.8 kernel compiled with the PREEMPT option (best results we measured)
  • Debian Wheezy file system
  • ROS Hydromedusa
  • mavros ROS package
  • APM running natively in Linux (and linked with ROS through mavros)
  • preconfigured daemons for launching everything automatically, WiFi dongles support



BeaglePilot project

After last summer’s work at BeagleROS, this summer I will be working in the BeaglePilot project. In a nutshell:

BeaglePilot project aims to create the first Linux-based autopilot for flying robots using the BeagleBone and the BeagleBone Black as the “hardware blueprint”. For this purpose the project will focus on integrating ArduPilot (most popular autopilot) in the BeagleBone (Black).

BeaglePilot will be constructing on the work performed here so if you liked  BeagleROS I would recommend you to take a look at it ;).


Where to install Angstrom

As answered in the FAQ, Angstrom should NOT be installed in the BeagleBone Black but in a machine using a Linux distribution (Ubuntu has been used for the project). The cross-compiling process should be done outside the BeagleBone.

Keep in mind new users.


Here’s the final video of Beagle-ROS:

I’m currently working on the recipes to merge some of them with the meta-ros repository so stay tuned to that repo if you’re interested. For now i’ll update the beagle-ros code but eventually I’ll move into the meta-ros code. I’ll keep contributing with code and recipes through this layer (off-GSOC).

Furthermore, i’d like to thank BeagleBoard for letting me participate in this summer session. Really glad.

Special thanks to Koen Kooi.

Recipes update

News regarding the recipes created through the Beagle-ROS project:

Recipe Status (cross-compilation) Test (BeagleBone)
beginner-tutorials Ok Ok
ros-tutorials Turtlesim doesn’t cross-compile. Seems like findQT4 cmake macro is broken Ok*
common-tutorials turtle-actionlib doesn’t cross-compile (turtlesim). Ok*
linux-mpu9150 Ok Ok
bb-mpu9150 Ok Ok
bb-dc-motors Ok Ok
bb-sharp-ir Ok Ok
bb-altimeter Ok Code seems to work but there’re some issues with the sensor data
ros-mpu9150 Ok Ok. Deprecated
ros-bb-dc-motors Ok Ok. Deprecated
WIP: Work In Progress
*Tested what compiles

Also some further work which is not in the scope of the GSOC:

Recipe Status (cross-compilation) Test (BeagleBone)
cmake-modules Ok
control-msgs Ok
control-toolbox Ok
realtime-tools Ok
robot-model collada-urdf and kdl-parser still with issues.
rosconsole-bridge Ok
ros-control Ok
ros-controllers Ok
tinyxml Ok
urdfdom Ok
urdfdom-headers Ok
assimp Ok
orocos-kdl Ok
python-orocos-kdl WIP
libqhull Ok
collada-dom Ok
eigen-stl-containers Ok
geometric-shapes Ok
libglu Ok
octomap Ok
(bold): Packages out of the scope of the GSOC

Most of the recipes are being merget into the meta-ros layer so eventually they’ll all be available from the usual Angstrom sources.


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/]