各位,目前在学习ROS2的过程中,发现了一个感觉有点超越目前理解的问题。
操作步骤如下
1.打开了gazebo的例程
ros2 launch gazebo_ros2_control_demos diff_drive.launch.py
2.查看话题
yong@yong-ubuntu:~$ ros2 topic list
/clock
/diff_drive_base_controller/cmd_vel_unstamped
/diff_drive_base_controller/odom
/diff_drive_base_controller/transition_event
/dynamic_joint_states
/joint_state_broadcaster/transition_event
/joint_states
/parameter_events
/performance_metrics
/robot_description
/rosout
/tf
/tf_static
3.订阅话题
yong@yong-ubuntu:~$ ros2 topic echo /robot_description
data: <?xml version="1.0" ?><robot name="diff_drive"><!-- Base Link --><link name="chassis"><collision><origin rpy="0 0 0" xyz="-0.151...
---
可以看到,在订阅话题后,立马收到了话题的响应,获取到了信息。
一开始我以为是话题发布者通过 get_subscription_count() 不断获取实时的订阅者数量,当发现订阅者数量发生变化时,发布一次话题(广播)。
然而,当我保持此次订阅,并重新创建另外一个订阅时,另外新创建的订阅会收到信息,这是正常的。但是原来打开的那个订阅,并没有收到新的信息。
所以,我想咨询一下,这个 /robot_description 话题是如何做到:
a.在订阅者订阅时立马发送一次信息给订阅者。
b.而且还是独立发送的。