-
Notifications
You must be signed in to change notification settings - Fork 874
Description
Bug report
Required Info:
- Operating System:
- Ubuntu 18.04
- Installation type:
- source
- Version or commit hash:
- Latest ros2.repos
- DDS implementation:
- Fast-RTPS and RTI Connext
- Client library (if applicable):
- N/A
Steps to reproduce issue
Not the most succinct example, but demonstrates the roadblock for the forthcoming action graph API:
-
Check out new action graph API rcl (branch: action_graph).
mkdir -p action_graph_ws/src
cd action_graph_ws
git clone https://github.com/ros2/rcl -b action_graph src/rcl -
Build (overlay on existing ros2 workspace)
. ~/ros2_ws/install/setup.bash colcon build -
Run the
rcl_actiongraph test with Fast-RTPS, Connext, and Opensplice. install/local_setup.bash build/rcl_action/test_graph__rmw_fastrtps_cpp RMW_IMPLEMENTATION=rmw_connext_cpp build/rcl_action/test_graph__rmw_connext_cpp RMW_IMPLEMENTATION=rmw_opensplice_cpp build/rcl_action/test_graph__rmw_opensplice_cpp
Actual behavior
The Fast-RTPS and Connext tests pass, but the OpenSplice test fails due to unexpected message types, e.g.
Expected equality of these values:
nat.types[0].data[0]
Which is: "test_msgs::action::dds_::Fibonacci_"
"test_msgs/Fibonacci"
This occurs because the type demangling in the rmw layer expects to find the msg namespace, but finds an action namespace instead:
Expected behavior
It turns out that OpenSplice is exhibiting the correct behavior, since the action message types are defined in the action namespace.
The tests are incorrectly passing for Fast-RTPS and Connext as they report that the action types are in the msg namespace (which they are not).
Additional information
Looking closer at the rmw_fastrtps and rmw_connext, we see that they hard-code registered topics and services with the namespace msg and srv respectively:
Although OpenSplice has a similar implementation:
It is not immediately clear why it exhibits the correct behavior; more investigation is required.