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

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

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

  在无人车驾驶系统中,我们选择依旧基于ROS1.0开发,而不是ROS2.0,主要有以下几点考虑:

  ROS2.0是一个开发中的框架,很多功能还不是很完整,有待更多的测试与验证。而在无人驾驶环境中,稳定性与安全性是至关重要的,我们需要基于一个经过验证的稳定系统来保证系统的稳定性、安全性和性能,以达到无人车的要求。

  DDS本身的耗费。我们测试了直接在ROS1.0上使用DDS中间件,其中国防科技大学有一个开源项目MicROS已经做了相关的尝试,详情参见https://github.com/cyberdb/micROS-drt。但是实验发现在一般的ROS通信场景中(100K发送者接收者通信),ROSonDDS的吞吐率并不及ROS1.0,主要原因是DDS框架本身的耗费要比ROS多一些,同时用了DDS以后CPU占用率有明显提高。但是我们也确认了使用DDS之后,ROS的QoS高优先级的吞吐率和组播能力有了大幅提升。我们的测试基于PrismTechOpenSplice的社区版,在它的企业版中有针对单机的优化,比如使用了共享内存的优化,我们暂未测试。

  DDS接口的复杂性。DDS本身就是一套庞大的系统,其接口的定义极其复杂,同时文档支持较薄弱。

  系统可靠性

  如上文所述,系统可靠性是无人驾驶系统最重要的特性。试想几个场景:第一,系统运行时ROSMaster出错退出,导致系统崩溃;第二,其中一个ROS节点出错,导致系统部分功能缺失。以上任何一个场景在无人驾驶环境中都可能造成严重的后果。对于ROS而言,其在工业领域的应用可靠性是非常重要的设计考量,但是目前的ROS设计对这方面考虑得比较少。下面就讨论实时系统的可靠性涉及的一些要素。

  去中心化

  ROS重要节点需要热备份,以便宕机时可以随时切换。在ROS1.0的设计中,主节点维护了系统运行所需的连接、参数和主题信息,如果ROSMaster宕机了,整个系统就有可能无法正常运行。去中心化的解决方案有很多,如图6所示,我们可以采用主从节点的方式(类似ZooKeeper),同时主节点的写入信息随时备份,主节点宕机后,备份节点被切换为主节点,并且用备份的主节点完成信息初始化。

  图6 基于ZooKeeper的监控和报警

  实时监控和报警

  对于运行的节点实时监控其运行数据,并检测到严重的错误信息时报警。目前ROS并没有针对监控做太多的构架考虑,然而这块方面恰恰是最重要的。对于运行时的节点,监控其运行数据,比如应用层统计信息、运行状态等,对将来的调试、错误追踪都有很多好处。如图7所示,实时监控从软件构架来说主要分成3部分:ROS节点层的监控数据API,让开发者能够设置所需的统计信息,通过统一的API进行记录;监控服务端定期从节点获取监控数据(对于紧急的报警信息,节点可以把消息推送给监控服务端);获取到监控数据后,监控服务端对数据进行整合、分析、记录,在察觉到异常信息后报警。

  图7 基于ZooKeeper的监控和报警

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

发表评论

0条评论,0人参与

请输入评论内容...

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

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

暂无评论

暂无评论

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

粤公网安备 44030502002758号