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:
0:580aba13d1a1
Merge test_assortment_of_msgs branch.

Who changed what in which revision?

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