Porting mros2 as an Mbed library.
Dependents: mbed-os-example-mros2 example-mbed-mros2-sub-pose example-mbed-mros2-pub-twist example-mbed-mros2-mturtle-teleop
README.md@7:c80f65422d99, 2022-03-19 (annotated)
- Committer:
- smoritaemb
- Date:
- Sat Mar 19 09:23:37 2022 +0900
- Revision:
- 7:c80f65422d99
- Parent:
- 2:159877d749c2
Merge test_assortment_of_msgs branch.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
smoritaemb | 0:580aba13d1a1 | 1 | # mros2 |
smoritaemb | 0:580aba13d1a1 | 2 | |
smoritaemb | 0:580aba13d1a1 | 3 | `mros2` (formally mROS 2) realizes an agent-less and lightweight runtime environment compatible with ROS 2 for embedded devices. |
smoritaemb | 0:580aba13d1a1 | 4 | It consists of basic APIs for pub/sub communication, RTPS protocol, UDP/IP stack, and real-time kernel. |
smoritaemb | 0:580aba13d1a1 | 5 | Embedded nodes can now communicate directly with native ROS 2 nodes via topic! |
smoritaemb | 0:580aba13d1a1 | 6 | |
smoritaemb | 0:580aba13d1a1 | 7 | This repository maintains the communication layer of mROS 2, that mainly offers pub/sub APIs compatible with [rclcpp](https://docs.ros2.org/dashing/api/rclcpp/index.html) for embedded devices. |
smoritaemb | 0:580aba13d1a1 | 8 | [ROS 2](https://docs.ros.org/en/dashing/) is a de-fact platform for the robot system development, and provides pub/sub communication infrastructure with the DDS/RTPS protocol. |
smoritaemb | 0:580aba13d1a1 | 9 | |
smoritaemb | 0:580aba13d1a1 | 10 | ## Features |
smoritaemb | 0:580aba13d1a1 | 11 | |
smoritaemb | 0:580aba13d1a1 | 12 | - **Agent-less**: a node on mROS 2 autonomously discovers communication nodes on the host with the feature of [embeddedRTPS](https://github.com/mROS-base/embeddedRTPS). It means no agent/bridge is required for pub/sub communication from the embedded devices. |
smoritaemb | 0:580aba13d1a1 | 13 | - **Lightweight**: mROS 2 APIs are implemented by C++ to be operated on the embedded devices. All software stacks are also implemented only in C/C++. |
smoritaemb | 0:580aba13d1a1 | 14 | - **Real-time**: mROS 2 employs the real-time kernel (e.g., [TOPPERS kernel](https://www.toppers.jp/en/project.html)) as the runtime platform in order to enhance the real-time capability. |
smoritaemb | 0:580aba13d1a1 | 15 | |
smoritaemb | 1:9bbb45710820 | 16 | ## Functionalities and limitations |
smoritaemb | 1:9bbb45710820 | 17 | |
smoritaemb | 1:9bbb45710820 | 18 | Here are functionalities that mROS 2 offers for you, and current limitations (a.k.a call for your contibutions!). |
smoritaemb | 1:9bbb45710820 | 19 | |
smoritaemb | 1:9bbb45710820 | 20 | - Pub/Sub communication via Topic is supported |
smoritaemb | 1:9bbb45710820 | 21 | - [Built-in-types](https://docs.ros.org/en/foxy/Concepts/About-ROS-Interfaces.html#field-types) except for `wstring` (UTF-16) |
smoritaemb | 1:9bbb45710820 | 22 | - Please check [mros2-asp3-f767zi#exapmle-applications](https://github.com/mROS-base/mros2-asp3-f767zi#example-applications) for more details. |
smoritaemb | 1:9bbb45710820 | 23 | - `array` types are not supported |
smoritaemb | 1:9bbb45710820 | 24 | - Custom message is not supported (but ongoing work) |
smoritaemb | 1:9bbb45710820 | 25 | - Service, Actions, and Parameters are not supported |
smoritaemb | 1:9bbb45710820 | 26 | - Please let us know if you want to use them as soon as possible. We can consider of raising the priority of these supports. |
smoritaemb | 1:9bbb45710820 | 27 | |
smoritaemb | 0:580aba13d1a1 | 28 | ## Supported platform |
smoritaemb | 0:580aba13d1a1 | 29 | |
smoritaemb | 0:580aba13d1a1 | 30 | Since this repository itself only maintains the communication layer of mROS 2, we also publish the implementation on the embedded board using this layer and the embedded kernel. |
smoritaemb | 0:580aba13d1a1 | 31 | Please see each repository to learn how to use it. |
smoritaemb | 0:580aba13d1a1 | 32 | |
smoritaemb | 0:580aba13d1a1 | 33 | |
smoritaemb | 1:9bbb45710820 | 34 | | name | kernel | board | |
smoritaemb | 0:580aba13d1a1 | 35 | |:---|:---|:---| |
smoritaemb | 1:9bbb45710820 | 36 | | [mros2-asp3-f767zi](https://github.com/mROS-base/mros2-asp3-f767zi) | [TOPPERS/ASP3](https://www.toppers.jp/en/project.html) | [STM32 NUCLEO-F767ZI](https://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | |
smoritaemb | 1:9bbb45710820 | 37 | | [mros2-mbed](https://github.com/mROS-base/mros2-mbed) | [Mbed OS 6](https://github.com/ARMmbed/mbed-os) | Mbed enabled boards having an Ethernet port (See [detail](https://github.com/mROS-base/mros2-mbed#supported-environment)) | |
smoritaemb | 0:580aba13d1a1 | 38 | |
smoritaemb | 0:580aba13d1a1 | 39 | Please let us know if you have a request for a support of board/kernel, or if you could implement this layer on another platform. |
smoritaemb | 0:580aba13d1a1 | 40 | |
smoritaemb | 0:580aba13d1a1 | 41 | ## License |
smoritaemb | 0:580aba13d1a1 | 42 | |
smoritaemb | 0:580aba13d1a1 | 43 | The source code of this repository itself is published under [Apache License 2.0](https://github.com/mROS-base/mros2/blob/main/LICENSE). |
smoritaemb | 2:159877d749c2 | 44 | Please note that this repository contains [embeddedRTPS and its third party libraries](https://github.com/mROS-base/embeddedRTPS#third-party-libraries) as the submodule, and also check their Licenses. |