写点什么

在自动驾驶汽车的开发软件中使用模型

  • 2017-02-15
  • 本文字数:2416 字

    阅读完需:约 8 分钟

在类似无人驾驶汽车这样自治动力系统的软件开发中,模型发挥着重要的作用——模仿及验证人们的驾驶行为,记录系统日志并生成代码。在 2016 年度的 GOTO Amsterdam 大会上,美国亚利桑那大学电气与计算机工程专业的副教授 Jonathan Sprinkle 就无人驾驶汽车的软件开发主题发表了演讲,他认为:无人驾驶汽车的软件起初都是单一整体式的,但如今逐渐向着可组合的拼装式方向发展,新的软件可根据需求进行功能拼装。此外,之前大量的数据都来自诸如雷达、GPS 和摄像机等传感器,但如今通过传感器融合,并朝着可感知的方向发展,这些数据都合并到了同一张地图上。这意味着如今的汽车不再将周边整个世界视为静态数据,而是主动去感知,并根据新增类型的传感器推断这些事物会如何移动。

可组合的软件能够通过包含输入、输出及相互补全的过程来完成建模,根据 Sprinkle 教授的看法,这样的过程模型集中在功能方面,对非功能性的行为不太有用。“功能性行为可能很容易测试,但这种过程模型却很少涉及非功能性行为——而后者却是与人类交互的复杂信息物理系统必须要有的行为。”

我们可以这样理解:一辆自动驾驶汽车就是结合了计算、通信和控制的信息物理系统,是一张交互元素网络,因此系统在构建和测试时花费不斐。每添加一个新的组件,就可能影响其他系统的通讯方式以及计算耗费的时间。

至于在运行时如何使用预测模型的控制装置来控制汽车的轨迹,避免与障碍物碰撞,Sprinkle 教授列举了相关案例:如果计算速度太慢,就会因为来不及校正而造成碰撞;如果使用精度较低的简单模型,虽然计算速度快了,但由于精度不够还是可能撞到障碍物。所以在计算轨迹和决定干预时,必须将计算所耗费的时间列入考量,而且我们必须知道模型会有多大的误差,以便计算校正。以上这些任务都必须实时完成。

目前用于自动驾驶汽车的传感器都非常昂贵,在 Sprinkle 教授看来,我们需要相对便宜些的传感器,也许不够完成所有任务,但可以解决大多我们不想做的工作。我们可以把自动驾驶系统看成一个连续统一体,它刚开始可以完成一些简单的自动停车工作,或者在高速路上驾驶时使用自适应巡航系统,直到能够在任何情况下完全自动驾驶汽车。

InfoQ 就以下这些问题采访了 Sprinkle:如何决定将汽车的控制权交给自主系统;如何对自主系统中使用的软件进行建模,以及建模的好处;怎样通过测试数据来测试自动驾驶汽车的软件能否正常工作,以及编写可靠代码的技术。

问: Sprinkle 教授之前曾提及要将汽车的控制权交给自主系统,那么怎样决定给予多大的权限,给予哪些功能的控制权?

答: 实际上,许多人尚未意识到自己已经给了身边系统多大的控制权,不单指交通方面。例如,现代供暖技术会保证我们的生活空间温度接近设定预期,我们做设定,但管理权交给了系统。汽车开始移动时,我们需要在不亲自控制时确保舒适,大多人现在已经适应了自动巡航,因为驾轻就熟。然而,从自动巡航到在人行横道上也完全袖手听凭系统自动驾驶,中间有一个巨大的鸿沟。大多汽车的自主驾驶功能都是从任务引导开始的,不能一蹴而就。

问: 如何对用于自主系统的软件进行建模?

答: 与规划和控制相关的任务是最容易理解的,在规划时需要将类似目的地这样的高层级对象转化为其它高层级的概念——比如期望的行车路线,然后这个行车路线就会转化为期望车速和路径,再根据沿途情况(比如变道或者交通阻塞)来进行相应的调整,最终形成按照期望速度行驶的轨迹路线。在某些情况下,这些概念的软件模型可被解析为 UML 状态模型。例如,系统会根据即时发现的障碍物和行车状态来进行驾驶模式间的切换。序列模型的作用也是相关的,从不同的传感器接收到的信息会触发状态的变化。这些软件组件通常是根据事件调用的,也就是说用户提供需要的输入内容,系统给出响应,又或者系统根据传感器的检测作出回应。因此,我们才说反应模型的效果最佳。

在控制装置的案例中,大多数软件可以当作组件来建模(即功能模块),系统通过这些组件将输入内容转化为输出信号。任务通常根据时间触发,无论系统的新数据是否可用,相应组件都应当作出响应。确保所有模块都能排序十分必要,而且要确保海量数据不会导致系统相应的延迟。反应模型还起到安全开关的作用,一旦传感器掉线,控制装置会发现这一情况并采取相应操作。类似 Simulink 中的框图样式模型可以很好地模拟所需系统的行为。

问: 软件建模有哪些好处呢?

答: 模型对系统行为的推断能力非常惊人,而且无需考虑输入信息的准确与否。我们针对活性或死锁进行检查,还可以调度系统组件,但需利用模型中的数据。对于开发人员来说,在开发中使用模型提供了一种独特的系统日志记录方式,尤其是在将代码生成用于提供最终输出的成品时。

问: 能否就通过测试数据进行软件验证的方式举例说明?

答: 最佳验证案例就是:在人类驾驶员的控制下,检查自主控制器是否根据预期速度做出合理的决策。说到验证方面,在确保系统不会违反约束的情况下,我们通常会使用理论技术验证模型是否正确,再通过代码生成技术来确保输出系统反映了相应的模型。

问: 能否推荐一些其他可用来编写可靠代码的技术?

答: 在手写代码时,想要确保代码可靠,就需要通过严格的步骤和回归测试以保证获得预期的输出信息。因此,我们一直强调,希望大家考虑从模型中合成代码,因为考虑到掉线或者速度变化的问题,最可靠和最稳健的实践就是在开发中代码生成阶段直接合成代码,而不需要修改整个系统的逻辑。当然,如果逻辑错了,代码多完美也是没用的。

关于在亚利桑那大学所进行的自动驾驶方面的研究,研究人员使用了配有传感器和硬件的全尺寸福特 Escape 进行研究。在实际运用前,研究人员先通过建模来进行模拟,通过实验及实际驾驶收集数据。通过这种方法,在实际车辆测试之前我们就能发现设计和集成的问题,并根据之前采集的数据,吸取之前决策的经验,以确保不会有危险的操作发生,研究成果请参见 CAT Vehicle 网站

英文原文: Using Models in Developing Software for Self-Driving Cars

2017-02-15 18:001819

评论

发布
暂无评论
发现更多内容

面试不会算法和数据结构,经典面试题讲解来了!

霍格沃兹测试开发学社

金三银四 面试准备 数据结构面试题,编程与算法经典面试题

测试人

面试 软件测试 求职

仓储管理解决方案:混合低代码与定制开发,实现灵活性与效率的完美结合

天津汇柏科技有限公司

低代码开发 软件开发定制 仓储系统

卡片式笔记系统BYEAP介绍

zhumingwu

软件测试学习笔记丨Selenium网页frame

测试人

软件测试

金三银四 面试准备 数据结构面试题,编程与算法经典面试题

测吧(北京)科技有限公司

测试

认识一下JavaScrip中的元编程

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

Anon Network:基于 Ator Protocol 的 DePIN 匿名互联网

大瞿科技

QCN9274 vs QCN9224 chip performance comparison-wireless communication innovation

wifi6-yiyi

5G qcn9274 QCN9224

第六届科技无障碍发展大会(2024TADC)

信息无障碍研究会

Giants Planet 宣布推出符文,建立在坚实价值的基础上

西柚子

Ceph的crush算法与一致性hash对比介绍

天翼云开发者社区

云计算 存储 云服务

信创国产化替换势在必行,“重复造车轮”应避免

FinFish

国产化 小程序容器 信创化软件 信创化

GLM国产大模型训练加速:高效性能与成本优化的实践

百度开发者中心

人工智能 深度学习 大模型

lerna-lite 轻量化 monorepo 管理利器

小鑫同学

如何通过二维码追踪物品流转情况?添加这个组件即可

草料二维码

二维码 草料二维码

MES系统解决方案,MES系统主要能解决什么问题

万界星空科技

数字化 生产管理系统 mes 万界星空科技 车间管理

驼峰与下划线在python中转化

麦兜

利用jd.item_get API获取商品信息,打造可读性强的商品介绍

技术冰糖葫芦

API 接口 API 文档 pinduoduo API

MES管理系统与其他系统的集成

万界星空科技

数字化转型 系统集成 mes 万界星空科技

LLaMA 2语言大模型的微调策略:LoRA与全参数选择

百度开发者中心

人工智能 大模型 llama2

Tableau Desktop 2019 for Mac(最好用的数据分析工具)v2019.1.0中文激活版

iMac小白

Prompt工程师压箱底绝活——Prompt的基本组成部分、格式化输出与应用构建

百度Geek说

企业号 4 月 PK 榜 Prompt

出海不出局 | 小游戏引爆高线市场,新竞争态势下的应用出海攻略

融云 RongCloud

Apifox 最新功能更新:OAuth 2.0 鉴权、多分支Mock及更多

Apifox

程序员 前端 后端 Apifox

Stable Diffusion中的常用术语解析

程序那些事

人工智能 程序那些事 openai

玩转云端| 拥有HBlock这项“存储盘活绝技”,数据中心也能“热辣瘦身”!

天翼云开发者社区

云计算 存储 数据中心 集群

在自动驾驶汽车的开发软件中使用模型_软件工程_Ben Linders_InfoQ精选文章