而对于整个系统的仿真及回归测试,ROS则可与Gazebo无缝链接,Gazebo是一个功能强大的3D模拟仿真引擎,其具有完整的动力学和运动学特性。通过其强大的可扩展插件系统,可支持真实传感器的仿真并包括预定义的传感器噪声。定制化的传感器模型也可通过Gazebo 的API进行添加(说太多没什么用,只有你亲自使用过才会体会它的强大,反正Gazebo很牛逼)。
容错性和安全性
系统诊断和监测:在系统开发和运行期间,攻城狮和用户可立即了解系统的健康状况,例如,所有传感器都已连接并正向系统中发送数据,且所有的组件都以预定的速率计算所需数据等。为了方便攻城狮为其组件添加诊断,ROS提供了一便于使用和集成的基础框架,以用于向中央诊断管理器发送诊断信息,该中央诊断管理器以交通灯的颜色方案显示系统运行状况以便立即查明关键组件或数据完整性是否存在风险。
Lock Stepping锁步:即由两个处理器构成的自监控对,其不间断的检查功能的正确性并可诊断出故障处理器,从而建立故障抑制区防止故障蔓延。ROS并没有特定的功能来实现锁步,然而模块化架构及标准接口有助于锁步系统的开发以提高系统可靠性。
应用及支持
坐标转换系统:在多传感器系统中会定义多个坐标系统,如摄像头、车本身或全局坐标系统,这就需要将数据在不同坐标系统中频繁转换,ROS则提供了基于时间的坐标转换服务,可实现某一坐标系的数据向任意其他坐标系的转换(强大的TF库)。
多速率系统:在自动驾驶汽车中,基于传感器的信息通常以固定的速率交互。例如摄像头的图像信息以15Hz速率获取并更新,而GNSS位置确定则只有在1Hz或5Hz速率下。当将多传感器数据进行融合时,数据同步是非常重要的一方面。为了简化多速率系统中的数据同步,ROS提供了基于时间戳的同步原理-消息过滤器(Message Filter),它从多个数据源采集不同类型的数据,只有每个信息源的信息具有相同时间戳的时候才会将信息发布出去。
可视化:ROS提供了两个扩展性极强的工具-rqt和rviz,其可帮助我们实现图像显示,3D画图(点云)、车辆状态数据(里程)等。
3、总结
通过上面的叙述,最后以一张图表的形式对三种软件架构做个比较:
备注:上中下水平依次以++ o --代表
从上面的对比中,我们可清楚的看到ROS在自动驾驶领域进行应用开发时所具有的优势,尤其在原型设计方面。像百度早期的阿波罗、开源的Autoware都是基于ROS做的自动驾驶项目,很多Tier1的供应商及OEM,如BOSCH、BMW等也都会选择ROS作为他们自动驾驶项目开发的一个有力组件和工具。