汽车居然也要用开源软件?
开源生态是推动软件技术创新的重要引擎,可以说现在世界上很多伟大的软件和OS都靠着开源,走向繁荣。
在自动驾驶平台领域,也有着许多开源平台,其中属Autoware最为著名,可以说,它在自动驾驶界的地位不亚于“Linux”。当然,不能把它理解成OS,它实际上是一套软件库和工具,可以帮助用户快速建立机器人应用程序。
作为汽车领域的工程师必知必会的平台之一、自动驾驶入门最有价值软件框架,最近一段时间,其热度正在不断攀升。
汽车开发圈|出品
你有没有发现最近几年自动驾驶走得特别快?除了芯片本身发展较快外,开源平台也是加快自动驾驶脚步的重要因素之一。
自动驾驶平台开源的历史并没有多久,Autoware就是世界上第一个用于自动驾驶汽车的“All-in-One”(多合一)开源软件,现在国内热度很高的百度Apollo都是它的“小老弟”。它基于ROS(Robot Operating System,机器人操作系统),并在Apache2.0许可下使用,支持在各种车辆和应用中进行自动驾驶的商业部署。
Autoware的开源算法最初是由名古屋大学的客座副教授、东京大学的副教授加藤真平在2015年8月首次提出。2015年12月下旬,加藤伸平教授创立了Tier IV,以维护Autoware并将其应用于真正的自动驾驶汽车。
而后,开源自动驾驶平台就像雨后春笋一样,不断浮现:
-
百度Apollo:2017年4月推出,包括一整套硬件、软件和云服务解决方案,可以帮助开发者快速构建各种类型和规模的自动驾驶系统,从3.5版放弃传统的ROS,转用自己开发的CyberRT,Apollo推荐64位x86指令集的CPU加英伟达GPU架构;
-
英伟达DriveWorks:英伟达不仅抛弃了ROS,连Ubuntu也抛弃了,使用了微内核的QNX来代替Ubuntu。虽然说软件本身是开源的,但必须在使用英伟达GPU前提下使用,而且DriveWorks实际只是其中的最上层,关键的底层DriveOS,英伟达并未开源,因为DriveOS有相当多QNX的贡献,而QNX肯定是要收费的;
-
大陆汽车子公司Elektrobit的EB robinsand Predictor:VECTOR、博世旗下的ETAS和大陆旗下的EB并称AUTOSAR中间件三巨头,其EB robins完全没考虑非车规级的底层系统,它高度依赖Autosar,其评估套件是运行 EB robinos e-Horizon Provider (ADASIS) 的 Raspberry Pi 设备,所以主要支持Arm架构;
-
comma.ai的OpenPilot:与上面的产品不同,OpenPilot专注于提供高级驾驶辅助系统(ADAS)功能,如自适应巡航控制和自动转向,OpenPolit的cereal中间件主打轻量化、高性能,并保持服务协议的全局一致性
-
CARLA:它是一个开源的自动驾驶仿真平台,提供了真实的交通环境模拟,可以用于测试和验证自动驾驶算法,可以与Autoware耦合使用。
从上面主要厂商来看,软件计算框架可以主要分为ROS派生自动驾驶平台、专研自动驾驶平台(如Cyber RT)、面向工业界开发的软件框架Autosar三种技术路线。刚开始,厂商都和Autoware一样,基于ROS,后来慢慢改变了自己的路线,Autoware则一直保持本心,基于ROS。
从指令集架构来看,Autoware支推荐Arm指令集架构,但也支持Arm。历史上,Autoware刚开始被Arm鼎力支持,而后AMD也成为了Autoware基金会的白金会员之一。此外,Autoware的白金会员还包括华为、AWS、富士康、TIER IV等。
随着时间的流逝,Autoware已成为公认的开源项目。
Autoware的优势很多。一是模块化架构,作为一个多合一平台,其集成了自动驾驶所需的所有功能,并采用模块化架构设计,具有清晰定义的接口和API;二是可扩展性,不仅能哦股扩展更多功能,还能联动别的软件;三是不断进化,其最新版本已经开始基于ROS 2.0进行重新设计:四是支持多种自动驾驶的应用场景,如出租车、公交车、货运、物流、农业、建筑、采矿等。
更重要的是,Autoware自动驾驶平台的ROS 2采用了代码优先的方法,使为此类系统开发新应用程序变得尽可能简单,代码可重复性高,学习起来比其它平台更容易上手,适合初学者,代码在Github(
https://github.com/autowarefoundation/autoware
)上面为全开源状态,可以直接安装使用。此外,Autoware自动驾驶平台考虑了更多的嵌入式系统。
传感器部分,Autoware支持多种传感器,包括相机、激光雷达(LiDAR)、惯导(IMU)和GPS等,提供了多种传感器的驱动和融合算法,主要功能包括感知、定位、规划与控制等。在Autoware中,每个相机分开管理,以便执行不同任务,如物体检测和交通信号灯识别等。此外,Autoware自动驾驶平台不支持将不同相机图像合成一个图像;在Autoware中,可以组合使用多台雷达扫描仪,提供丰富的融合点云数据,实现更精准的目标检测、跟踪和定位;GPS/GNSS接收器通常会通过串行接口生成符合NMEA标准的文本字符串。目前,几乎所有的GPS/GNSS产品都将与Autoware自动驾驶平台现有的nmea2tfpose节点兼容;不过,Autoware还没有独立的IMU模块适配,因为在不使用IMU情况下,通过基于SLAM算法的3D地图和里程计定位已经足够可靠。但是,由于IMU在某些场景中仍然有用,因此Autoware自动驾驶平台支持将IMU驱动程序和数据集成到本地模块中。
算法部分,包括感知、决策和路径规划三大功能。其中,感知功能由定位、检测和预测三个模块组成;决策功能跨越感知和路径规划功能,根据感知的结果,Autoware决定当前的驾驶行为,从而可以选择合适的规划函数;路径规划功能作用是根据感知和决策的结果制定全局运动方案与局部运动方案,路径规划功能由任务和运动两个模块组成。
驱动部分,算法部分的输出结果是一组速度、角速度、车轮角度和曲率,这些信息将作为命令通过车辆接口发送到线控控制器,线控控制器负责方向角度和油门的改变。
特别是现在的Autoware.Universe(开发者版本)和Autoware.core(稳定版本)版本,内容十分丰富,功能和性能相较Autoware.Ai和Autoware.Auto两个前期版本有了质的飞跃,由Sensing、Map、Localization、Perception、Planning、Control、Vehicle Interface七大模块组成。
不过,Autoware也不是万能的。虽然从ROS 1升级到了ROS 2,解决了实时性、master节点、跑不了嵌入式等问题,但车规方面建设并不很多。此外,自动驾驶开源项目商业模式不明确,很难形成有效的开发团队。在汽车行业内,也没有开源项目可以直接用于产品上,严格的测试认证需要较大资金投入。
Apollo同属于开源自动驾驶平台这一赛道,也拥有很好的人气,行业对于二者的讨论也很多。
工程师普遍认为追求快速落地和生态圈,Autoware更好。ROS作为世界上最丰富的机器人操作系统,积累了大量的经验,避免了开发者重复的开发工作,提高了开发效率。但成也ROS,“败”也ROS,毕竟ROS更多针对机器人,原本并非针对汽车领域。同时,由于Linux是极其开放的开发环境,内核调度器对于算法业务逻辑并不清晰,只能保证公平的分配资源。所以,ROS Node运行顺序并无任何逻辑。当然随着进入新版本,Autoware也已经逐渐填补了这些缺点。
追求一些特殊场景的性能,选择Apollo。Apollo没有调度,无算法运算逻辑,同时增加了Component组件,组件之间通过Cyber channel通信。不过,Cyber RT用户经验少,同时资源也没有ROS全面。
当然,现在市场上也有一些双系统的选项,即Autoware(ROS 2)和Apollo相结合。也有一些厂商,比如Apex.AI开始尝试将Autoware(ROS 2)和Autosar相结合。反正都是开源的,结合起来也没啥毛病。
Autosar和ROS在Apex.AI产品中统一,来源:Apex.AI
总而言之,Autoware本身的人气在工程师群体内很高,是对这个行业有兴趣的人必知必会的平台之一。为了让广大工程师更好的学习Autoware,汽车开发圈也曾经放出一些学习资料,未来汽车开发圈还会继续为广大工程师提供更多资料。
点击链接查看往期资料: 精选参考设计 | Autoware:自动驾驶开源软件项目
参考文献