ROS 2.0 on ARM

Hi Folks,

I’m a research engineer and I work with a number of CV researchers on various proof of concept solutions. For some of our projects we used the ROS Indigo framework and it has allowed use to realized a number concepts quickly.

I believe ROS 2.0 would be a great platform for some of our future projects and would like to start exploring ROS 2.0 and contribute back to the community where it makes sense. In particular I would like to bring up ROS 2.0 on some of our ARM based platforms. If you have any suggestion or pointers on how to get started with ROS 2.0 on ARM it would be greatly appreciated it. I look forward to working with many of you to advance ROS.

Cheers,
Jay

I did some ROS2 on ARM testing over the summer, using the Dragonboard (DB410c) and the Turtlebot 2.

Everything mostly just worked, with a couple caveats.

  1. I had to build from source, as there are no armhf/arm64 builds for ROS2.
  2. I had to use a Ubuntu 16.04 chroot environment, as the Dragonboard only supports Debian. This shouldn’t be an issue on the Raspberry Pi for example, as that can run Ubuntu 16.04 natively.
  3. Opensplice was problematic, but as Opensplice is no longer supported for ROS2 this shouldn’t be a problem.

Other than that, getting a basic ROS2 demo running was not too difficult.

Rohan

We also have CI jobs for some ARM architectures, and I think we have packaging for ARM on the near-term todo list, but I’m not sure when that will happen:

I’m actually just in the midst of getting the latest ROS2 compiling natively on the Dragonboard 410c with Debian Jessie. I’ll post updated instructions to the ROS2 wiki in the next couple of days, and that should hopefully be a good starting point.

1 Like

Hi Folks,

Thanks for the quick responses. These tips will be helpful as I start down this path. I’ll keep you posted as I make progress.

Cheers,
Jay

I’m using ROS2 on a standard (x86_64) debian stretch (currently testing). So I guess if you could update your dragonboard to debian stretch you will be able to compile ROS2. I wrote some information about installing/ compiling ROS2 on debian a while ago into the ROS2 wiki. I think they should also work on an ARM based architecture.
Only thing that won’t work at the moment without messing around in some cmake files is building the ros2 tests on Debian.

I’m running ROS2 on a Raspberry Pi 2 and 3. All I had to do was update Raspbian to Raspbian Testing (The main reason is cmake and gcc)

I switched last summer to FastRtps and it runs much better than open splice.

@firesurfer, Good point, ROS2 should work on Debian Testing/Stretch. The minimum gcc and cmake versions are more recent than Debian Jessie provides, so I just went the chroot route instead of trying Stretch.

Yeah Fast-RTPS is much better, has active development, and is willing to work with OSRF. On the other hand OpenSplice seems like abandon-ware, one of the factors that led to it being dropped.

For the Turtlebot demo I was running, I couldn’t use FreeRTPS due to a performance issue with publishing images (Low bandwith when using FastRTPS · Issue #81 · ros2/rmw_fastrtps · GitHub). I also didn’t want to get into the Connext building/licensing headache.

A small clarification, I think that @rohbotics is referring to Fast-RTPS [1] in this message and not freertps[2] that is not under active development or part of the ROS 2 Continuous Integration for the time being.

Agreed that ROS2 should work on Debian Stretch. We don’t test it actively but if anybody gives it a try, feel free to post feedback here and/or update the instructions on the ros2 wiki Debian instructions[3] if anything is missing or needs to be updated.

[1] GitHub - eProsima/Fast-DDS: The most complete DDS - Proven: Plenty of success cases.
[2] GitHub - ros2/freertps: a free, portable, minimalist, work-in-progress RTPS implementation
[3] GitHub - ros2/ros2: The Robot Operating System, is a meta operating system for robots.

1 Like

Whoops… :sweat_smile:

Yeah Fast-RTPS is what I meant. Thanks @marguedas
Edited my reply for future visitors.

I’ve crosscompiled ROS2.0 for the Raspberry Pi 2 & 3, and for the Odroid XU4, and as long you have a CMake toolchain, you should be set, just pass it to ament as a --cmake-args option (see https://github.com/esteve/ros2_java#android and https://github.com/esteve/ros2_objc#ios). I initially wrote my own toolchain for the Raspberry Pi (https://gist.github.com/esteve/a2955dc681c46ac9f8a9222adb239284), but I ended up using Polly (https://github.com/ruslo/polly), which I also use for crosscompiling ROS 2.0 for the iPhone. Polly is very well maintained and the author is very active.

@clalancette Polly does not have support for the Dragonboard out of the box, but it’d be a great addition. Ruslan (Polly’s author) is very responsive and usually merges PR very quickly, I submitted a PR for adding support for iOS 10.1 and it was merged the very next day.

3 Likes

ruslo/polly looks really cool, thanks for the pointer @esteve.

Hi,
I just ran into the same problem of wanting to crosscompile ros2. Are there any instructions on how to do this using Polly (or any other tool)

@marguedas Sry for the late answer (I just found this thread because I was looking for a solution on how to crosscompile ros2) but I actively use ros2 with debian testing and a friend of mine even uses arch linux with ros2.-