“ 经常有朋友问如何学习仿真测试,于是想着把自己的一些经验和理解分享出来,希望能有所帮助。不过视野和技术有限,所说不一定对,供大家批评和参考。这是第9篇,自动驾驶的软件-开源软件之二Autoware”
Autoware最早由日本名古屋大学的加藤伸平教授(Shinpei Kato)于2015年8月正式发布;2015年12月加藤伸平教授创建Tier IV,以维护Autoware并将其应用于自动驾驶汽车。Autoware软件包含了自动驾驶需要的感知、规划和控制等所有功能模块,并定义了清晰的接口和api。
起初Autoware被应用于学校和开放道路中班车的运行,后来于2020年发布Autoware v1.0,支持自主代客泊车(AVP,Autonomous Valet Parking)功能;2021年发布Autoware v2.0,支持货物(Cargo Delivery)和F1TENTH等自动驾驶比赛;2022年发布Autoware v3.0,升级为Autoware Core/Universe架构。
Autoware经历过多次架构升级,有必要进行下简要说明:
(1)Autoware.AI,基于ROS1开发,是Autoware的第一个发行版。其包含感知、驱动、定位、规划等在内的完整的自动驾驶模块,对推广自动驾驶发挥了很大的作用,但是由于缺乏具体的架构设计、不同模块不具有相同的代码标准、没有清晰的运行条件定义等问题,使得进一步改进Autoware十分困难,这推动了Autoware.Auto的开发。
(2)Autoware.Auto,基于ROS2开发,是Autoware的第二个发行版。Autoware并没有被简单的从ROS1移植到ROS2,而同时对Autoware.AI中遇到的问题进行了改进,包括基于工程实践开发了合适的架构、定义了设计运行域,并开发文档和测试代码。
但是随着AVP和货运运输功能的开发完成,又遇到了新的问题:基于之前提到的完善工程设计,Autoware.Auto对新工程师的门槛太高了,不利于新功能的开发和架构更改。
(3)Autoware Core/Universe,这是目前Autoware采用的架构。Autoware Core继承了Autoware.Auto的策略,维护稳定的和经过良好测试的代码库,而Autoware Universe作为Autoware Core的扩展。这个架构兼顾了稳定性和快速更新,具有如下优点:①用户可以轻松的使用Universe中的等效组件替代Core组件,从而方便测试更新更好的算法 功能;②Universe的代码质量要求更宽松,便于新的开发和研究人员提交;③如果添加到Universe中的功能,对Autoware社区有广泛影响会被审核并考虑添加到Core中。