Operating Systems for Autonomous Vehicles
-
date_range infosort
今天谈起自动驾驶,我们目光更多的是焦距在硬件传感器,感知/规划/控制算法之上,他们是自动驾驶从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?
-
分区/升级/管理
-
实时性/控制周期
-
安全性/鲁棒性