{"id":28717064,"url":"https://github.com/micro-ros/micro-ros-demos","last_synced_at":"2025-09-12T11:33:35.894Z","repository":{"id":39756085,"uuid":"156194745","full_name":"micro-ROS/micro-ROS-demos","owner":"micro-ROS","description":"Sample code using rclc and rclcpp implementations.","archived":false,"fork":false,"pushed_at":"2024-05-31T11:03:48.000Z","size":331,"stargazers_count":78,"open_issues_count":6,"forks_count":22,"subscribers_count":8,"default_branch":"jazzy","last_synced_at":"2024-05-31T12:24:34.895Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/micro-ROS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-05T09:49:38.000Z","updated_at":"2024-05-31T12:24:41.446Z","dependencies_parsed_at":"2024-05-31T12:24:40.614Z","dependency_job_id":"246b76c7-4df7-4feb-929a-225d53934aeb","html_url":"https://github.com/micro-ROS/micro-ROS-demos","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/micro-ROS/micro-ROS-demos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-ROS%2Fmicro-ROS-demos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-ROS%2Fmicro-ROS-demos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-ROS%2Fmicro-ROS-demos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-ROS%2Fmicro-ROS-demos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/micro-ROS","download_url":"https://codeload.github.com/micro-ROS/micro-ROS-demos/tar.gz/refs/heads/jazzy","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-ROS%2Fmicro-ROS-demos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259914934,"owners_count":22931333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-15T03:13:01.306Z","updated_at":"2025-06-15T03:13:20.278Z","avatar_url":"https://github.com/micro-ROS.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# micro-ROS Demos\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n## Overview\n\nThe primary purpose for this repository is to organise all packages for the [Micro-ROS project](https://microros.github.io/micro-ROS/) functionalities demonstrations.\nAll packages contained in this repository are a part of the Micro-ROS project stack.\n\n## Previous step\n\nTo run all the demonstrations, you need to set up the ROS2 environment and build all the required packages.\nClick [here](https://github.com/microROS/micro-ROS-doc) to read further about how to do this previous step.\n\n## Package clusters\n\nThe repository contains the below packages clusters:\n\n### Simple message demonstration\n\n#### Packages\n\n##### Int32_publisher\n\nThe 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.\nFor each publication, the message value increases in one unit order to see in the subscriber side the message variations.\n\n##### Int32_subscriber\n\nThe 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.\n\n#### Run demonstration (Linux)\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd ~/agent_ws/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888\n```\n\nYou may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.\n\n```bash\ncd ~/agent_ws/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888 \u003e /dev/null \u0026\n```\n\nRun the publisher.\n\n```bash\n~/client_ws/install/int32_publisher_c/lib/int32_publisher_c/./int32_publisher_c\n```\n\nYou may prefer to run the publisher in the background and discard all outputs to keep using the terminal for the next step.\n\n```bash\n ~/client_ws/install/int32_publisher_c/lib/int32_publisher_c/./int32_publisher_c \u003e /dev/null \u0026\n```\n\nRun the subscriber.\n\n```bash\n~/client_ws/install/int32_subscriber_c/lib/int32_subscriber_c/./int32_subscriber_c\n```\n\n#### Run demonstration (Windows)\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd C:\\A\\install\\Lib\\uros_agent\\\nuros_agent.exe udp 8888\n```\n\nRun the publisher.\n\n```bash\ncd C:\\C\\install\\Lib\\int32_publisher_c\\\nint32_publisher_c.exe\n```\n\nRun the subscriber.\n\n```bash\ncd C:\\C\\install\\Lib\\int32_subscriber_c\\\nint32_subscriber_c.exe\n```\n\n\n### String message demonstration\n\n#### String packages\n\n##### String_publisher\n\nThe purpose of the package is to publish a simple string ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it.\nFor each publication, the message string number increases in one unit order to see in the subscriber side the message variations.\n\n##### String_subscriber\n\nThe 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.\n\n#### Run string demonstration (Linux)\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd ~/agent_ws/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888\n```\n\nYou may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.\n\n```bash\ncd ~/agent_ws/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888 \u003e /dev/null \u0026\n```\n\nRun the publisher.\n\n```bash\n ~/client_ws/install/string_publisher_c/lib/string_publisher_c/./string_publisher_c\n```\n\nYou may prefer to run the publisher in the background and discard all outputs in order to keep using the terminal for the next step.\n\n```bash\n ~/client_ws/install/string_publisher_c/lib/string_publisher_c/./string_publisher_c \u003e /dev/null \u0026\n```\n\nRun the subscriber.\n\n```bash\n~/client_ws/install/string_subscriber_c/lib/string_subscriber_c/./string_subscriber_c\n```\n\n#### Run string demonstration (Windows)\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd C:\\A\\install\\Lib\\uros_agent\\\nuros_agent.exe udp 8888\n```\n\nRun the publisher.\n\n```bash\ncd C:\\C\\install\\Lib\\string_publisher_c\\\nstring_publisher_c.exe\n```\n\nRun the subscriber.\n\n```bash\ncd C:\\C\\install\\Lib\\string_subscriber_c\\\nstring_subscriber_c.exe\n```\n\n### Complex message demonstration\n\n#### Complex packages\n\n##### complex_msg\n\nOne of the purposes of the package is to demonstrate how typesupport code is generated for a complex message.\nAlso, the generation of a complex ROS2 structure message is used to demonstrate how the different layers (rcl, typesupport and rmw) handle it.\nThe message structure contains the following types:\n\n- All primitive data types.\n- Nested message data.\n- Unbonded string data.\n\n##### Complex_msg_publisher\n\nThe purpose of the package is to publish a complex ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it.\nFor each publication, the message values increases in one unit order to see in the subscriber side the message variations.\n\n##### Complex_msg_subscriber\n\nThe purpose of the package is to subscribe to a complex ROS2 message and demonstrate how Micro-ROS layers (rcl, typesupport and rmw) handle it.\n\n#### Run complex demonstration (Linux)\n\n\nRun the micro-ROS Agent\n\n```bash\ncd ~/agent_ws/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888\n```\n\nYou may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.\n\n```bash\ncd ~/agent_ws/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888 \u003e /dev/null \u0026\n```\n\nRun the publisher.\n\n```bash\n ~/client_ws/install/complex_msg_publisher_c/lib/complex_msg_publisher_c/./complex_msg_publisher_c\n```\n\nYou may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.\n\n```bash\n ~/client_ws/install/complex_msg_publisher_c/lib/complex_msg_publisher_c/./complex_msg_publisher_c \u003e /dev/null \u0026\n```\n\nRun the subscriber.\n\n```bash\n~/client_ws/install/complex_msg_subscriber_c/lib/complex_msg_subscriber_c/./complex_msg_subscriber_c\n```\n\n#### Run complex demonstration (Windows)\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd C:\\A\\install\\Lib\\uros_agent\\\nuros_agent.exe udp 8888\n```\n\nRun the publisher.\n\n```bash\ncd C:\\C\\install\\Lib\\complex_msg_publisher_c\\\ncomplex_msg_publisher_c.exe\n```\n\nRun the subscriber.\n\n```bash\ncd C:\\C\\install\\Lib\\complex_msg_subscriber_c\\\ncomplex_msg_subscriber_c.exe\n```\n\n\n### Real application demonstration\n\nThis purpose of the packages is to demonstrate Micro-ROS stack can be used in a real application scenario.\nIn this demonstration, an altitude control system is simulated.\nThe primary purpose of this is to demonstrate how Micro-ROS communicates with ROS2 nodes.\n\n#### Real application packages\n\n##### rad0_actuator\n\nThe mission of this node is to simulate a dummy engine power actuator.\nIt receives power increments and publishes the total power amount as a DDS topic.\n\nThe node is built using the Micro-ROS middleware packages (rmw_micro_xrcedds and rosidl_typesupport_microxrcedds).\n\nIt is meant to be running in a microcontroller processor, but for this demonstration, the node runs on the host PC.\nThe node is connected to the DDS world through a Micro XRCE-DDS Agent.\n\n##### rad0_altitude_sensor\n\nThe mission of this node is to simulate a dummy altitude sensor.\nIt publishes the altitude variations as a DDS topic.\n\nThe node is built using the Micro-ROS middleware packages (rmw_micro_xrcedds and rosidl_typesupport_microxrcedds).\n\nIt is meant to be running in a microcontroller processor, but for this demonstration, the node runs on the host PC.\nThe node is connected to the DDS world through a Micro XRCE-DDS Agent.\n\n##### rad0_control\n\nThe mission of this node is to read altitude values and send to the actuator engine variations.\nIt also publishes the status (OK, WARNING or FAILURE) as a DDS topic.\nThe status depends on the altitude value.\n\nThe node is built using the ROS2 middleware packages (rmw_fastrtps and rosidl_typesupport_fastrtps).\n\nIt is meant to be running in on a regular PC, and it is directly connected to de DDS world.\n\n##### rad0_display\n\nThe mission of this node is to simulate one LCD screen that prints the critical parameters.\nIt subscribes to the altitude, power and status messages available as a DDS topic.\n\nThe node is built using the Micro-ROS middleware packages (rmw_micro_xrcedds and rosidl_typesupport_microxrcedds).\n\nIt is meant to be running in a microcontroller processor, but for this demonstration, the node runs on the host PC.\nThe node is connected to the DDS world through a Micro XRCE-DDS Agent.\n\n#### Run real application demonstration (Linux)\n\n##### Micro-ROS nodes\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd ~/uros_WS/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888\n```\n\nYou may prefer to run the Agent in the background and discard all outputs to keep using the same terminal for the next step.\n\n```bash\ncd ~/uros_WS/install/uros_agent/lib/uros_agent/\n./uros_agent udp 8888 \u003e /dev/null \u0026\n```\n\nRun the altitude_sensor node.\n\n```bash\n~/client_ws/install/rad0_altitude_sensor_c/lib/rad0_altitude_sensor_c/./rad0_altitude_sensor_c\n```\n\nYou may prefer to run the publisher in the background and discard all outputs to keep using the terminal for the next steps.\n\n```bash\n~/client_ws/install/rad0_altitude_sensor_c/lib/rad0_altitude_sensor_c/./rad0_altitude_sensor_c \u003e /dev/null \u0026\n```\n\nRun the actuator node.\n\n```bash\n ~/client_ws/install/rad0_actuator_c/lib/rad0_actuator_c/./rad0_actuator_c\n```\n\nYou may prefer to run the publisher in the background and discard all outputs to keep using the terminal for the next steps.\n\n```bash\n ~/client_ws/install/rad0_actuator_c/lib/rad0_actuator_c/./rad0_actuator_c \u003e /dev/null \u0026\n```\n\nRun the display node.\n\n```bash\n~/client_ws/install/rad0_display_c/lib/rad0_display_c/./rad0_display_c\n```\n\n##### ROS2 nodes\n\n```bash\n~/agent_ws/install/rad0_display_c/lib/rad0_display_c/./rad0_display_c\n```\n\n#### Run real application demonstration (Windows)\n\n##### Micro-ROS nodes\n\nRun the micro-ROS Agent.\nFor the micro-ROS Agent to find the XML reference file, the execution must be done from the executable folder.\n\n```bash\ncd C:\\A\\install\\Lib\\uros_agent\\\nuros_agent.exe udp 8888\n```\n\nRun the altitude_sensor node.\n\n```bash\ncd C:\\C\\install\\Lib\\rad0_altitude_sensor_c\nrad0_altitude_sensor_c.exe\n```\n\nRun the actuator node.\n\n```bash\ncd C:\\C\\install\\Lib\\rad0_actuator_c\nrad0_actuator_c.exe\n```\n\nRun the display node.\n\n```bash\ncd C:\\C\\install\\Lib\\rad0_display_c\\\nrad0_display_c.exe\n```\n\n##### ROS2 nodes\n\n```bash\ncd C:\\A\\install\\Lib\\rad0_control_cpp\\\nrad0_control_cpp.exe\n```\n\n\n## Purpose of the Project\n\nThis software is not ready for production use. It has neither been developed nor\ntested for a specific use case. However, the license conditions of the\napplicable Open Source licenses allow you to adapt the software to your needs.\nBefore using it in a safety relevant setting, make sure that the software\nfulfills your requirements and adjust it according to any applicable safety\nstandards, e.g., ISO 26262.\n\n## License\n\nThis repository is open-sourced under the Apache-2.0 license. See the [LICENSE](LICENSE) file for details.\n\n\nFor a list of other open-source components included in this repository,\nsee the file [3rd-party-licenses.txt](3rd-party-licenses.txt).\n\n## Known Issues/Limitations\n\nThere are no known limitations.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-ros%2Fmicro-ros-demos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicro-ros%2Fmicro-ros-demos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-ros%2Fmicro-ros-demos/lists"}