总体而言,不同语言具有不同的优势,但也可以明显看到,C++是自动驾驶中最广泛使用、重要性最高的语言,只靠python行走江湖的时代彻底结束了!C++是算法人员和开发人员必备的技能,也是量产的基石,永远绕不开的工具。
C++在自动驾驶中的重要性
近40 年以来,C++以其高性能、灵活、稳定和强大的底层支持而闻名。运行速度快、对硬件高效访问、可以实现复杂的计算和控制算法,因此始终是信息行业的热门语言。
Offline
在离线系统中,由于脱离了车载计算平台硬件资源的掣肘和安全性的约束,多种语言都会被使用:
-
C++: C++用于开发高性能的组件,例如地图与标注、仿真测试等各个系统的核心组件往往是用C++开发。
-
Python: Python在离线系统中广泛用于机器学习、深度学习和数据处理。Python也可以用于各个子系统的接口标准化,以提供全平台统一的服务。
-
Javascript: offline系统需要为开发、测试、标注人员提供快捷易用的网络工具和界面,所以需要使用Javascript进行Web开发。这包括仿真工具的可视化界面、数据可视化以及其他与用户交互的多个工具。
-
Java:Java在处理大规模数据和分布式计算方面具有良好的生态和应用。在自动驾驶系统的数据管理系统中,Java可能用于管理、调度离线数据等。
-
自动驾驶系统的常用编程语言
自动驾驶系统的online和offline系统会混合使用多种语言,以满足复杂多样的功能实现要求。具体的选择通常取决于性能要求、系统架构设计和开发团队偏好。
Online
车载计算平台的CPU、GPU和内存资源往往是有限的,所以在online系统中,出于性能和实时性的考虑,绝大多数模块都会用C++开发或部署。此外,Shell语言可能用于执行一些系统级别的任务和脚本。在涉及人机交互、数据传输的模块,也会使用Python。