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

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?

UserRevisionLine numberNew 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.