
* Validation in Deserializer Added validation in CDR deserialization: max buffer length is checked when deserializing fields and strings are checked for null-terminator (except for wstrings, which are serialized without null-terminator). Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com> * Catch exceptions in serdata functions In serdata functions rmw_print, rmw_to_sample and rmw_from_sample catch exceptions so that correct return code is given when functions are called from ddsi. Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com> * Improve deserialisation validation Refactored the deserialisation validation functions so that sequence length is checked more properly and protection against overflows. Renamed source files for exceptions so that it conforms to ros2 / google c++ style guide. Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
36 lines
1.7 KiB
Markdown
Executable file
36 lines
1.7 KiB
Markdown
Executable file
# A ROS2 RMW implementation for Eclipse Cyclone DDS
|
|
|
|
With the code in this repository, it is possible to use [*ROS2*](https://index.ros.org/doc/ros2)
|
|
with [*Eclipse Cyclone DDS*](https://github.com/eclipse-cyclonedds/cyclonedds) as the underlying DDS
|
|
implementation.
|
|
|
|
## Getting, building and using it
|
|
|
|
All it takes to get Cyclone DDS support into ROS2 is to clone this repository into the ROS2 workspace
|
|
source directory, and then run colcon build in the usual manner:
|
|
|
|
cd ros2_ws/src
|
|
git clone https://github.com/atolab/rmw_cyclonedds
|
|
git clone https://github.com/eclipse-cyclonedds/cyclonedds
|
|
cd ..
|
|
rosdep install --from src -i
|
|
colcon build
|
|
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
|
|
|
This seems to work fine on Linux with a binary ROS2 installation as well as when building ROS2 from
|
|
source. On macOS it has only been tested in a source build on a machine in an "unsupported"
|
|
configuration (macOS 10.14 with SIP enabled, instead of 10.12 with SIP disabled), and apart from a
|
|
few details that are caused by the machine configuration, that works fine, too. There is no reason
|
|
why it wouldn't work the same on Windows, but I haven't tried.
|
|
|
|
If you want to use a pre-existing installation of Cyclone DDS, you don't need to clone it, but you
|
|
may have to tell CMake where to look for it using the `CycloneDDS_DIR` variable. That also appears
|
|
to be the case if there are other packages in the ROS2 workspace that you would like to use Cyclone
|
|
DDS directly instead of via the ROS2 abstraction.
|
|
|
|
## Known limitations
|
|
|
|
There are a number of known limitations:
|
|
|
|
* Cyclone DDS does not yet implement DDS Security. Consequently, there is no support for security
|
|
in this RMW implementation either.
|