Ask Your Question

cross-compile ros_comm for ARM9 LPC3250

asked 2015-01-27 15:02:19 -0500

bluesquall gravatar image

Looking for information on how to cross-compile ROS for my embedded system, the main references I've found are eros (which is dead) and installing from source (which assumes you have a proper package manager to get the bootstrap dependencies).

Unfortunately, I don't have the luxury of a proper package manager. We build our kernel and root filesystem using LTIB, since that is the approach in the board support package provided by the manufacturer.

I would appreciate any and all tips on cross-compiling from the ground up -- I have a gcc cross-compiler, and kernel version (yes, I know that is from 2008).

What I would really love is a bullet list of the dependencies for the most basic core components. We only need ros_comm on the embedded system, at least to start.

There are a few other middleware options in the running, but we want to give ROS a shot because it looks like it can offer an integrated system with many tools. But I can't spend two weeks just getting it to run, so I'm hoping someone with recent experience can provide some advice or point me to a good reference to start with.


edit retag flag offensive close merge delete


Hi @bluesquall, I am having a hard time making ROS work on my small embedded system. been looking for alternative options to migrate my codes from ROS to another middleware / toolbox. Could you please name a few of the viable options or put me in a direction so I look into them? Thank you.

stevej_80 gravatar image stevej_80  ( 2016-04-11 13:15:53 -0500 )edit

3 Answers

Sort by ยป oldest newest most voted

answered 2015-01-27 18:19:06 -0500

ahendrix gravatar image

You may want to check meta-ros, which is a cross-compilation toolchain for ROS, similar to LTIB.

edit flag offensive delete link more


Our board support package and toolchain don't currently work outside LTIB, but I'll take a look at meta-ros. Thanks.

bluesquall gravatar image bluesquall  ( 2015-01-27 18:32:24 -0500 )edit

answered 2015-01-28 02:20:32 -0500

gvdhoorn gravatar image

updated 2015-05-03 07:06:49 -0500

I don't know your actual use-case, but for some applications installing and running a full ROS system on your embedded board might not be necessary. I don't have extensive experience with any of these, but I thought I'd mention them as alternatives to the two other answers:

  1. rosc (and should target bare-metal as well as boards with an OS (eg: Linux). More info: ROSCon13 slides.
  2. rosserial (in particular: rosserial_embeddedlinux)
  3. uROSNode: as the name implies, targeted towards microcontrollers. ROSCon13 slides.
  4. cROS (and this ROS blog news post. Some slides from IAS13 here): according to the developers: "an ANSI C library, called cROS, that acts as ROS interface". iirc, there is going to be an open-source version of this, somewhere in Q2-2015 (UPDATE: this has been released. See Similar in goals to rosc, but (if the marketing slides are to be believed), much closer to being a true and complete client library for embedded systems.

First two are targetting situations in which you don't want to run a full-blown ROS on your embedded device. rosserial does this by implementing a custom bridging protocol, which requires a bridge node running on some host device that does run a 'normal' ROS. rosc on the other hand does not and should allow the embedded device to become a first-class-citizen of a ROS node graph.

The third option mainly targets microcontrollers, but I included it as another example of a pure ANSI C implementation.

Keep in mind though that all of these have in common that they don't allow you to run a ROS master on your embedded device, they are client libraries.

Edit: added cROS info.

Edit2: updated cROS info: it has been released.

edit flag offensive delete link more


rosc looks like it could fit my needs. It is still alpha, so I hesitate to put it into a project that is moving toward production, but I will try it out and certainly keep an eye on it. Thanks for pointing me to it.

bluesquall gravatar image bluesquall  ( 2015-01-29 14:08:24 -0500 )edit

Thanks for updating on cROS -- I'll try cross-compiling that and report back. (It may not happen for several weeks -- we are at the start of a large field experiment right now.)

bluesquall gravatar image bluesquall  ( 2015-05-04 12:46:44 -0500 )edit

answered 2015-01-27 15:56:12 -0500

jbohren gravatar image

updated 2015-01-27 15:57:44 -0500

Most of my experience is on running a ROS system on networks of workstation-class x86 machines, but if the main issue is building the dependencies, then here's a lists generated by the apt-rdepends tool on the standard core ROS Hydro metapackage for Ubuntu 12.04:

ros-hydro-ros-base dependencies

This list was generated on an Ubuntu 12.04 machine via:

apt-rdepends ros-hydro-ros-base  | grep ")$" | sort | uniq

For the ROS core packages, I wouldn't worry about the kernel 2.6 constraint.

One thing that you should look into for consideration of ROS in the long-term is the ROS 2.0 roadmap, since one of their main focuses is on replacing the current implementation of the ROS TCP/UDP middleware with a DDS-based core.

I know you're not interested in running Ubuntu on your hardware, but Mark Shuttleworth (of Ubuntu) did recently reach out to the ROS core dev team about Ubuntu's work on "Ubuntu Snappy" which is a reworking of Ubuntu meant for embedded systems. I haven't experimented with this, but it might be worth looking into since they've continued to collaborate closely on the project.

edit flag offensive delete link more


That's a pretty long dependency list -- I'll have to cross-reference with what we already have on the system, since cross-compiling all of those could turn into a time sink.

And thank you for the point about DDS in ROS-2.0 -- we hadn't looked at DDS yet.

bluesquall gravatar image bluesquall  ( 2015-01-27 17:48:57 -0500 )edit

What linux distribution are you running on your boards?

jbohren gravatar image jbohren  ( 2015-01-27 18:01:50 -0500 )edit

AFAIK it is a minimal version of debian, with the caveat that we can only add packages via LTIB and building a new rootfs, or by building from source.

bluesquall gravatar image bluesquall  ( 2015-01-27 18:31:14 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2015-01-27 15:02:19 -0500

Seen: 769 times

Last updated: May 03 '15