总体逻辑关系
01 节点
基本概念:
ROS包中的可执行文件,使用ROS客户端库(rospy——python客户端库;roscpp=c++客户端库)与其它节点通信,具备发布或订阅主题以及提供或使用服务的功能。
对应常用命令:
02 话题
基本概念:
节点可以发布消息到话题,也可以订阅话题以接收消息,基本工作过程为一个node在topic上发布消息,另一个node订阅该话题,并接收消息。
对应常用命令:
a. rqt_graph 显示当前运行的节点和话题(一般显示为红色)
b. rostopic 获取有关ROS话题的信息,该系列的子命令
rostopic bw display bandwidth used by topic
rostopic echo print messages to screen
rostopic hz display publishing rate of topic
rostopic list print information about active topics
rostopic pub publish data to topic
rostopic type print topic type
c. rostopic echo 【topic】显示某个话题上发布的数据
rostopic echo /turtle1/cmd_vel
d. rostopic list 列出当前所有订阅和发布的话题
rostopic list -h //help rostopic list -b BAGFILENAME //list topics in .bag file rostopic list -v //list full details about each topic rostopic list -p //list only publishers rostopic list -s //list only subscribers
消息的说明
话题上的通信是以消息形式实现的,publisher和subscriber之间必须发送和接收同一类型的消息,即话题类型由其上的消息类型决定。
对应常用命令:
a. rostopic type [topic]查看所发布话题的消息类型
b. rosmsg show xxx(消息名称)——查看消息的详细情况
02-01话题的发布和查看
a. rostopic pub——将数据发布到当前某个正在广播的话题上
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]‘
例子详解:
-1 //单破折号,参数选项1表示rostopic发布一条消息后马上退出
-- //双破折号,告知命令选项解析器,后续参数部分均非命令选项
‘[2.0, 0.0, 0.0]‘ ‘[0.0, 0.0, 1.8]‘//2.0是linear的值;1.8为angular的值(两个均为浮点型元素)
rostopic pub -r 以某一频率发布一个稳定的命令流
例子:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- ‘[2.0, 0.0, 0.0]‘ ‘[0.0, 0.0, 1.8]‘//以1HZ的频率发送该条命令
b. rostopic hz 查看数据发布的频率
rostopic hz [topic]
c. rqt_plot 通过图形方式实时显示发布到某个话题上的数据
在窗口左上角的一个文本框里面你可以添加需要绘制的话题,如图
03 服务
基本概念:
节点可以发布消息到话题,也可以订阅话题以接收消息
对应常用命令: