Add build instructions to README

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2019-08-13 18:13:59 +02:00 committed by eboasson
parent 5299a83916
commit 874ac51aff

View file

@ -1,13 +1,37 @@
# A ROS2 RMW implementation for Eclipse Cyclone DDS # A ROS2 RMW implementation for Eclipse Cyclone DDS
This is an extended proof-of-concept RMW implementation for With the code in this repository, it is possible to use [*ROS2*](https://index.ros.org/doc/ros2)
using [*ROS2*](https://index.ros.org/doc/ros2)
with [*Eclipse Cyclone DDS*](https://github.com/eclipse-cyclonedds/cyclonedds) as the underlying DDS with [*Eclipse Cyclone DDS*](https://github.com/eclipse-cyclonedds/cyclonedds) as the underlying DDS
implementation. implementation.
Whatever ROS2 C++ test/demo code I could manage to run on macOS seems to work (that covers most of ## Getting, building and using it
the core features), and the ROS2 CLI (``ros2``) on Linux gives a reasonable indication that most of
introspection functions also work. So basically, pretty much everything works. All it takes to get Cyclone DDS support into ROS2 is to clone this repository and the Cyclone DDS
one in 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 ..
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo
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.
That said, Cyclone DDS has some prerequisites because it currently relies on Java and Maven to build
its IDL preprocessor, and so it is probably advisable to check its README for details. On an Ubuntu
18.04 system, ``sudo apt-get install maven default-jdk`` will likely address that.
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: There are a number of known limitations:
@ -20,10 +44,10 @@ There are a number of known limitations:
allowing it, even if it is easy to support it today. (E.g., a remote procedure call interface allowing it, even if it is easy to support it today. (E.g., a remote procedure call interface
...) ...)
* Cyclone DDS does not currently support multiple domains simultaneously, and so this RMW * Cyclone DDS does not currently support multiple domains simultaneously (waiting in a PR for the
implementation ignores the domain_id parameter in create_node, instead creating all final polish), and so this RMW implementation ignores the domain\_id parameter in create\_node,
nodes/participants (including the special participant mentioned above) in the default domain, instead creating all nodes/participants (including the special participant mentioned above) in the
which can be controlled via CYCLONEDDS_URI. default domain, which can be controlled via CYCLONEDDS\_URI.
* Deserialization only handles native format (it doesn't do any byte swapping). This is pure * Deserialization only handles native format (it doesn't do any byte swapping). This is pure
laziness, adding it is trivial. laziness, adding it is trivial.