ros2 dds

问题1: fastdds发布的类型,ros2接收不到

   原因: 在QoS相互兼容情况下,无法通信是由于idl类型没有使用兼容ros2的格式。如用

ros2 topic list -t 

查看时,会发现同一个topic有两个不同的类型,如DDS会显示:myclass::people::Name 而ros2会显示: myclass/people/Name,这就早成类型部匹配,ros2无法解析。

  解决方法:

  1.   手动更改($msg_name)PubSubTypes.cxx文件中的构造函数,更改setName(..)函数如:
    setName("myclass::msg::Name");
    //更改为:
    setName("myclass::msg::dds_::Name_");
  2.   使用fastddsgen命令加入 '-typeros2'参数,重新生成新的idl源文件:
    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

你可能感兴趣的:(笔记,ros2,dds,idl)