ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Python binding to Connext vs FRTPS

I know that Python layer isn’t complete, but would like to understand if I can bind python to rmw_connext now and if so, how? I saw a utility a wrapper for python to dds, but not sure if this is correct step to take.


You could use pyDDS to “talk” with any DDS compliant system, including ROS 2, but you would be missing a lot of functionality provided above and beyond the DDS API, which will be provided by our Python bindings (like namespaces, parameters, timers, actions, etc).

If you are asking if the ROS 2 Python client library can use rmw_connext, then the answer is yes, it can. It does so via the C client library.

One detail to point out though, is that ROS2 doesn’t implement C services with connext yet. As a result the Python bindings for services will not work for Connext while they work for FastRTPS.
Everything else should work the the same way with both implementations within the limits of what the current Python layer supports.

Hi William, Geoffrey and Mikael
Thanks for your replies and yes, I was asking if Python can bind with rmw_connext implementation layer. Currently, I have Python to FRPTS working (default), but would like to use Connext. The package.xml only has ament_python as an element for configuration. So is it supported or as Mikael stated not implemented yet? Both _rclpy_implementation_rmw_agnostic.c and _rclpy.c are the sources for rclpy.

@vdiluoffo are you using Beta1 or the current master ?

If using Beta 1, you can define the rmw_implementation to use with rclpy by defining the environment variable RCLPY_IMPLEMENTATION:
export RCLPY_IMPLEMENTATION=rmw_connext_cpp
If using master, there is a single env variable used for both rlcpp and rclpy: RMW_IMPLEMENTATION:
export RMW_IMPLEMENTATION=rmw_connext_cpp

Hope this is what you’re looking for

to add to what the others have said, in order to use the rmw_connext_cpp implementation, you will have to ensure that that package itself has been built. the binaries only provide support for rmw_fastrtps_cpp, but you can get Connext support if you are building from source.

This page gives some more information about switching RMW implementations:

I using Beta 1 release

Sorry mistyped that was supposed to be I’m using Beta 1 release and thanks for the link. The following worked RCLPY_IMPLEMENTATION=rmw_connext_cpp talker_py