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
embeddedRTPS/Readme.md@7:c80f65422d99, 2022-03-19 (annotated)
- Committer:
- smoritaemb
- Date:
- Sat Mar 19 09:23:37 2022 +0900
- Revision:
- 7:c80f65422d99
- Parent:
- 0:580aba13d1a1
Merge test_assortment_of_msgs branch.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
smoritaemb | 0:580aba13d1a1 | 1 | **NOTE:** We maintain this repository as a component of [mros2](https://github.com/mROS-base/mros2), by adding some modifications from [e372abd](https://github.com/mROS-base/embeddedRTPS/tree/e372abdb6c75059d0eece851d77ae20650522f97) of the original repository. So the base branch of this repository has been changed to `mros2`. |
smoritaemb | 0:580aba13d1a1 | 2 | |
smoritaemb | 0:580aba13d1a1 | 3 | # embeddedRTPS |
smoritaemb | 0:580aba13d1a1 | 4 | |
smoritaemb | 0:580aba13d1a1 | 5 | This repository contains source code for embeddedRTPS, a portable and open-source C++ implementation of the Real-Time Publish-Subscribe Protocol (RTPS) for embedded system. RTPS is based on the publish-subscribe mechanism and is at the core of the Data Distribution Service (DDS). DDS is used, among many other applications, in Robot Operating System 2 (ROS2) and is also part of the AUTOSAR Adaptive platform. embeddedRTPS allows to integrate Ethernet-capable microcontrollers into DDS-based systems as first-class participants. |
smoritaemb | 0:580aba13d1a1 | 6 | |
smoritaemb | 0:580aba13d1a1 | 7 | embeddedRTPS is portable, as it only consumes lightweightIP and FreeRTOS APIs, which are available for a large number of embedded systems. embeddedRTPS avoids dynamic memory allocation once endpoints are constructed possible. Please note that embeddedRTPS only implements rudimentary Quality-of-Service (QoS) policies and is far from a complete RTPS implementation. |
smoritaemb | 0:580aba13d1a1 | 8 | |
smoritaemb | 0:580aba13d1a1 | 9 | More information is provided in our ITSC'2019 publication [1], which we kindly ask you to consider citing if you find embeddedRTPS helpful for your work. |
smoritaemb | 0:580aba13d1a1 | 10 | |
smoritaemb | 0:580aba13d1a1 | 11 | ### Features |
smoritaemb | 0:580aba13d1a1 | 12 | |
smoritaemb | 0:580aba13d1a1 | 13 | **Discovery** Simple Participant Discovery Protocol (SPDP) as well as Simple Endpoint Discovery Protocol (SEDP) are implemented. |
smoritaemb | 0:580aba13d1a1 | 14 | |
smoritaemb | 0:580aba13d1a1 | 15 | **Interoperability** We have successfully tested interoperability with eProsima FastRTPS v1.8.0. |
smoritaemb | 0:580aba13d1a1 | 16 | |
smoritaemb | 0:580aba13d1a1 | 17 | **QoS Policies** Both reliable as well as best-effort endpoints are implemented. |
smoritaemb | 0:580aba13d1a1 | 18 | |
smoritaemb | 0:580aba13d1a1 | 19 | **UDP Multicast** Our implementation currently does not make use of UDP multicast communication. This can lead to sub-optimal performance. |
smoritaemb | 0:580aba13d1a1 | 20 | |
smoritaemb | 0:580aba13d1a1 | 21 | **Message Size** Message size is currently limited by lwIP buffer size and are not split up among multiple buffers |
smoritaemb | 0:580aba13d1a1 | 22 | |
smoritaemb | 0:580aba13d1a1 | 23 | ### Supported Platforms |
smoritaemb | 0:580aba13d1a1 | 24 | |
smoritaemb | 0:580aba13d1a1 | 25 | We have successfully ported embeddedRTPS on the following platforms: |
smoritaemb | 0:580aba13d1a1 | 26 | |
smoritaemb | 0:580aba13d1a1 | 27 | - Infineon Aurix |
smoritaemb | 0:580aba13d1a1 | 28 | - Xilinx UltraScale+ Cortex R5 |
smoritaemb | 0:580aba13d1a1 | 29 | - STM32F767ZI |
smoritaemb | 0:580aba13d1a1 | 30 | |
smoritaemb | 0:580aba13d1a1 | 31 | Due to license issues, we can only make source code available for the STM32. |
smoritaemb | 0:580aba13d1a1 | 32 | |
smoritaemb | 0:580aba13d1a1 | 33 | ### Examples |
smoritaemb | 0:580aba13d1a1 | 34 | |
smoritaemb | 0:580aba13d1a1 | 35 | The following repository provides code examples for running embeddedRTPS on the STM32F767ZI |
smoritaemb | 0:580aba13d1a1 | 36 | |
smoritaemb | 0:580aba13d1a1 | 37 | - [STM32F767ZI](https://github.com/embedded-software-laboratory/embeddedRTPS-STM32) |
smoritaemb | 0:580aba13d1a1 | 38 | |
smoritaemb | 0:580aba13d1a1 | 39 | ### Third Party Libraries |
smoritaemb | 0:580aba13d1a1 | 40 | |
smoritaemb | 0:580aba13d1a1 | 41 | embeddedRTPS makes use of the following third party libraries: |
smoritaemb | 0:580aba13d1a1 | 42 | - lwIP (Raw Mode) |
smoritaemb | 0:580aba13d1a1 | 43 | - FreeRTOS |
smoritaemb | 0:580aba13d1a1 | 44 | - [eProsima Micro-CDR](https://github.com/eProsima/Micro-CDR) |
smoritaemb | 0:580aba13d1a1 | 45 | |
smoritaemb | 0:580aba13d1a1 | 46 | ### Performance |
smoritaemb | 0:580aba13d1a1 | 47 | |
smoritaemb | 0:580aba13d1a1 | 48 | Round-trip-times (RTT) for different platforms and packet sizes are depicted in the tables below. |
smoritaemb | 0:580aba13d1a1 | 49 | |
smoritaemb | 0:580aba13d1a1 | 50 | **Table 1** 2x Infineon Aurix TC277 running embeddedRTPS. |
smoritaemb | 0:580aba13d1a1 | 51 | |
smoritaemb | 0:580aba13d1a1 | 52 | **Table 2** STM32F7 running embeddedRTPS connected to an Intel NUC running eProsima FastRTPS. |
smoritaemb | 0:580aba13d1a1 | 53 | |
smoritaemb | 0:580aba13d1a1 | 54 | <img src="https://raw.githubusercontent.com/embedded-software-laboratory/embeddedRTPS/master/media/performance_rtt.png" width="60%"> |
smoritaemb | 0:580aba13d1a1 | 55 | |
smoritaemb | 0:580aba13d1a1 | 56 | ### Acknowledgment |
smoritaemb | 0:580aba13d1a1 | 57 | embeddedRTPS has been developed at **[i11 - Embedded Software, RWTH Aachen University](www.embedded.rwth-aachen.de)** in the context of the **[UNICARagil](www.unicaragil.de)** project. |
smoritaemb | 0:580aba13d1a1 | 58 | |
smoritaemb | 0:580aba13d1a1 | 59 | *This research is accomplished within the project “UNICARagil” (FKZ EM2ADIS002). We acknowledge the financial support for the project by the Federal Ministry of Education and Research of Germany (BMBF).* |
smoritaemb | 0:580aba13d1a1 | 60 | |
smoritaemb | 0:580aba13d1a1 | 61 | |
smoritaemb | 0:580aba13d1a1 | 62 | ### References |
smoritaemb | 0:580aba13d1a1 | 63 | |
smoritaemb | 0:580aba13d1a1 | 64 | <details><summary>[1] A. Kampmann, A. Wüstenberg, B. Alrifaee and S. Kowalewski, "A Portable Implementation of the Real-Time Publish-Subscribe Protocol for Microcontrollers in Distributed Robotic Applications," 2019 IEEE Intelligent Transportation Systems Conference (ITSC), Auckland, New Zealand, 2019, pp. 443-448. |
smoritaemb | 0:580aba13d1a1 | 65 | doi: 10.1109/ITSC.2019.8916835</summary> |
smoritaemb | 0:580aba13d1a1 | 66 | <p> |
smoritaemb | 0:580aba13d1a1 | 67 | |
smoritaemb | 0:580aba13d1a1 | 68 | ``` |
smoritaemb | 0:580aba13d1a1 | 69 | @INPROCEEDINGS{8916835, |
smoritaemb | 0:580aba13d1a1 | 70 | author={A. {Kampmann} and A. {Wüstenberg} and B. {Alrifaee} and S. {Kowalewski}}, |
smoritaemb | 0:580aba13d1a1 | 71 | booktitle={2019 IEEE Intelligent Transportation Systems Conference (ITSC)}, |
smoritaemb | 0:580aba13d1a1 | 72 | title={A Portable Implementation of the Real-Time Publish-Subscribe Protocol for Microcontrollers in Distributed Robotic Applications}, |
smoritaemb | 0:580aba13d1a1 | 73 | year={2019}, |
smoritaemb | 0:580aba13d1a1 | 74 | volume={}, |
smoritaemb | 0:580aba13d1a1 | 75 | number={}, |
smoritaemb | 0:580aba13d1a1 | 76 | pages={443-448}, |
smoritaemb | 0:580aba13d1a1 | 77 | keywords={automobiles;intelligent transportation systems;microcontrollers;middleware;operating systems (computers);protocols;robot programming;Robot Operating System 2;microcontrollers;distributed automotive applications;distributed robotic applications;Data Distribution Service;DDS;open-source RTPS implementations;publish-subscribe protocol;AUTOSAR Adaptive platform;Protocols;Automotive engineering;Message systems;Real-time systems;Microcontrollers;Middleware;Operating systems}, |
smoritaemb | 0:580aba13d1a1 | 78 | doi={10.1109/ITSC.2019.8916835}, |
smoritaemb | 0:580aba13d1a1 | 79 | ISSN={null}, |
smoritaemb | 0:580aba13d1a1 | 80 | month={Oct},} |
smoritaemb | 0:580aba13d1a1 | 81 | ``` |
smoritaemb | 0:580aba13d1a1 | 82 | |
smoritaemb | 0:580aba13d1a1 | 83 | </p> |
smoritaemb | 0:580aba13d1a1 | 84 | </details> |