侵权投诉
焊接机器人 喷涂机器人 搬运机器人 装配机器人 切割机器人 其它机器人
订阅
纠错
加入自媒体

【知识】基于ROS的无人驾驶系统

2016-08-20 11:01
科技潮人
关注

  机器人操作系统(ROS)简介

  ROS是一个强大而灵活的机器人编程框架,从软件构架的角度说,它是一种基于消息传递通信的分布式多进程框架。ROS很早就被机器人行业使用,很多知名的机器人开源库,比如基于quaternion的坐标转换、3D点云处理驱动、定位算法SLAM等都是开源贡献者基于ROS开发的。因为ROS本身是基于消息机制的,开发者可以根据功能把软件拆分成为各个模块,每个模块只是负责读取和分发消息,模块间通过消息关联。如图3所示,最左边的节点可能会负责从硬件驱动读取数据(比如Kinect),读出的数据会以消息的方式打包,ROS底层会识别这个消息的使用者,然后把消息数据分发给他们。

  图3 ROS系统

  ROS1.0

  ROS1.0起源于WillowGarage的PR2项目,主要组件包括ROSMaster、ROSNode和ROSService三种。ROSMaster的主要功能是命名服务,它存储了启动时需要的运行时参数,消息发布上游节点和接收下游节点的连接名和连接方式,和已有ROS服务的连接名。ROSNode节点是真正的执行模块,对收到的消息进行处理,并且发布新的消息给下游节点。ROSService是一种特殊的ROS节点,它相当于一个服务节点,接受请求并返回请求的结果。图4展示了ROS通信的流程顺序,首先节点会向masteradvertise或者subscribe感兴趣的topic。当创建连接时,下游节点会向上游节点TCPServer发布连接请求,等连接创建后,上游节点的消息就会通过连接送至下游节点。

  图4 ROSMasterNode通信

  ROS2.0

  ROS2.0的改进主要是为了让ROS能够符合工业级的运行标准,采用了DDS(数据分发服务)这个工业级别的中间件来负责可靠通信,通信节点动态发现,并用sharedmemory方式使得通信效率更高。通过使用DDS,所有节点的通信拓扑结构都依赖于动态P2P的自发现模式,所以也就去掉ROSMaster这个中心节点。如图5所示,RTIContext、PrismTechOpenSplice和TwinOaks都是DDS的中间件提供商,上层通过DDSAPI封装,这样DDS的实现对于ROSClient透明。设计上ROS主页详细讨论了用DDS的原因,详情参见http://design.ros2.org/articles/ros_on_dds.html。

  图5 ROS2.0DDS

<上一页  1  2  3  4  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号