- 与互联网的区别
当从事自动驾驶系统开发时 , 软件系统与车辆平台、车端硬件和传感器紧密耦合 , 所有特性都必须经由软硬件系统的协调一致配合才能正常运行 , 而且自动驾驶行业正处于剧烈进化的高速成长阶段 , 车型与传感器型号繁多 , 技术标准和接口多变 , 所以 需要我们从底向上、从硬件到系统 , 对各个层面、各个环节的知识都要有一定的了解 , 最好是能有机会自己亲自参与硬件配置和软件部署调试的全过程 , 才能加深整体认识 , 避免盲人摸象 。
以我个人的看法 , 如果具备一定年限的驾龄 , 会更有助从司机角度理解用户的关注点和诉求 。
- 车规和功能安全
简要地说 , 车规是汽车行业多年来积淀的从代码规范到开发过程的一系列行业标准和行业规范的统称 , 功能安全(Functional Safety)是一个专业术语 , 特指汽车行业一整套避免伤亡和损失的研发流程方法论 。
这其中与自动驾驶系统关系最密切的有国际标准《ISO26262-道路车辆功能安全》、C/C++代码规范MISRA C和MISRA C++(Motor Industry Software Reliability Association) 。 因为最新一版MISRA C++规范是2008年制定的 , 无法覆盖C++11以来天翻地覆的语言标准变化 , 所以也可以选择参考支持更高语言标准的代码规范AUTOSAR C++14 。
文章图片
ISO26262 V研发流程模型
如果遵照功能安全标准和方法论 , 最终的成果是软件的车辆安全完整性等级(ASIL , Automotive Safety Integrity Level) , 分为ASIL-A、ASIL-B、ASIL-C、ASIL-D四个级别 , 安全等级逐级递增 , 如果通过了ASIL-D , 就代表符合了最高级别的功能安全等级 , 例如目前微内核实时操作系统QNX的功能安全版本QNX OS for Safety的部分组件(系统内核、部分系统服务、C编译器和标准库)就通过了ASIL-D标准认证 。
这里从ASIL-D标准里摘取几条要求 , 我相信业界从业者都能体会到通过ASIL-D认证的复杂度和工作量:
- 形式化验证
- 限制使用指针
- 无隐藏数据流或者控制流
- 测试的分支覆盖率、函数覆盖率、调用覆盖率都要求100%
- 实时性
在自动驾驶行业 , 实时性(real-time)是特指系统具备在承诺的时间窗口或者调度周期内 , 不受任务调度、资源争抢等外部因素干扰 , 准时完成运算的能力 。 我个人认为更恰当的描述应该是“确定性” 。
举例来说 , 一个设计指标为20Hz(即每秒20次)输出运算结果的任务模块 , 如果能精确地做到每两次输出间隔都是50毫秒 , 那就满足了设计要求的实时性指标 。 但是如果输出间隔不均匀或者明显抖动 , 那即使能够实现30Hz甚至更高的输出频率 , 也是不满足实时性指标的 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
