账号:
密码:
CTIMES / 文章 /   
无人自动驾驶计程车的纵向控制开发
 

【作者: Alan Mond】2018年06月14日 星期四

浏览人次:【6356】
  

第一位搭乘Voyage Auto的无人自动驾驶计程车的乘客是一位名叫Bev的盲人女士。当Bev被问到对於这趟搭乘经验的感觉,她回答她觉得很安全,这趟路程比起其他一些由明眼人所驾驶的车辆,感觉平稳多了。在Voyage,我们希??每一位乘客都能感受到同等的安全度与舒适度。


做为一间与许多正在开发自主驾驶技术的大型机构互相竞争的小型新创公司,我们希??能够尽快进行设计叠代。我们团队的目标之一,就是缩短从白板上发想概念到真正上路之间的时间。


为了达成这项目标,我们专注在让我们的第一台无人自驾计程车可以在小社区营运(图1),并透过多重的设计叠代来精炼设计,我们使用Docker的软体容器来管理系统的相依关系,并使用机器人作业系统(Robot Operating System,ROS)作为认知、动作规划及控制的中介软体,我们也采用MATLAB和Simulink的模型化基础设计流程来取代手动编写纵向控制系统的模型预测控制(model predictive control,MPC)演算法。


就这样,我们在只有三名工程师的团队下,仅仅花了两个月的时间就完成了初步的煞车和加速控制系统。



图1 : 在佛罗里达州Villages社区行驶的Voyage无人自驾计程车。
图1 : 在佛罗里达州Villages社区行驶的Voyage无人自驾计程车。

界定自动驾驶汽车的复杂性

自动驾驶汽车包含了多个复杂的系统来感测周边环境、前往目的地的路线规划、以及方向盘的控制及速度(图2)。环境中包含了交叉路囗、斑马线、圆环、施工、行人、??转、单行道、动物、速限等各种物体和危险因子,更不用说还有其他车辆无法预知的驾驶型态,都为这些系统的设计与实现增添了困难度。



图2 : Voyage自动驾驶计程车系统概观。
图2 : Voyage自动驾驶计程车系统概观。

为了简化控制设计的难度,我们决定将我们的第一辆自动驾驶计程车布署实现在与我们有策略联盟夥伴关系的银发族社区(图3),这些社区不仅已有妥善绘制的地图及清楚的轮廓,也有明确的速度限制,通常是时速25哩(约40公里)。



图3 : The Villages银发族社区的空拍图。
图3 : The Villages银发族社区的空拍图。

借用适应性巡航控制系统为开发起点

首先,我们的团队以最短的时间研究了各种安全实现纵向控制(即速率控制)的方法,後来我们决定使用MATLAB,以其提供的适应性巡航控制(adaptive cruise control,ACC)系统范例(https://goo.gl/1zcWWs)开始,这个范例包含一个Simulink模型,其中使用MPC来实现ACC系统,能够维持设定速度或者与前方车辆之间距离(图4)。



图4 : 适应性巡航控制系统的Simulink模型。
图4 : 适应性巡航控制系统的Simulink模型。

下载了模型并在Simulink执行一些基本的模拟之後,我利用机器人系统工具箱与Simulink-C转码器从模型产生C++程式码,做为一个独立的ROS节点。我们自动驾驶计程车上的所有软体都是模组化的;每一个子系统,包含认知、路线规划和纵向控制等其他,都当作一个ROS节点来执行。在三天之内,我们就已经开始执行自驾车ACC设计的程式码。


从头开始自建模型预测控制器

即使ACC Simulink模型相当具有潜力,它还是无法完全符合我们所有的设计需求。举例来说,车辆在起动及停车时过度颠簸,而且我们发现乘客对於这类的动作格外敏感(计程车乘客不见得会感受到侦测或认知演算法表现如何,但他们可以立即感受到纵向控制运作得好不好)。


我们回到绘图板并从头开始设计一个系统,在白板上按部就班依据第一原理建立一个描述了计程车动作的运动模型。我们在Simulink实现这个运动模型,并把该模型作为控制器设计的基础,接着我们调整MPC模型叁数以符合设计需求,并整合额外的逻辑来掌管原本MPC模型较不擅长处理的特殊状况和情境,像是停车←起动←再开车。


在这些早期开发阶段,我们透过机器人系统工具箱(Robotics System Toolbox)从rosbag log档汇入几十亿位元组(gigabytes)的资料到MATLAB环境中,并过滤掉所有与纵向控制器无关的ROS议题。当资料汇入完成,我们可以像是其他MATLAB变量一般地取得这些资料,让分析与处理变得更容易。


之後我们在Simulink模拟控制模型,确保其输出、油门踏板位置、煞车踏板位置看起来都合理,以及模型运作是否符合我们对於输入目标设置的期待。


进行实车测试

在我们对上述模拟具备足够的信心之後,我们团队自己成为在真正车辆中的第一组乘客,来测试控制器的设计。我们把为了ROS节点重新设计的控制模型,去产生C++程式码,并且在Docker软体容器内把节点转档布署实现到车辆上。Docker让我们可以建立一个具备所有必需的相依关系的生产环境影像,接着持续地在整个开发与测试过程中维持并复制该影像。


在这个初步的车内测试中,我们很快就发现到控制器在加速与煞车太过凶猛,虽然在模拟阶段绘制的图表上,速度变化看起来还算平稳,但实际搭乘的经验却完全不然。这项事实让我们体认到,模型化基础设计能让设计概念快速实现到最後道路测试的重要性,在实验室里面不能完全正确地判断设计品质够不够好,我们还需要像是真正的乘客在车中的真实体验。


我们完成了几个设计叠代,调整许多叁数与限制,包含加速与颠簸的限制,以及时间常数与从MPC更新输出值的频率。我们在Simulink模型设置了ROS叁数,即使是之前从来没有使用Simulink经验的同事,也能够很快地直接透过ROS更新叁数值、校正叁数。


建立虚拟车辆来测试煞车情境

要实际测试像是另外一辆车突然转向我们的车道,这样的驾驶情境是很不安全的,因此我们建立一个新型的ROS节点来模拟一个幽灵屏障也就是虚拟车辆,用来估测计程车与它们之间的各种距离。我们在Simulink建立虚拟汽车并进行叁数化,藉此,我们可以让虚拟车辆进行从零速度开始逐渐加速的动作。我们透过Simulink Coder产生ROS节点的程式码,接着利用节点来测试以及调整控制器的煞车性能;透过这样的方式,这些节点只需要几个小时就能开发出来,我们可以产生计程车前方的虚拟障碍物来看看计程车会如何反应,接下来再进行性能的调整直到它可以安全、平稳地停下来。


实际上路

透过模型化基础设计所开发出来的纵向控制器,现在已经实际运作在Voyage服务的银发族社区的无人自驾计程车之中。我们看到搭乘的需求不断增加,使用量也每周成长了10%。现在我们的工程团队正在学习这些从实际路驾收集到的资料,整合所学,持续地改善控制器的表现。


(本文由??思科技提供,作者Alan Mond任职於Voyage Auto公司)


相关文章
跨出影像分类:更多关於深度学习应用
车联网技术研讨会 预告新汽车革命时代来临
加速业界迈进安全自动驾驶之路
如何透过Simulink进行ISO 26262专案
高精度地图、感测器提供汽车完整视角
comments powered by Disqus
相关讨论
  相关新闻
» 电量使用占建筑物前三大 机房节能智慧化已是必然趋势
» 台达於纽伦堡国际电气自动化展 揭示智能制造蓝图
» 台达於2017工博会展智能制造示范线
» 放弃本位主义 智慧家庭才能成功
» 丹麦风电办公室成立 将培养台湾在地人才
  相关产品
» 宸曜推出工业等级ARM架构的物联网IoT闸道器
» 达明机器人于汉诺威工业展展示内建视觉辨识技术方案
» 艾讯新款3.5吋嵌入式单板电脑轻松建构高阶嵌入式系统
» 艾讯推出新款DIN-rail工业物联网闸道器ICO100-839
» 泓格推出新款1对2埠的EtherCAT节点从站模组

AD