06 ROS中的节点、话题和服务

总体逻辑关系

 

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 服务(services)

基本概念:

属于节点间通讯的另一种方式(前面讲述的一种是message方式),允许节点发送请求(request),并获得相应(response)

对应常用命令:

(a)rosservice list——输出节点可用的服务信息

例如,查看clear服务的类型

rosservice type clear

服务的类型为empty,表明请求和相应均不需要发送数据,返回类型如下,

std_srvs/Empty

(b)rosservice call——调用服务

rosservice call [service] [args(参数)]

 (c)ros 参数服务器上的数据操作

参数服务器能够存储整型(YAML标记语言的语法,整型用数字“1”)、浮点(1.0)、布尔(true)、字符串(one)、字典({a: b, c:d})和列表([1, 2, 3])等数据类型,通过rosparam命令完成相关操作。

rosparam set //设置参数
rosparam get // 获取参数
rosparam load// 从文件读取参数
rosparam dump // 向文件中写入参数
rosparam delete // 删除参数
rosparam list // 列出参数名

 

 

节点可以发布消息到话题,也可以订阅话题以接收消息

 

对应常用命令:

节点/话题/服务之间逻辑关系的理解

(a)节点间的通讯只能通过话题实现

(b)话题间的通讯以消息形式实现,发布消息的话题称为发布器节点

 

参考,侵权请联系删除:

https://junjun.blog.csdn.net/article/details/82193803

 

posted @ 2021-09-10 10:39  下山道士又出家  阅读(565)  评论(0编辑  收藏  举报