The primary purpose for this repository is to organise all packages for the Micro-ROS project functionalities demonstrations. All packages contained in this repository are a part of the Micro-ROS project stack.
To run all the demonstrations, you need to set up the ROS2 environment and build all the required packages. Click here to read further about how to do this previous step.
The repository contains the below packages clusters:
The purpose of the package is to publish one of the most basic ROS2 messages and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it. For each publication, the message value increases in one unit order to see in the subscriber side the message variations.
The purpose of the package is to subscribe to one of the most basic ROS2 messages and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it.
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd ~/agent_ws/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888
You may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.
cd ~/agent_ws/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888 > /dev/null &
Run the publisher.
~/client_ws/install/int32_publisher_c/lib/int32_publisher_c/./int32_publisher_c
You may prefer to run the publisher in the background and discard all outputs to keep using the terminal for the next step.
~/client_ws/install/int32_publisher_c/lib/int32_publisher_c/./int32_publisher_c > /dev/null &
Run the subscriber.
~/client_ws/install/int32_subscriber_c/lib/int32_subscriber_c/./int32_subscriber_c
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd C:\A\install\Lib\uros_agent\
uros_agent.exe udp 8888
Run the publisher.
cd C:\C\install\Lib\int32_publisher_c\
int32_publisher_c.exe
Run the subscriber.
cd C:\C\install\Lib\int32_subscriber_c\
int32_subscriber_c.exe
The purpose of the package is to publish a simple string ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it. For each publication, the message string number increases in one unit order to see in the subscriber side the message variations.
The purpose of the package is to subscribe to a simple string ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it.
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd ~/agent_ws/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888
You may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.
cd ~/agent_ws/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888 > /dev/null &
Run the publisher.
~/client_ws/install/string_publisher_c/lib/string_publisher_c/./string_publisher_c
You may prefer to run the publisher in the background and discard all outputs in order to keep using the terminal for the next step.
~/client_ws/install/string_publisher_c/lib/string_publisher_c/./string_publisher_c > /dev/null &
Run the subscriber.
~/client_ws/install/string_subscriber_c/lib/string_subscriber_c/./string_subscriber_c
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd C:\A\install\Lib\uros_agent\
uros_agent.exe udp 8888
Run the publisher.
cd C:\C\install\Lib\string_publisher_c\
string_publisher_c.exe
Run the subscriber.
cd C:\C\install\Lib\string_subscriber_c\
string_subscriber_c.exe
One of the purposes of the package is to demonstrate how typesupport code is generated for a complex message. Also, the generation of a complex ROS2 structure message is used to demonstrate how the different layers (rcl, typesupport and rmw) handle it. The message structure contains the following types:
- All primitive data types.
- Nested message data.
- Unbonded string data.
The purpose of the package is to publish a complex ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it. For each publication, the message values increases in one unit order to see in the subscriber side the message variations.
The purpose of the package is to subscribe to a complex ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it.
Run the micro-ROS Agent
cd ~/agent_ws/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888
You may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.
cd ~/agent_ws/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888 > /dev/null &
Run the publisher.
~/client_ws/install/complex_msg_publisher_c/lib/complex_msg_publisher_c/./complex_msg_publisher_c
You may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.
~/client_ws/install/complex_msg_publisher_c/lib/complex_msg_publisher_c/./complex_msg_publisher_c > /dev/null &
Run the subscriber.
~/client_ws/install/complex_msg_subscriber_c/lib/complex_msg_subscriber_c/./complex_msg_subscriber_c
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd C:\A\install\Lib\uros_agent\
uros_agent.exe udp 8888
Run the publisher.
cd C:\C\install\Lib\complex_msg_publisher_c\
complex_msg_publisher_c.exe
Run the subscriber.
cd C:\C\install\Lib\complex_msg_subscriber_c\
complex_msg_subscriber_c.exe
This purpose of the packages is to demonstrate Micro-ROS stack can be used in a real application scenario. In this demonstration, an altitude control system is simulated. The primary purpose of this is to demonstrate how Micro-ROS communicates with ROS2 nodes.
The mission of this node is to simulate a dummy engine power actuator. It receives power increments and publishes the total power amount as a DDS topic.
The node is built using the Micro-ROS middleware packages (rmw_micro_xrcedds and rosidl_typesupport_microxrcedds).
It is meant to be running in a microcontroller processor, but for this demonstration, the node runs on the host PC. The node is connected to the DDS world through a Micro XRCE-DDS Agent.
The mission of this node is to simulate a dummy altitude sensor. It publishes the altitude variations as a DDS topic.
The node is built using the Micro-ROS middleware packages (rmw_micro_xrcedds and rosidl_typesupport_microxrcedds).
It is meant to be running in a microcontroller processor, but for this demonstration, the node runs on the host PC. The node is connected to the DDS world through a Micro XRCE-DDS Agent.
The mission of this node is to read altitude values and send to the actuator engine variations. It also publishes the status (OK, WARNING or FAILURE) as a DDS topic. The status depends on the altitude value.
The node is built using the ROS2 middleware packages (rmw_fastrtps and rosidl_typesupport_fastrtps).
It is meant to be running in on a regular PC, and it is directly connected to de DDS world.
The mission of this node is to simulate one LCD screen that prints the critical parameters. It subscribes to the altitude, power and status messages available as a DDS topic.
The node is built using the Micro-ROS middleware packages (rmw_micro_xrcedds and rosidl_typesupport_microxrcedds).
It is meant to be running in a microcontroller processor, but for this demonstration, the node runs on the host PC. The node is connected to the DDS world through a Micro XRCE-DDS Agent.
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd ~/uros_WS/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888
You may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.
cd ~/uros_WS/install/uros_agent/lib/uros_agent/
./uros_agent udp 8888 > /dev/null &
Run the altitude_sensor node.
~/client_ws/install/rad0_altitude_sensor_c/lib/rad0_altitude_sensor_c/./rad0_altitude_sensor_c
You may prefer to run the publisher in the background and discard all outputs to keep using the terminal for the next steps.
~/client_ws/install/rad0_altitude_sensor_c/lib/rad0_altitude_sensor_c/./rad0_altitude_sensor_c > /dev/null &
Run the actuator node.
~/client_ws/install/rad0_actuator_c/lib/rad0_actuator_c/./rad0_actuator_c
You may prefer to run the publisher in the background and discard all outputs to keep using the terminal for the next steps.
~/client_ws/install/rad0_actuator_c/lib/rad0_actuator_c/./rad0_actuator_c > /dev/null &
Run the display node.
~/client_ws/install/rad0_display_c/lib/rad0_display_c/./rad0_display_c
~/agent_ws/install/rad0_display_c/lib/rad0_display_c/./rad0_display_c
Run the micro-ROS Agent. For the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.
cd C:\A\install\Lib\uros_agent\
uros_agent.exe udp 8888
Run the altitude_sensor node.
cd C:\C\install\Lib\rad0_altitude_sensor_c
rad0_altitude_sensor_c.exe
Run the actuator node.
cd C:\C\install\Lib\rad0_actuator_c
rad0_actuator_c.exe
Run the display node.
cd C:\C\install\Lib\rad0_display_c\
rad0_display_c.exe
cd C:\A\install\Lib\rad0_control_cpp\
rad0_control_cpp.exe
This software is not ready for production use. It has neither been developed nor tested for a specific use case. However, the license conditions of the applicable Open Source licenses allow you to adapt the software to your needs. Before using it in a safety relevant setting, make sure that the software fulfills your requirements and adjust it according to any applicable safety standards, e.g., ISO 26262.
This repository is open-sourced under the Apache-2.0 license. See the LICENSE file for details.
For a list of other open-source components included in this repository, see the file 3rd-party-licenses.txt.
There are no known limitations.