Add build instructions to README
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
5299a83916
commit
874ac51aff
1 changed files with 33 additions and 9 deletions
42
README.md
42
README.md
|
@ -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.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue