节点可以发布消息到话题,也可以订阅话题以接收消息。
1)An Example
- 照例
$ roscore
进行初始化
*每一次工作的时候只要使用一次该命令就可以,否则报错。
*该命令运行外开启新终端继续工作 - 分别用rosrun运行turtlesim包中的turtlesim_node节点和turtle_teleop_key节点,他们的作用分别为开启模拟器建立一个新的小乌龟和用键盘移动小乌龟
*每运行一个节点要开启一个新终端
*要控制小乌龟要在终端turtle_teleop_key界面而不是模拟器界面
2)话题
turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。下面让我们使用rqt_graph来显示当前运行的节点和话题。
2.1)安装rqt_graph
rqt_graph是一个能够创建一个显示当前系统运行情况的动态图形的工具。rqt_graph是rqt程序包中的一部分,所以要首先安装rqt包
$ sudo apt-get install ros-<distro>-rqt
$ sudo apt-get install ros-<distro>-rqt-common-plugins
*不过在思考第二条common plugins为什么要单独装一下,这俩不是包含关系么-。-?
2.2)使用rqt_graph
$ rosrun rqt_graph rqt_graph
得到一副框图。显示了当前节点之间的通信。鼠标移上去的时候将会他们的颜色会改变。红色有向箭头从蓝色节点指向绿色。我多建立了一个my_turtle节点(原turtlesim保留),则有两条线从teleop_turtle分别指向my_turtle和turtlesim,线上的名字为话题名。
2.3)$ rostopic echo [topic]
rostopic echo可以显示在某个话题上发布的数据。