背景,之前遇到这个问题,只是解决了这个问题:ros2内结合gazebo和rviz进行yolov8检测记录_we34dfg的博客-CSDN博客
但是一直没有明白为什么?
直到看见鱼香ros里面推荐的Rviz显示不出数据了!一文搞懂Qos这个大神的解答:
两个节点的Qos的自己的好几个自选项,有一些对应设置不兼容将没法通信,
这是多莫的熟悉呀,这关键字和选项,和rviz2里的一对比
然后,运用终端打印一下发布和订阅的详细信息:
$ ros2 topic info /camera/image_raw --verbose
Type: sensor_msgs/msg/ImagePublisher count: 1
Node name: camera_controller
Node namespace: /
Topic type: sensor_msgs/msg/Image
Endpoint type: PUBLISHER
GID: cd.c7.10.01.4a.d8.10.3e.3b.c6.1d.be.00.00.3e.03.00.00.00.00.00.00.00.00
QoS profile:
Reliability: BEST_EFFORT
Durability: VOLATILE
Lifespan: 9223372036854775807 nanoseconds
Deadline: 9223372036854775807 nanoseconds
Liveliness: AUTOMATIC
Liveliness lease duration: 9223372036854775807 nanosecondsSubscription count: 1
Node name: rviz
Node namespace: /
Topic type: sensor_msgs/msg/Image
Endpoint type: SUBSCRIPTION
GID: 4a.ef.10.01.10.0a.f3.a3.74.f5.f4.25.00.00.2a.04.00.00.00.00.00.00.00.00
QoS profile:
Reliability: BEST_EFFORT
Durability: VOLATILE
Lifespan: 9223372036854775807 nanoseconds
Deadline: 9223372036854775807 nanoseconds
Liveliness: AUTOMATIC
Liveliness lease duration: 9223372036854775807 nanoseconds
而且,;大神文章里还阐明了---
-
Reliability = BEST_EFFORT
. 这是在传感器节点中的标准设置方式。因为我们感兴趣的是获得大量的数据,如果丢失一两个信息,其实并不重要。 -
Durability = Volatile
. 这也是传感器节点的标准方式,特别是具有高数据量的传感器。我们并不需要为晚加入的节点保存旧的信息。因为旧信息对它根本没有意义了。
----------------------------所以之前就是纯试,试对的。----------------------------