Repository Summary
Description | ROS 2 over email: a middleware implementation |
Checkout URI | https://github.com/christophebedard/rmw_email.git |
VCS Type | git |
VCS Version | rolling |
Last Updated | 2025-03-30 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | email ros ros2 rmw |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
0.8.0 | |
email_examples | 0.8.0 |
rmw_email_cpp | 0.8.0 |
README
rmw_email
ROS 2 over email. rmw_email contains a middleware that sends & receives strings over email and an RMW implementation that allows ROS 2 to use this middleware to exchange messages.
For an overview of the motivation and process behind this project, see this blog post: christophebedard.com/ros-2-over-email.
- Overview
- Packages
- Supported features
- Performance
- How to use
- Configuration
- Tracing
- Logging
email
examples
Overview
rmw_email_cpp
uses type support introspection to convert messages to YAML objects.
This is done for both C and C++ type supports using the dynmsg
package.
The YAML objects are then converted to strings.
Those strings are sent via email using the email
package.
The topic name is used as the email subject; the email body contains the YAML string representing the message.
Messages can therefore easily be read.
To receive messages, this process is repeated in the opposite direction.
Successive messages on the same topic generally end up in the same email thread (depending on the client).
Service responses are email replies to the corresponding email request (this is handled by email
).
email
also has an intraprocess communication mode to bypass actually sending and receiving emails.
Packages
This repository contains a few packages:
-
email
: simple publish/subscribe & service middleware using emails to exchange strings- See the API documentation.
- See the design document (rendered version).
- This package claims to be in the Quality Level 4 category, see the Quality Declaration for more details.
-
email_examples
: various examples usingemail
- See
email
examples. - This package claims to be in the Quality Level 4 category, see the Quality Declaration for more details.
- See
-
rmw_email_cpp
: ROS 2rmw
implementation usingemail
as the middleware- See supported features.
- This package claims to be in the Quality Level 4 category, see the Quality Declaration for more details.
Supported features
The following table shows the features currently supported/unsupported by rmw_email_cpp
.
ROS 2 feature | Status |
---|---|
publishers/subscriptions | :heavy_check_mark: |
services, actions | :heavy_check_mark: |
introspection using ros2 * commands |
:x: |
QoS, rmw events | :x: |
Platform support
rmw_email was primarily developed on Ubuntu. However, it should work on macOS and Windows without too much effort. See REP 2000.
Performance
We can use performance_test to compare the performance of rmw_email_cpp
to another RMW implementation.
See the perf_test.sh
and perf_plot.sh
scripts to run performance_test and generate a plot like the one above.
How to use
- Clone this repo into your ROS 2 workspace
```sh $ cd ~/ws/src/
File truncated at 100 lines see the full file
CONTRIBUTING
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
Contributors must sign-off each commit by adding a Signed-off-by: ...
line to commit messages to certify that they have the right to submit
the code they are contributing to the project according to the
Developer Certificate of Origin (DCO).