更新!整理出《ROS机器人编程》第四章ppt讲义版,请对照书籍P40-89页学习。配套视频教学文档可在YouTube上查看。
【说明】
节点:易于单元(节点)测试,有助于ROS生态系统->与其他开发人员共享程序。
节点应该有多小?>考虑重用节点
【说明】根据其用途,有4种类型的消息。
*1:1发布者和订阅者通信也可以用于主题, 和1:N,N:1,N:N通信也可以根据用途而定。
【说明】双向沟通
只有一次
一个服务被分成服务服务器和服务客户端,其中服务服务器只在有请求(request) 的时候才响应(response),而服务客户端会在发送请求后接收响应。与话题不同,服务是一次性消息通信。因此,当服务的请求和响应完成时,两个连接的节点将被断开。该服务通常被用作请求机器人执行特定操作时使用的命令,或者用于根据特定条件需要产生事件的节点。由于它是一次性的通信方式,又因为它在网络上的负载很小,所以它也被用作代替话题的手段,因此是一种非常有用的通信手段。
【说明】服务+反馈
需要更长时间的任务
动作消息通信是在如下情况使用的消息通信方式:服务器收到请求后直到响应所需的时间较长,且需要中途反馈值。这与服务非常相似,服务具有与请求和响应分别对应的目标(goal)和结果(result)。除此之外动作中还多了反馈(feedback)。收到请求后需要很长时间才能响应,又需要中间值时,使用这个反馈发送相关的数据。消息传输方案本身与异步方式的话题(topic)相同。反馈在动作客户端(action client)和动作服务器(action server)之间执行异步双向消息通信,其中动作客户端设置动作目标 (goal),而动作服务器根据目标执行指定的工作,并将动作反馈和动作结果发送给动作客户端。例如,如图4-4所示,当客户端将家庭服务器设置为服务器时,服务器会时时地通知客户端洗碗、洗衣和清洁等进度,最后将结果值发送给客户端。与服务不同,动作通常用于指导复杂的机器人任务,例如发送一个目标值之后,还可以在任意时刻发送取消目标的命令。
【说明】平移速度
转速
命令+包+节点
【说明】如第2章所述,为了最大化用户的可重用性,ROS是以节点的形式开发的,而节点是根据其目的细分的可执行程序的最小单位。节点则通过消息(message)与其他的节点交换数据,最终成为一个大型的程序。这里的关键概念是节点之间的消息通信,它分为三种。单向消息发送/接收方式的话题(topic);双向消息请求/响应方式的服务 (service);双向消息目标(goal)/结果(result)/反馈(feedback)方式的动作 (action)。另外,节点中使用的参数可以从外部进行修改。这在大的框架中也可以被看作消息通信。
原创声明:本篇文档为原创文档。欢迎转发转载,请注明出处。
Donghu Robot Laboratory, 2nd Floor, Baogu Innovation and Entrepreneurship Center,Wuhan City,Hubei Province,China
Tel:027-87522899,027-87522877