embedded-software-laboratory / embeddedRTPS

Portable implementation of the RTPS/DDS protocol for embedded devices.
Other
157 stars 39 forks source link

Does this Embedded RTPS supports with Publish and Subscribe within a MCU running different tasks #25

Open ManvithRaj opened 1 year ago

ManvithRaj commented 1 year ago

Hi @akampmann

I have following use case i would like to know whether embeddedRTPS support or not ?

Usecase1 : I have built my application by replacing Micro-ROS XRCE DDS with your embeddedRTPS. Micro-ROS XRCE DDS has below functinalties . does embeddedRTPS supports the same ?

                 1. Shared memory functionalities - this will allow Internally a MCU Publish and subscribe on same topic
                 2. Multi thread functionalities   -   this will allow multiple threads/task running with publish and subscribe within mcu 
                 3. Custom Transport Functionality  - this will allow to replace UDP/TCP transport to serial transport etc.

Please clarify on these. I could not see above options enabling config files in embeddedRTPS compared to Micro-ROS XRCE DDS.

If not please let me know if there is any way to have publisher and subscriber within a mcu to establish communication between two different tasks one as publisher and other as subscriber on same topic ?

Please mention if there is any limitations while using embeddedRTPS.

Information from you is really helpful to me. Please reply ASAP. Thank you in advance

akampmann commented 1 year ago

Hi @ManvithRaj

the main goal of embeddedRTPS is to enable microcontrollers to communicate through RTPS on top of UDP/IP without having to use an agent (in contrast to XRCE-DDS).

1. Shared memory functionalities - this will allow Internally a MCU Publish and subscribe on same topic

It is in principle possible to create multiple RTPS participants on the same MCU. The endpoints of these two participants should match (haven't tested this feature and you might run into memory limitation issues). I'm not sure how Micro-ROS interacts with embeddedRTPS and if this would be a feasible way. Communication between the two instances on the same device will then go through lwip.

2. Multi thread functionalities - this will allow multiple threads/task running with publish and subscribe within mcu

Yes, embeddedRTPS is intended to be thread safe.

3. Custom Transport Functionality - this will allow to replace UDP/TCP transport to serial transport etc.

embeddedRTPS uses UDP through lwIP. There is no seamless way to use a different transport (e.g. serial port).