问题1: fastdds发布的类型,ros2接收不到
原因: 在QoS相互兼容情况下,无法通信是由于idl类型没有使用兼容ros2的格式。如用
ros2 topic list -t
查看时,会发现同一个topic有两个不同的类型,如DDS会显示:myclass::people::Name 而ros2会显示: myclass/people/Name,这就早成类型部匹配,ros2无法解析。
解决方法:
setName("myclass::msg::Name");
//更改为:
setName("myclass::msg::dds_::Name_");
fastddsgen -replace -typeros2 myclass.idl
参考文档:
Topic and Service name mapping to DDS
Use ros2-FastRTPS with standalone FastRTPS programs - ROS Answers: Open Source Q&A Forum