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程序前首先要运行的命令
2.打开一个新的终端
列出正在运行的节点,这里我们可以看到/rosout,这个节点用于收集和记录节点调试输出信息。
这个命令可以返回关于一个特定节点的信息,这里node_name是/rosout
我们运行模拟器turtlesim试试$ rosrun turtlesim turtlesim_node,这里会出现一个窗口,窗口上有只龟
改节点名,不过仅当前有效,下次打开仍然是turtlesim_node。
3.再打开另一个终端。
turtle_teleop_key是turtlesim的另一个节点,可以通过键盘控制乌龟运动
4.为了直观看到节点与节点之间的关系,我们要安装rqt
5.再开新终端
这里弹出个新窗口就可以看到node 和topic了
6.下面介绍rostopic命令
可以看rostopic的子命令
实时显示该话题的信息,如果你看看rqt的窗口,可以看到这个rostopic节点也在订阅话题
将每个节点的详细信息列出来,其他的可以通过命令rostopic list -h看。
这命令列出话题的类型,第二个命令则将该话题所期望的消息类型列出来
这命令是把数据发布到当前正在广播的某个话题上。
对比上面两条命令。先说共同的:
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上可以看到发布消息的节点多了一个
可以看到turtlesim_node发布/turtle/pose时的速度
!如下图中,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时的速度
相关文章推荐
- install mysql using binary and configure manu
- 【linux高级程序设计】(第八章)进程管理与程序开发 2
- 设计模式 (11) - 适配器模式
- leetcode 49: Anagrams
- 2.2-单用户模式
- (win32)GDI基础
- hessian 入门
- Java反射机制详解
- 一个人的旅行
- POJ 2115 C Looooops(扩展欧几里得)
- codeforces 391E2 (【Codeforces Rockethon 2014】E2)
- iOS中的基本 UI 控件的使用
- 看opengl写代码(10) 使用属性数组
- 2.1-运行级别
- Spark运行模式(一)-----Spark独立模式
- hdu 2317 Nasty Hacks
- DOM性能小记
- UIButton之ImageEdge&TitleEdge笔记
- 设计模式 (10) - 代理模式
- QA website