成都网站优化seo,网盘做网站,同时做网站建设和代账,员工做违法网站目录
1.架构
2.通讯
参考文献 上接#xff1a;什么是Ros#xff08;一#xff09;-CSDN博客
1.架构 共三层#xff1a;OS 层#xff0c;中间层#xff0c;应用层。
OS 层#xff1a;OS 层是操作系统层也就是我们现在使用的ubuntu#xff08;linux#xff09;什么是Ros一-CSDN博客
1.架构 共三层OS 层中间层应用层。
OS 层OS 层是操作系统层也就是我们现在使用的ubuntulinux了解即可只做应用不需要改动
中间层这里有TCPROS/UDPROS、Nodelet API、ClientLibrary。 TCPROS/UDPROS 是基于TCP、IP 协议做的二次封装取名为TCPROS 和UDPROS Nodelet API 为了弥补TCPROS/UDPROS 使用中的一些不足它是使用一种共享内存的方法而不是网络传输的实现一些数据共享 ClientLibrary 是客户端的库这个库就是指把UDPROS 和TCPROS 再继续进行封装成了一些ROS 的具体通信实现方法例如我们后面要提到的话题、服务等等
应用层应用层的最左边是一个MasterMaster 是跟中间层一起框起来上面标注了一个Ros。这是因为Master 节点是每一个Ros 进行中必须要有的并且只能唯一有的所以说Master 节点也是Ros 官方提供的。它是用来管理右边这些应用层的Node 等等。而每一个note 就是一个个相互独立的应用。
总结OS层和中间层了解即可真正需要自己开发的是应用层 node一个可执行程序进程通常一个node 负责者机器人的某一个单独的功能如果将相机接入ROS其中Camera Node 就是一个相机的节点。不同的节点可以使用不同的编程语言C或python。在同一个ROS 下节点对于编程语言是没有要求的可以每个节点用互相不同的语言。还可以将Image Display Node运行在另一台电脑上的图像处理节点。也就是说Ros 的节点是可以运行在同一局域网下的不同机器人上这就是ROS的分布式计算能力。
master每个节点都负责单独的一部分功能节点跟节点之间要互相发现彼此这就需要master。master 相当于一个管理中心每一个node 启动的时候先要在Master 处进行一次注册告诉master 自己的基本信息需要订阅什么话题需要发布什么话题。node 之间的通信也是先由master进行“牵线”才能两两的进行点对点通信一个ROS计算图中有且只有一个master
2.通讯 节点之间的通讯方式有4 种实现方法分别是话题、服务、动作、参数
话题单向通讯Publisher 只管发Subscriber 只管收
服务双向通讯请求由Client客户 端发往Server服务 端的请求在执行完之后服务端再向客户端返回一个应答这个就是服务的过程但长时间没有应答就认为通讯失败。
动作是服务的升级版服务是客户端发送一个请求服务端返回一个应答。这种模式在任务执行周期短的情况下是十分有用的例如让服务器关一下灯服务器立马把灯关了然后返回一个应答告诉你灯已经关了。但是如果用服务的方式让机器人砍一片森林在砍完之前是收不到任何回复的。此时无法判断到底是没有收到请求还是正在执行。在类似这种执行周期比较长的任务下服务就很不适用了。所以也就产生了动作action 这种方法。所以在动作中请求包含goal 和cancel 是由客户端向服务端发送的应答包含status 和result 和feedback 是由服务端返回的。
Action 和服务的区别在于它有多重回复。例如让机器人去砍伐一片森林机器人首先会应答一个status。告诉你当前状态开始砍伐同时还有回复feedback 周期性的报告目前砍了多少棵。最后砍完了应答一个result 树已经砍开了。客户端接收到result 就知道这一组动作已经结束了。Action 在执行过程中如果想要取消动作它还提供了一个cancel 这接口来取消请求。这里要注意一下feedback 和status 都可以有多个但是result 只会发布一次。
参数服务器是一种比较特殊的机制他既不是一个节点然后我们在启动的时候也没有特地去启动它。它运行在Master 当中是节点用来存储参数的地方。例如某一个节点启动的时候需要获取变量f。如果参数服务器当中没有存储这个变量那他会使用一些默认值 参考文献
1.ROS介绍以及常用指令_ros命令-CSDN博客