menu

Operating Systems for Autonomous Vehicles

  • date_range    info
    sort

今天谈起自动驾驶,我们目光更多的是焦距在硬件传感器,感知/规划/控制算法之上,他们是自动驾驶从0到1的关键。 但经过这段几个月的实际项目开发,越发觉得对自动驾驶的项目来说,操作系统也是个不小的挑战, 如果仅仅是依赖开源项目,做不到深入的理解,是远远达不到真正落地的目标的。

所以今天我想探索一下: 自动驾驶需要一个什么样的操作系统,会有什么样的挑战,我们该如何设计?

Status

操作系统的定义

开始之前,我想的是先明确操作系统的定义,虽然老生常谈,但这决定了接下来讨论的范围。

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. ref: wiki

举具体的例子:

  • Android 是一个操作系统,其实质是 Linux Kernel + Android Core Library + ART(JVM)
  • ROS/Ubuntu 算一个操作系统,实质是 Linux Kernel + GNU Software/Library + ROS

PS:操作系统就是一个Stack,只要里面替换的部件达到一个比较大的百分比,自然就算一个新的系统,比如说AliOS之于Android。
:-)

现有的操作系统

在设计之前,可以先过一遍既有的操作系统,借鉴过去几十年来工程师们所积累的。

Windows/Linux : 旧时代的桌面系统

Android/IOS/ChromeOS: 移动时代的交互系统

uCOS/FreeRTOS/Mbed: RTOS? or Iot OS

VxWorks/RTEMS/QNX: RTOS

Embedded Linux: 超过50%的占用率

Yocto/Buildroot: 定制化的发行版

Ubuntu/Debian: 传统发行版

Brillo/Ubuntu Core: 面向IoT的Linux

What do we need?

  1. 分区/升级/管理

  2. 实时性/控制周期

  3. 安全性/鲁棒性