ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

ROS2 with BeagleBone Robotics Cape

asked 2021-01-13 21:59:43 -0500

nealtanner gravatar image

I am working on a small project that (among other things) reads 4 encoders with a BeagleBone Blue (BeagleBone with the Robotics Cape built in) and am having trouble finding a working combination of OS, Robot Control Library, and ROS2. Specifically:

  • Robot Control Library primarily supports Debian (buster). Installing it on ubuntu is easy until you need to use the PRU to read the fourth encoder. I cannot find any evidence of people getting the PRU-based features to work on ubuntu. I have been working with ubuntu 18.04 because the 20.04 images for the beaglebone have not been release yet.
  • ROS2 primarily supports ubuntu and says that you have to compile from source to run on Debian. My needs from ROS2 are very simplistic (just launch and simple message exchange to the main computer) but I am having a heck of a time configuring and compiling a minimal ROS2 installation on the very resource-limited (4GB total eMMC space) beaglebone. I have been trying with both Dashing and Foxy.

Can anyone point me towards information on how to compile a minimal ROS2 system for Debian buster on a beaglebone? Has anyone done this? Am I better off compiling on the beaglebone or cross-compiling?

I realize that this is a more open-ended question than ideal, but since I have tried about 10 different paths, my question is really more about which path is likely to be most promising rather than the particular compile error I have run into on each path.

edit retag flag offensive close merge delete


Have you ever found a solution/path? If so can you point me in the right direction?

GreenSokrates gravatar image GreenSokrates  ( 2022-12-28 17:51:39 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2021-01-14 00:44:19 -0500

gvdhoorn gravatar image

updated 2021-01-14 00:45:01 -0500

I was going to suggest perhaps considering using any of the available Docker images to get going quickly, but I believe a Blue runs a 32bit Cortex A8, for which there are no images available (only arm64 is supported).

For embedded systems and ROS (1 and 2), the recommendation is typically to take at least a look at using ros/meta-ros. That's OpenEmbedded based though, so a different workflow from using regular Debian apt-get install.

For cross-compiling ROS 2 itself, you could look at ros-tooling/cross_compile, which supports armhf. IIRC, that will use Qemu for non amd64/x86 hosts.

Another approach might be to look at micro-ROS. It's typically only thought of to target microcontrollers, but if I'm not mistaken regular (POSIX) Linux targets are supported as well, and it may provide a very simple and low overhead way to get you ROS 2 comms.

No launch capabilities though.

edit flag offensive delete link more


The MachineKit guys have quite a bit of experience of using ROS on BeagleBones, and make heavy use of the PRU and other specialised hw on them. I'm not sure whether they've looked at ROS 2 already, but perhaps they have some resources on cross-compiling as well.

gvdhoorn gravatar image gvdhoorn  ( 2021-01-14 00:48:17 -0500 )edit

Question Tools



Asked: 2021-01-13 21:59:43 -0500

Seen: 1,250 times

Last updated: Jan 14 '21