Want to integrate the micro-ros client and micro-ros agent builds into a single host build invocation
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 (microrosws, firmwarews 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 ofcolcon build
? - Ditto regarding the need for explicitly cloning/copying the 'mycustommessages' package under both the colconws and the mcuws.
- 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.
Asked by alikureishy on 2022-04-04 00:08:48 UTC
Answers
You have available modules for using micro-ROS in default build systems for:
- Arduino for ESP32 and Teensy
- ESP32 IDF w/ FreeRTOS
We do not have solutions for FreeRTOS + Teensy.
Asked by Pablogs on 2022-04-04 03:18:46 UTC
Comments
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 idf.py 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?
Asked by alikureishy on 2022-04-06 14:07:18 UTC
Comments