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
|
||||
|
||||
This is an extended proof-of-concept RMW implementation for
|
||||
using [*ROS2*](https://index.ros.org/doc/ros2)
|
||||
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.
|
||||
|
||||
Whatever ROS2 C++ test/demo code I could manage to run on macOS seems to work (that covers most of
|
||||
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.
|
||||
## Getting, building and using it
|
||||
|
||||
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:
|
||||
|
||||
|
@ -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
|
||||
...)
|
||||
|
||||
* Cyclone DDS does not currently support multiple domains simultaneously, and so this RMW
|
||||
implementation ignores the domain_id parameter in create_node, instead creating all
|
||||
nodes/participants (including the special participant mentioned above) in the default domain,
|
||||
which can be controlled via CYCLONEDDS_URI.
|
||||
* Cyclone DDS does not currently support multiple domains simultaneously (waiting in a PR for the
|
||||
final polish), and so this RMW implementation ignores the domain\_id parameter in create\_node,
|
||||
instead creating all nodes/participants (including the special participant mentioned above) in the
|
||||
default domain, which can be controlled via CYCLONEDDS\_URI.
|
||||
|
||||
* Deserialization only handles native format (it doesn't do any byte swapping). This is pure
|
||||
laziness, adding it is trivial.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue