microROS without ROS2 agent?

In the context of a project with an industrial partner we’d like to use microROS. One thing that is not so clear for us is whether it is imperative to use a ROS2 agent running on a “normal” ROS2 system. While a more powerful board on which a standard ROS2 could run is available in many configurations, our partner might have some in which only very constrained devices are used, i.e. all of them would need to run microROS and they need to communicate directly with each other.

Is that currently possible, will be possible in upcoming releases or can be done with a workaround?

Best regards

Ansgar

4 Likes

Hi @ansgarradermacher

There is a P2P functionality not requiring the full agent. Tomorrow we will post a more elaborate answer.

1 Like

Hi @ansgarradermacher,

As @Jaime_Martin_Losa point out, there is a P2P Agent configuration which could fit your requirements.
Under this configuration each Agent acts as a broker for the Clients, that is, it is in charge of manage the sample Topic published/subscribed by Clients. At the same time Agents are able to find to each other and create a network between them. The limitation is that in this configuration you do not have ROS 2 (DDS) access. You can find more information in Micro XRCE-DDS docs..

To try it, you just need to compiler Micro XRCE-DDS Agent with the flag -DUAGENT_FAST_PROFILE=OFF, and your micro-ROS application with -DRMW_UXRCE_CREATION_MODE=refs.

Update: we are working to integrate it in the micro-ros-build system.

1 Like

Hi @Jaime_Martin_Losa & @julibert !

In this solution, using the Agent as CedMiddleware, I understand that we still need a Linux board, right ?
The Clients communicate between them but the Agent/broker is still there from what I understand.
Is there a configuration to completly remove Linux boards ?

Hi @bonny-4,

Even though we haven’t not tested it on NuttX yet, Agent with CedMiddleware has any other platform dependencies than POSIX for communication, so in theory, it should run on NuttX with an appropriate C++11 library such as libcxx. It is on the roadmap of micro-ROS to include this little Agent into the micro-ros-build system for different RTOS, but I cannot give you an exact date.

1 Like

Hi @julibert ,

We would also be interested using micro-ros & xrce-dds on resource constraint target (STM32 - no Linux). Before we start, and following you’re previous comments, is there any updates regarding the micro-ros-build integration and

In the positive, may you share some useful links we might rely on ? Also, do you have a idea of the memory footprint (ARM Cortex-M4) added by P2P Agents solution?

Best regards,
fofolevrai

*** UPDATE ***
Looking at the micro_ros_agent --help, do we only have to launch the agent with the ced option on the POSIX target ? I.E : ros2 run micro_ros_agent micro_ros_agent --middleware ced