您的位置:首页 > 其它

ROS学习--(六)理解ROS节点和话题

2015-07-26 22:14 639 查看
ROS系统包括多个独立的节点,每个节点通过一个发布/订阅的消息范式与其他节点联系

!如下图中,publisher和subscriber都可以是节点(node)

(http://img.blog.csdn.net/20150726220005225)

举个具体例子:

ROS starts with the ROS Master. Let’s say we have a camera on our Robot. We want to be able to see the images from the camera, both on the Robot itself, and on another laptop.

ROS开始于一个Master,一如我们的机器人上有个摄像头,然后我们想在机器人和笔记本上看到照片,笔记本就有一个Image display(IDN)节点,同时机器人上也有节点,一个是Image Processing Node(IRN), 另一个是Camera Node(CN)。



首先,所有的节点都要到Master登记(register),这样Master才能知道信息要传到哪个节点

比如,CN会说他会发布XX信息(这里是image_data),其他两节点则说要订阅这个信息。

接着他收到信息后就把信息发给其他两节点了。

也可以订阅特殊服务。

•rospy = python 客户端库

•roscpp = c++ 客户端库

接下来我们说一下ROS的与节点和话题有关的命令

1.我们运行roscore,这是我们运行所有ros程序前首先要运行的命令

$ roscore


2.打开一个新的终端

$ rosnode list


列出正在运行的节点,这里我们可以看到/rosout,这个节点用于收集和记录节点调试输出信息。

$ rosnode info [node_name]


这个命令可以返回关于一个特定节点的信息,这里node_name是/rosout

$ rosrun [package_name] [node_name]


我们运行模拟器turtlesim试试$ rosrun turtlesim turtlesim_node,这里会出现一个窗口,窗口上有只龟

$ rosrun turtlesim turtlesim_node __name:=my_turtle


改节点名,不过仅当前有效,下次打开仍然是turtlesim_node。

3.再打开另一个终端。

$ rosrun turtlesim turtle_teleop_key


turtle_teleop_key是turtlesim的另一个节点,可以通过键盘控制乌龟运动

4.为了直观看到节点与节点之间的关系,我们要安装rqt

$ sudo apt-get install ros-indigo-rqt
$ sudo apt-get install ros-indigo-rqt-common-plugins


5.再开新终端

$ rosrun rqt_graph rqt_graph


这里弹出个新窗口就可以看到node 和topic了

6.下面介绍rostopic命令

$ rostopic -h


可以看rostopic的子命令

$ rostopic echo [topic]


实时显示该话题的信息,如果你看看rqt的窗口,可以看到这个rostopic节点也在订阅话题

$ rostopic list -v


将每个节点的详细信息列出来,其他的可以通过命令rostopic list -h看。

$ rostopic type [topic]
$ rosmsg show turtlesim/Velocity


这命令列出话题的类型,第二个命令则将该话题所期望的消息类型列出来

$ rostopic pub [topic] [msg_type] [args]


这命令是把数据发布到当前正在广播的某个话题上。

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'


对比上面两条命令。先说共同的:

rostopic pub 将消息给到topic

/turtle1/cmd_vel 这是节点

geometry_msgs/Twist 消息类型

‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’参数,由rosmsg show geometry_msgs/Twist得需要线速度角速度x,y,z三个参数

下面是不同点

第一个命令有-1,使rostopic发布一条消息后马上退出(这里没去rqt上看推出了没有)

第二个命令则是-r 1,意思是以1Hz的频率发布命令,这里从rqt上可以看到发布消息的节点多了一个

$ rostopic hz /turtle1/pose


可以看到turtlesim_node发布/turtle/pose时的速度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: