纵向开发用于控制自驾车出租车

作者:Alan蒙德,航程汽车

在第一个乘客乘坐我们的自驾车出租车之一是名为BEV中的盲女。当被问及驱动,BEV说,她觉得安全,使乘坐感觉比一些车辆由有识之士驱动更加顺畅。在航程中,我们希望每一位乘客感到安全和舒适的相同水平。

作为一个小的启动对在自主驾驶技术工作的许多大型企业竞争,我们希望迭代尽快。我们的一个团队的目标是尽量减少探索在白板上的想法和得到这些想法走上之间的时间。为了实现这一目标,我们集中我们的努力,我们的范围界定首先出租车服务在小社区(图1)操作,并通过多次迭代改进我们的设计。我们使用Docker容器管理系统的依赖性和机器人操作系统(ROS)作为中间件的感知,运动规划和控制。而不是手动编码的模型预测控制(MPC)算法纵向控制系统中,我们使用基于模型的设计与MATLAB®和Sim金宝appulink®

我们的三位工程师团队完成了在短短两个月的初始制动和加速控制系统。

图1.航程自驾车在佛罗里达州的乡村社会的道路上出租车。

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

无人驾驶汽车并入多个复杂的系统以感测周围的环境,计划一个路径到目的地,并且控制转向和速度(图2)。复利设计的挑战和实现这些系统中的所有对象和危险的环境中,包括路口,人行横道,回旋处,建筑活动,行人,U型转弯,单行道,动物和速度的限制,更不用提其他车辆的不可预知的驾驶模式。

远航自驾车出租车的图2.系统概述。

为了简化控制设计挑战,我们决定部署我们的战略合作伙伴退休社区第一自驾出租车(图3)。不仅是这些社区以及映射和明确定义的,它们也有设定速度限制,通常为25英里每小时(40公里)。

该村庄退休社区的图3.鸟瞰图。

从而极大发展与自适应巡航控制系统示例

首先,我们的团队研究如何安全地实现纵向控制尽可能快地。我们决定开始与MATLAB自适应巡航控制(ACC)系统示例。此示例包括使用MPC实现能够保持设定速度或从领先金宝app车辆(图4)一设定距离的ACC系统Simulink模型。

自适应巡航控制系统的金宝app图4. Simulink模型。

下载此模型和Simulink中运行一些初步的模拟后,我生成的C ++代码模型与机器人系统工具箱™和Simulink编码器™独立ROS节点。金宝app所有我们的自驾车出租车的软件是模块化的,并且每个子系统感知,路径规划,以及纵向控制,其他人挤兑的ROS节点之一。三天之内,我们都运行在我们的车辆ACC生成的代码。

从地上爬起来创建我们自己的模型预测控制器

虽然ACC Simulink金宝app模型有潜力,但它不能满足我们的所有要求。例如,启动和停止的时候,我们发现,乘客对这种类型的运动特别敏感的车辆太生涩。(在我们的出租车乘客不一定会感觉如何检测和感知算法的工作,但他们会立刻感觉到纵向控制如何工作的。)

我们又回到了绘图板,并从底层向上设计的系统,毫不夸张地去一个白板,并产生描述基于第一原则出租车的运动运动学模型。我们实现了这个运动学模型在Simulink中,用它作为控制器的设计奠定了基础。金宝app然后,我们修改了MPC模型的参数,以满足我们的要求,并纳入额外的逻辑来处理边缘情形和场景,原来MPC模型处理未达最佳的,如停止和去驾驶。

在发展的早期阶段,我们从进口rosbag日志文件千兆字节的数据到MATLAB环境与机器人系统工具箱,并过滤掉对纵向控制不相关的所有ROS话题。一旦导入数据,我们可以像任何其他MATLAB变量,这使得它易于分析,并与工作访问。

我们模拟的控制模型在Simulink中,以确保它的输出,油门踏板位置金宝app和制动踏板位置看起来合理,而模型的表现如我们预期我们的投入目标集。

开展机动车测试

仿真给了我们足够的信心,我们的控制设计尝试一下在车上,我们的团队为第一批乘客。我们生成C ++代码从用于ROS节点重新设计的控制模型和泊坞容器内部署的节点到车辆。泊坞窗使我们能够与所有必要的依赖创造我们的生产环境的图像,然后保持一致地复制整个开发和测试的形象。

在最初的车载测试,这是显而易见的是,我们的控制器用加速度和制动过于激进。虽然我们的模拟过程中绘制的图表显示,看起来像是在速度的平稳变化,实际的驾乘体验是什么,但光滑。认识到这一点强调了我们从概念很快将与基于模型的设计普通道路考试的重要性。我们根本无法判断我们的设计在实验室不够好质量;我们必须把它作为体验我们的乘客会在车上。

我们完成了几个设计迭代,调谐参数和约束,包括加速度和加加速度极限,以及时间常数,并在从所述MPC输出已更新的速率。我们在Simulink模型建立ROS参数,使其更容易为我们的同事金宝app直接通过ROS校准参数。他们可以快速更新的参数值,即使他们与Simulink中没有现成的经验。金宝app

创建虚拟车辆制动测试方案

因为这将是不安全的另一车辆突然转向到我们车辆的车道,我们创建了一个新的类型ROS节点来模拟测试场景鬼屏障-essentially,虚拟车辆,我们可以从出租车不同距离的位置。我们在Simulink中创建这个虚拟车辆和参数,以便我们能够,例如,有金宝app它从零开始的速度和逐渐增加的速度。我们生成的代码与Simulink的编码器的ROS节点,然后使用节点测试和调整控制金宝app器的制动性能。与此节点,其只用了几个小时,要发展,就可能会产生在我们的的士前面的虚拟障碍,看看它的反应如何,然后直到它安全,平稳停止调整它的性能。

在路上

我们采用基于模型的设计开发的纵向控制器在运行中在航程服务于退休社区自开出租车。我们看到需求增加,与每星期的使用增长了10%。我们的工程团队从这些游乐设施中收集的数据中学习,我们将继续通过合并我们学会推敲控制器。

发布时间2018


查看文章为相关行业