自主汽车控制算法的塔塔汽车欧洲技术中心加快发展与基于模型的设计

挑战

建立和展示的自主汽车为英国Autodrive项目

使用基于模型的设计建模,模拟,并生成运动规划和车辆控制算法嵌入代码

结果

  • 实时控制器加速实现
  • 简化调试
  • 开发时间集中在设计上

一个工程师小组将一辆自动驾驶汽车与现成的硬件和控制算法结合起来,开发并实现了基于模型的设计。虽然该系统还没有投入生产,但它确实用一种实用的设计方法展示了重要的设计概念。”

马克·塔克博士,TMETC

在英国考文垂测试TMETC的自动驾驶汽车。


在其2013秋季预算声明,英国政府出台措施鼓励自主驾驶汽车在英国的发展。在2014年7月,英国的创新机构,英国创新,推出了“引入无人驾驶汽车英国道路”的竞争。英国Autodrive是获得资金的三个项目之一。该项目汇集了领先的汽车公司,学术机构,立法者,保险公司和其他利益相关者的自驾车车辆和互联的汽车技术的一个为期三年的试验,建立了英国作为研究,开发的全球中心和一体化自驾车车辆及相关技术。

作为英国Autodrive,塔塔汽车欧洲技术中心(TMETC)的一部分,开发自动驾驶软件,并配有现成的,货架驱动线控硬件塔塔六SUV部署它。从TMETC工程师组成的小团队开发的传感器感知,运动规划和车辆控制算法。基于模型的设计与MATLAB®和Sim金宝appulink®启用该团队从设计迅速转移纸上模拟,然后在车辆的嵌入式ECU运行。

TMETC的金宝app首席工程师Mark Tucker博士说:“有了Simulink,我们可以专注于高级设计实现,而不是低级编码。”“这对我们来说很重要,因为我们的目标是交付一辆功能强大的汽车,而不是展示我们的编程技能。”

挑战

该TMETC团队针对一个小工程师团队交付可证明的自动驾驶车辆,同时保证项目按计划和预算。为了实现这些目标,他们依靠现成的,现成的组件在可能的情况并寻找方法来缩短开发时间,核心控制算法。

一个主要的设计挑战是整合系统的许多不同的元素。这些元件包括雷达,激光雷达,GPS,惯性测量,和单声道的视野,以及算法的传感器融合,运动规划,同时定位和地图,和车辆控制。

所有元素之间的通讯都必须被记录下来,以符合英国的规定,尤其是英国交通部(Department of Transport)发布的《无人驾驶汽车的道路:测试实践守则》(The Pathway to Driverless Cars: A Code of Practice for Testing)。团队决定使用机器人操作系统(ROS)中间件来解决集成和日志记录需求。因此,他们编写的算法需要ROS接口,而团队需要一种方法来可视化和分析记录的ROS数据。

安装在自动驾驶车上的车顶传感器。

TMETC的工程师使用的Simulink进行建金宝app模,仿真,并为部署在自治区六的运动规划和车辆控制算法的代码。

提出了三种车辆控制算法:纯跟踪算法、车道保持算法和模型预测控制算法。为了评估每种算法,他们将其与车辆的简单横向和纵向模型集成,并进行闭环仿真。

纯追求的方法缺乏足够的稳定性,车道保持的方法在城市中心的表现相对较差,需要在紧弯和慢速的导航。该模型预测控制器在跨越一系列操作场景的仿真中表现良好。

球队精制横向和纵向模型预测控制器,它使用参考设定点,车辆动态测量,并且车辆动力学的模型,以产生转向,加速最佳的车辆控制序列,并且为了跟随计划轨迹制动。

硬件在中环测试用来检查硬件接口。

TMETC团队使用嵌入式编码器从他们的运动规划算法生成代码®并将其部署到安装在车上的基于linux的PC上。使用Simu金宝applink Real-Time™,他们将车辆控制算法部署到的Speedgoat目标硬件安装在车辆上。

进行了道路测试,期间从ROS数据以及直接从车辆控制器记录数据。使用RViz、MATLAB和Robotics System Toolbox™对数据进行分析和可视化。为了调试和进一步完善控制算法,仿真中通过控制器回放记录的驾驶场景数据。

TMETC成功地证明了在城市道路和基于网格的街道在考文垂和米尔顿凯恩斯英国Autodrive项目的车辆试验的混合物中的自主车型。

结果

  • 实时控制器实现加速。塔克说:“一旦我们准备好对车辆进行测试,我们就使用Simulink Real-Time将车辆控制器部署到Speedgoat硬金宝app件上。”
  • 调试简化。“金宝app的Simulink使我们能够在模拟从路上测试回放数据,”塔克说。“我们可以在任何时候停止模拟,从而可以挖掘到控制模型,看看发生了什么事,解决我们在算法识别的任何怪癖。”
  • 开发时间集中在设计上。“所有的运动规划和车辆控制代码都是由我们的Simulink模型生成的,”Tucker说。金宝app“这节省了我们很多时间,因为我们可以专注于高级设计,而不是实现方程和处理代码中的异常。手工编写我们的控制算法是一个更大的任务。”