mooc ROS3 通信方式

ros的核心部分 通信

通讯方式:
Topic
service
parameter service
actionlib

topic

在这里插入图片描述

1 概念

异步指的是:
对于发布者(pub)不用等消息返回的状态,只需要发送就行了 并且可以有多个订阅者(sub)
对接收 者来说 有消息到了就处理,没有就做别的事情
在这里插入图片描述

topic内容的数据类型(相当于类)有非常严格的格式要求
pkg中的每条message相当于对象
Message 定义在.msg文件中(pkg/msg/.msg)
在这里插入图片描述
2 常用命令

rostopic


列出当前所有的topic
rostopic list

显示某个topic属性
rostopic info /topic_name

显示某个topic的内容
rostopic echo /topic_name

向某个topic发布内容
rostopic pub /topic_name
rosmsg


列出系统上所有的msg
rosmsg list

显示某个msg内容
rosmsg show /msg_name

Service

1
同步通信方式
node之间通过请求和响应(request-reply)的方式通信

nodeB给外界提供一个服务,其他node可以提出请求服务,得到请求就来做b就来处理,处理完再回复给a

同步指的是client 请求后会一直阻塞等待,等到服务器端返回了结果才会继续执行
在这里插入图片描述

topic 与 service 对比
在这里插入图片描述
2

srv: service通讯的数据格式

定义在*.srv文件中 (和msg类似)

格式:
横线上面是请求的消息
横线下面时返回的消息
srv只能嵌套msg(huamn_pose[]) 不能嵌套srv
在这里插入图片描述

同时还需要修改package.xml和CMakeList.txt文件
指定srv 或者msg 再编译或者运行时所需要的依赖,
在这里插入图片描述

3 rosservice rossrv

列出当前所有活跃的serbice
rosservice list

显示某个service的属性
rosservice info service_name

调用某个service
rosservice call service_name args
rossrv  对应 rosmsg

列出系统上所有的srv
rossrv list

显示某个srv内容
rossrv show srv_name

例子
还是运行roslaunch robot_sim_demo robot_spawn.launch
rosservice list查看有哪些服务

这里我们查看/gazebo/delete_light服务 的内容
rosservice info /gazebo/delete_light
在这里插入图片描述

type就是srv。。。。想调用这个服务,就得看它是怎么定义的

request只有一个参数 light_name 格式是string 返回是布尔型 和字符串是否成功 和状态信息
在这里插入图片描述
吧sun这个light_name删掉
rosservice call /gazebo/delete_light “light_name: ‘sun’”

在这里插入图片描述

添加删除用service比较好,知道结果删没删除 还有set、get的五福都是在你需要的时候给你

parameter Server

roscore时会启动 master rosout 和parameter Server

parameter Server 储存各种参数的字典 (放一些不常改变的参数,配置) 可用命令行,launch文件和node(api)读写

在这里插入图片描述

launch文件中的配置 感觉有点像调用函数返回值
在这里插入图片描述
例子
rosparam list 查看参数设置

查看下重力参数
在这里插入图片描述

把当前参数存到一个yaml文件中
rosparam dump test.yaml yaml文件是可以查看

vi test.yaml
一般习惯把一些算法的参数写到yaml文件中然后roslaunch 加载
加载: 命令行加载 rosparam load test.yaml launch文件加载 把参数和代码分离开了 只用改参数的代码就行了
在这里插入图片描述

Action

升级版的service
例如执行一个任务需要很长的时间,中间想中断这个进程,或者想知道是死机了还是处于一个等待状态

goal :希望动作能实现的目标
cancel:中间可能需要取消掉这个任务
回传:
status::server所处的状态
result:处理完的结果
feedback:实时状态

一般用在长时间的任务,例如小车的导航,走多少米,机械臂的运动等等,还有一些抢占的任务(被打断执行其他任务)

文件类型 *.action 类比 service的的srv topic的msg
在这里插入图片描述

文件格式:
在这里插入图片描述
有3部分: 分别是goal result 和feedback
2个例子:
server端是3个洗碗机 client发布goal要哪个洗碗机工作,server提供完成进度feedback,result返回一共洗完了多少碗的最终结果。

还有常用的navigation 导航
goal是目标的位姿 result是空的永远不结束 feedback当前的位姿

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值