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

Want to integrate the micro-ros client and micro-ros agent builds into a single host build invocation

asked 2022-04-04 00:08:48 -0500

updated 2022-04-04 00:10:04 -0500

I want to build some micro-ros enabled firmware against multiple boards (esp32, teensy, and potentially others), and multiple platforms (freertos and arduino). I will also have a package of custom messages to be shared across the micro-ros agent, the microros-clients and other ROS2 nodes. Here are the list of packages I will have:

- client_esp32_arduino_microros
- client_teensy_arduino_microros
- client_esp32_freertos_microros
- client_teensy_freertos_microros
- my_custom_messages

According to the Micro-ROS instructions, all the micro-ROS builds run across 3 a separate workspaces (microros_ws, firmware_ws and mcu_ws), with:

- One set of ros2 run scripts for creating creating, configuring, building and flashing the firmware, and
- Another set for creating and building the micro-ros agent itself.

Compared and contrasted to the simple process that PlatformIO offers for tying together different boards/frameworks/platforms, using micro-ros has been quite a steep hill to climb. Specifically, the seemingly out-of-band steps for building micro-ros firmware seem very intricate.

Some questions:

  • Is there an existing colcon target, and set of best practices, that I could use to integrate all those steps under one host workspace (colcon_ws), via a single invocation of colcon build?
  • Ditto regarding the need for explicitly cloning/copying the 'my_custom_messages' package under both the colcon_ws and the mcu_ws.
  • Are there examples of self-contained micro-ros firmware packages? The example firmware is all clumped together under a complex hierarchy of folders under the micro-ros-setup package, and doesn't show how to create each of them as independent ROS2 packages.
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2022-04-04 03:18:46 -0500

Pablogs gravatar image

updated 2022-04-04 03:18:59 -0500

You have available modules for using micro-ROS in default build systems for:

We do not have solutions for FreeRTOS + Teensy.

edit flag offensive delete link more


Thanks for the links, @Pablogs. Maybe I haven't looked deep enough into those systems, but from what I found they still require separate shell commands (e.g, via for espidf) to invoke those custom builds. I'm not familiar with CMake, so maybe that's where my confusion lies. Would there be example CMakeLists.txt files that you could link me to (or provide a copy+paste of) that I could place in each of the packages above (excluding FreeRTOS +Teensy), that would allow each of those firmware binaries to be built as part of the top-level "colcon build" invocation?

alikureishy gravatar image alikureishy  ( 2022-04-06 14:07:18 -0500 )edit

Question Tools



Asked: 2022-04-04 00:08:48 -0500

Seen: 313 times

Last updated: Apr 04 '22