更新!整理出《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
Robot System Integration
Artificial Intelligence Robots
Mobile Robot
Collaborative Robotic Arm
ROS modular robot
Servo and sensor accessories
Scientific Research
Professional Co Construction
Training Center
Academic Conference
Experimental instruction
Jingtian Cup Event