要提升软件系统的实时性 , 首先要使用支持实时调度策略的操作系统 , 例如黑莓QNX或者风河VxWorks , 或者至少是升级了内核实时性补丁的定制版本Linux 。 其次应用层代码要通过池化策略预分配好各项资源 , 避免运行时动态资源分配和缓存失效引发的抖动 , 科学调配每个计算任务的亲和性(affinity)和优先级(priority) , 降低被操作系统任务调度服务切换的频率 。
很多互联网程序员在刚进入自动驾驶行业时 , 可能都听到过“车规代码不允许在运行时动态申请内存”的传言 , 其实就是源自实时性要求 。 所有的new/delete和malloc/free调用 , 包括C++11之后的创建智能指针对象操作 , 都会在代码静态扫描时被标记为违反MISRA C/C++代码规范 。
除了功能安全和实时性 , 自动驾驶也正在逐步从航空航天等传统高可靠性软件领域借鉴行业成熟经验 。
学习建议和推荐书目
当前业界已经有了ROS2、Apollo等高质量开源项目 , 项目文档足够丰富 , 有基础的同行可以参考学习 , 了解技术细节:
- ROS2: https://docs.ros.org/
- Apollo: https://github.com/ApolloAuto/apollo
在最开始的几个月 , 要充分利用互联网丰富的信息资源 , 高强度补充行业知识 。 要做到勤搜索 , 勤提问 , 勤动手(写代码) , 自动驾驶又是软件和硬件 , 代码和体验都深度结合的学科 , 所以必须还要再加上一条: 勤上车 。
寄语
作为一门刚刚诞生不久的技术 , 没有人能提前知道自动驾驶应该怎么做 , 所有人都是在同一个起跑线 , 从头开始探索的 。
记得五年前 , 我还在犹豫要不要从互联网转型自动驾驶 , 担心自己能不能在一个新方向从头开始的时候 , 一位行业前辈曾经热情的召唤:“ 不要担心自己什么都不会 , 我们都是从什么都不会开始做自动驾驶的 。”
另外 , 作为一个曾经经历互联网行业多次起伏的过来人 , 也要提醒大家 , 虽然当下自动驾驶正火 , 钱多机会也多 ,仍然要对周期性波动做好心理准备 。 我刚刚转型自动驾驶后就遭遇了整整两年的行业低谷 , 如果你仅仅是为了投资下一个风口 , 那这两年必然会非常煎熬 , 甚至悔不当初 。 但是如果你和我一样 , 想清楚了自己想要的是什么 , 那所有的困难就不再是阻碍 , 而是达成目标之前的考验 。
作者介绍:卡林仙人(笔名) , 2000年至2017年间从事互联网后端技术研发 , 2017年起从事自动驾驶车端基础架构研发 , 先后工作于新浪、百度等公司 。
— END—
本文为《新程序员004 》内容 , 《新程序员004》即将上市 , 敬请期待 。
— 推荐阅读 —
? 腾讯各事业群裁员比例没有网传30%那么高;郭明錤称苹果汽车团队已解散;Go 1.18 发布 , 正式支持泛型|极客头条
?CTO 梁军离职 , 市值蒸发 59 亿 , 核心技术人才仅剩 3 人!寒武纪“动荡”的 6 周年
【“当了十年IT程序员,我转型做自动驾驶开发的这五年!”】? IntelliJ IDEA、Kotlin 背后公司 JetBrains 在俄罗斯停服
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
