塔塔汽车自动驾驶汽车:功能开发和测试
马克·塔克,塔塔汽车公司
英国自动驾驶(UK Autodrive)是一个雄心勃勃的三年项目,正在米尔顿凯恩斯(Milton Keynes)和考文垂(Coventry)的街道上试用联网和自动驾驶车辆。作为这项工作的一部分,塔塔汽车公司正在开发自动驾驶汽车。自动驾驶试验从受控的测试轨道环境开始,然后逐步进入复杂的城市场景,最终在英国城市的街道上达到高潮。
在本次演讲中,您将了解如何开发自动驾驶汽车所需的复杂控制系统,以及塔塔汽车如何使用Simulink®机器人系统工具箱™和Simulink Real-Time™开发轨迹规划和运动控制算法,并将其部署到自动驾驶车辆中进行测试。
记录日期:2018年10月3日
非常感谢。我很快地介绍一下我们是谁。你可能听说过塔塔集团。尤其是在印度,这是一个非常大的群体。它实际上是跨国的。你可能听说过这里的一些品牌,包括塔塔钢铁、塔塔通信、塔塔莱西。塔塔汽车就是其中之一。我们是塔塔汽车公司的一部分。
塔塔汽车公司在商用车和乘用车方面都是相当大的。你们很多人都知道,它还拥有捷豹路虎。我们是塔塔汽车欧洲技术中心的一部分。我们最初的任务是把欧洲的技术带到印度。
因此,在印度乘用车市场上,没有本土品牌。它在那里获得技术,这样他们就可以开发和制造自己的汽车,他们现在正在这样做。他们也得到了更多的进口。所以印度的市场已经发生了很大的变化。但我们是去印度支持母公司的。
我们的总部设在考文垂及其周边地区。我们有一个车间。我们有一个设计工作室。我们在大学校园里也有办公室。如果你们曾经去过校园,我们现在要搬进左边的新大楼了。它实际上在这里很晚。但现在这里将被隆重命名为国家丰田创新中心。我们将与捷豹路虎、华威制造集团以及其他参与者分享这一成果。
这就是我们。这次演讲的重点是自主性。但我只是想简单地介绍一下ADAS和自主之间的区别。ADAS,顾名思义,它的意思是支持驾驶员在驾驶的一些功能。很多这样的功能已经可以在汽车上使用了。比如自适应巡航控制,车道偏离警告。所以你可以在车辆的纵向,横向和运动上为驾驶员提供额外的帮助。
而自动驾驶汽车更多的是消除驾驶员的一些反应,接管横向和纵向控制的任务。为了做到这一点,它需要对环境和车辆进行感知,以便控制车辆。相当大的SAE级别的自主。我知道这段文字很短,但我很快地过了一遍。
从本质上讲,前三个级别都与驾驶员和驾驶员辅助有关。所以第一级是关于驾驶员完全控制的。然后,我们进入一级驾驶员辅助,其中一些任务将从驾驶员手中夺走。或者他在某些任务上得到了支持。比如自适应巡航控制是否支持车辆的纵向行驶,或者车道保持辅助,或者车道偏离警告,这些都在支持驾驶员。这是纵向的。横向也是一样的。
当你开始进入自治区,那就是我们开始做更多实际工作的地方,如果你喜欢,处理,以及如何在特定情况下做出实际反应。所以我们真正得到的是所谓的条件自动化。这是一个系统控制车辆的例子。但是,在某些情况下,司机应该会收回控制权。
当你继续前进时,我们会进入我们所谓的高速公路试点或城市试点。在这些情况下,车辆完全受控。你不需要辅助司机。但这只是在特定的情况下。非常具体的场景。例如,就在高速公路上。但这一切都通向第五级,在那里给予全面的支持。汽车被完全控制。所以不需要开车。而且没有司机控制来接管控制。
另一个很好的例子是停车。显然我们已经看到了零级。司机完全控制着一切。然后你给车手提供了一些非常不同的支持。简单的东西,比如环视。还有各种自动停车功能。最终,这将导致像代客泊车这样的事情,你可能只需要出现,把车交出来,然后车自己去停车。这就是SAE自动化水平的一个很好的例子。
这一切都是为了达到五级全自动。现在有一些非常重要的参与者正在观望。你可能在新闻中听说过很多关于谷歌,Uber的人。他们在这方面都有很大的进步。他们是那种试图将其迅速推向高速公路的大玩家。我们在塔塔所做的是完全不同的。我们的市场比这更小众。所以我会试着告诉你们我们做了什么以及它的独特之处。
它也值得作为背景。为什么人们会如此关注自主?综上所述,在我看来,这项技术非常有趣。能做这件事真的很棒。确实需要一些福利。其中一些关键因素是社会效益。从本质上讲,就安全而言,很大比例的碰撞——90%的碰撞——可以在某种程度上归咎于驾驶员。所以司机,实际上在一辆车里,是最不确定的系统之一。
我知道我们的路况不同。汽车会有各种各样的磨损。但实际上,在一辆新车上,在良好的条件下,你可以得到一个可以从一个极端到另一个极端的司机。你可以让老司机,年轻司机,你可以让那些在某种程度上受损的司机。有些人的能力较弱。有些人只是有不同的驾驶态度。他们应该更加温顺。有些人可能更激进。
所以这将有效地-自动驾驶将在这方面创造一个公平的竞争环境。不仅是在安全方面,而且在我们如何实际使用道路方面,这可能是巨大的好处。我一会儿会讲到我们在米尔顿凯恩斯做的一些试验。你开车去米尔顿凯恩斯。沿着M1公路走。我做的事。经常堵车。停车经常有困难。
如果我们拥有自动驾驶的汽车车队,其中一些问题将会减少。你如何设置这些车,你可以在某种程度上让它们更有效率。比如空气质量。其他正在变化的因素;一个关键的问题是,几年前,农村人口向城市人口的比例发生了变化。因此,人们拥有自己的汽车的需求正在发生变化。所以我住在农村。没有车我去不了很多地方。公共交通不是很好。但越来越多的人生活在城市的要求是不同的。
我们对待汽车的方式也发生了很大变化。所以汽车所有权可能会改变。在未来,这可能不是一个拥有汽车的问题。很多人都说出行是一种服务,如果你想去某个地方,汽车是你从a地到B地的一个选择或解决方案的一部分。
好的。我想快速讲讲英国自动驾驶计划。这是非常相关的,因为我们已经到了项目的最后阶段,在目前的两周内,我们做了大量的拍摄和大量的演示给vip。这个项目已经运行了几年。到现在已经三四年了。和其他资助项目一样,这是一个合作项目。在车辆方面,我们有RDM吊舱,你可能在新闻上看到过。他们围着米尔顿·凯恩斯转。你有自动驾驶汽车。我要讲一下我们的自动驾驶汽车。 JLR also got autonomous vehicles in the project.
此外,我们、捷豹路虎和福特也一直在研究V2x。这是一种车辆与车辆以及车辆与基础设施之间的通信方式。下面列出了该项目的其他合作伙伴。但这包括来自不同委员会、法律实体等的支持。但我将更多地集中在技术方面。
让我先看看我们的车。这就是我们的交通工具。这是塔塔Hexa。正如我所说,塔塔乘用车主要支持印度市场。所以它们和你在欧洲买到的车很不一样。所以它主要针对印度,因为价格是一个非常关键的因素。这就是我们生产和销售的车型。所以这些数字不像一些国际卖家那么大,因为市场非常有限。
这是塔塔的一辆车。它叫做Hexa。在这种特殊的改型中,它是六座的。它有三排两个座位。如你所见,我们已经把后排移走了。所以我将从我们改变的角度来谈谈这辆车的四个元素。其中一个关键是感知。我们在飞行器上安装了很多传感器。稍后再详细讨论这些内容。
和很多这些自主系统一样,接下来要讨论的一个问题是感知。所以传感器给我们原始数据。但原始数据需要以某种方式进行处理,以提供一些有用的东西,例如,用于探测物体。对物体进行分类来规划路线。从这些原始数据中,我们需要做所谓的感知,并提取这些数据。
然后我们有一个块,叫做计划。所以我们现在有关于道路和环境的信息。我们需要规划好从现在到我们想去的地方的路线。有三个阶段。再说一次,我将更详细地介绍不同层次的规划。一旦我们有了计划,我们就需要控制飞行器。这就是最后一块了。这是飞行器的一个相当高的视角。
有趣的是我们的团队规模很小。但是我们有一些传统的汽车工程师。MATLAB Simulink的用户。他们对汽车控制非常熟悉。这是图的右边。但我们也有一些计算机科学家,研究机器人的人,他们来自伯明翰大学,但主要基于Linux、c++和Python。
这是两个不同的区域。它最终分裂的方式是很多感知和知觉都是在那些环境中完成的。它们与MATLAB和Simulink中所做的工作进行了交互控制和规划。我会讲一下我们是如何在技术上把它们合并在一起的。这样做可能会有一些问题。
我要提一下,把这些结合在一起的方法是我们系统的关键,我一会儿会详细讲。使用的是我们所说的机器人操作系统,由MATLAB支持。因此,这是一种在左边的c++和Python代码和右边的MATLAB窗口之间进行通信的简单方法。我们也使用一些叫做PTP的方法,这是我们同步时间的方法。这就是所谓的精确时间协议。
再说一次,这是一个标准。IEEE标准。两边都有支持。这是我们把这两种不同解题方法结合起来的另一种方法。我们用的是CAN。我提到它是为了完整性,因为这是我们最终与飞行器整合的方式。简单地提一下一些传感器。我没有最好的汽车和传感器的最好的照片。但实际上,我们有很多雷达。短程和远程。 We've got laser scanners. We've got what they're calling 2D laser scanners. So we've got six of those positioned around the car. And they give about 130 degrees of field of view.
所以如果你把它们合并在一起,你会得到一个360度的飞行器。我们还有360度激光雷达。所以它们是完全旋转扫描的。在屏幕的左边可以看到。我们有一些相机供参考。我们还安装了车道探测和物体探测摄像头。我们还有GPS。你可以在屏幕中间看到一根天线。有点像圆盘。
有两个,两个天线。一个前前后后,给我们指明方向。我们也有来自基站的信息,给我们GPS的差异方面,给我们更好的精度。右边的小图片,你能看到的,不是很清楚。这是为了给出一个点云表示。这就是你可能得到的输出。你可能从激光扫描仪得到的原始输出。
这就是我们的传感器套件。就像我说的,我们在后面的两个座位上,放了一个架子。我们有很多过程。所以我们有很多处理,特别是在传感方面,是在这些工业部件中进行的。你可以看到这里有四个。这些都是在基于linux的平台上完成的。你也会看到右边的蓝色,那是Speedgoat盒子。这是一个盒子,我们连接到汽车来控制我们的有线系统。
在这里你还可以看到融合在一起的盒子。例如激光雷达信息。GPS处理器之类的。最后,我们有了有线驱动系统。所以我们所做的是,我们没有直接与引擎管理或刹车系统对接。我们所做的就是把驱动器放在一个覆盖层上来完成驱动器的工作。我放大了一点。我们有两个马达在转向柱上。我们有一个活塞来推动刹车。然后我们绕过电子节流阀。
我们还有,正如你们在中间看到的,我们有一个带有大紧急停止按钮的盒子。这样就把完全的控制权交还给了司机。它还提供了一些其他的控件。它有换挡装置,手刹之类的。我们还可以控制点火,雨刷,各种辅助设备。所以当我们构建这个功能时,我们可以把所有这些都整合到我们的系统中。
这个系统实际上是基于移动解决方案的。所以我们找了第三方。对于那些不能转动方向盘的车,他们会安装操纵杆。我们用的是同样的系统。但我们没有操纵杆,而是有一个CAN接口,这样我们就可以控制各种控制。但我们总是可以恢复到完全手动驾驶模式,这样我们就可以在站点之间驾驶。而且,当我们在测试时,如果出现这种情况,我们可以立即恢复。
这张幻灯片很长。我会尽量不慢的。但我已经提到了高层次。我们如何得到感知,规划,然后控制。这些都是通过ROS总线连接在一起的。这个机器人操作系统的想法。所以我真正想要展示的是不同的处理方式,以及我们是如何组成我们的系统的。
举个例子,这是前两个传感器。原始传感器。可能是激光雷达,雷达,或者全球定位系统。砰的一声放在了那里。这实际上是一些已经完成的处理。SLAM代表同时定位和映射。这就是一个对象被检测到的地方,因此你可以有效地停止创建这些对象所在位置的地图。但与此同时,你也本地化了自己相对于那些对象。所以这是一个创建地图和根据地图定位自己的同时过程。
这是一个很好的技巧。但这是通过激光雷达数据来完成的。然后进入ROS总线。然后我们会把其中的一些信息放到不同的过程中。这里,我们讨论的是传感器融合。传感器融合,我们有很多好处。在这种情况下,我们在雷达上使用传感器融合。抱歉,是激光雷达。环绕汽车的六个传感器融合在一起,就像一个传感器一样。但是你的传感器融合给你一些冗余的元素,或者实际上在某种程度上可能获得一些协同作用。 You might use a radar to give you good range information. You make of a video image to give you good lateral information. You could fuse those together to give you a much better picture of where an object is.
我们已经在进行传感器融合。我们有点云处理。这就是我们从激光雷达得到所有点的地方。我们得到了很多点,因为在360度激光雷达上,我们说需要处理30万个点才能得到一些有用的信息。但是处理继续进行,信息可以返回到总线。
我们有各种各样的规划功能。现在我将更多地讨论不同的规划功能。但本质上,它有三个阶段。这是全局,行为计划器,然后是轨迹计划器。这些也利用了一些离线的流程图。所以我们提前为这个应用程序创建了一个映射。还有一些效用函数。我们有各种屏幕直接与ROS总线连接。我们有控制gui。有一个很好的软件叫Arvis,我认为这是一个免费的软件。 But basically on that you can layer up different information from different sensors. So you can visualize what's actually being detected as you go along.
我们也有看门狗。因此,这是我们车辆的额外安全功能,我们用它来检测系统中的任何故障。并将控制恢复到适当的驱动程序。我们得到的一件事是从ROS总线获取信息。现在Speedgoat盒子是一个基于windows的盒子。或者说是基于dos的盒子。ROS目前是一个基于linux的盒子。所以我们不能直接用它。ROS也可以移植到基于dos的系统上。希望我们可以利用它。 And ROS too will hopefully also have real-time capability.
但目前我们还不能这么做。我们有了另一个接口我们称之为ROS桥接。所以它需要罗斯的信息。或者它读取,直接发送回扬声器,就在那里。这就是我要说的。比如ROS。它实际上是一个中间件。实际上所有这些都是通过以太网进行通信的。ROS桥也是一样。我们将把以太网直接接入扬声器。
我们最后的控制是把我们想要的控制带到我们的有线驾驶系统。这又回到了更传统的摄像机。这就是我们得到的方程组。我想强调一下我们是如何使用ROS将所有东西连接在一起的。另一件事是,它有点像软件的混合体。
我们得到了蓝色盒子的轮廓。我们已经在很大程度上接受了这些函数。绿色的部分,其实是我们自己做的。但是我们已经在Linux和c++中做过了。紫色表示的是MATLAB和Simulink。
这个接口,运动控制器,以及Speedgoat我们都是在MATLAB Simulink中完成的。我们也在MATLAB Simulink中做了很多轨迹规划。但是它被嵌入到Linux环境中。我们已经把极端的纯MATLAB Simulink嵌入到实时处理器中。我们在Linux中混合了MATLAB和Simulink。我们也有纯Linux进程。
我说过我只是快速地过了一遍计划器的各个层次只是给你们一点背景知识,至少我们是怎么做的。但我相信这是一种相当标准的方法。计划分为三个阶段。我们有一个全球规划师。我画了一张非常简单的地图。这是从车站到大学的混凝土地图。这就好比说,我想从A到B,哪条路线最好?这是一个相当高水平的计划。
从这个高级计划开始,我们就开始做我们所谓的行为计划。这实际上是一个计划然后我们得到了路线的本地化地图。我们实际上已经把它们分成了我们所说的细线。每个小网格都有一些相关的行为。所以标准的行为是保持在车道上。但我们可能会遇到像左转或在红绿灯前停车这样的情况。这些就是我们需要计划去满足的行为。
地图上的那些我们称之为静态的,因为它们是不变的。然后是战略规划的一部分。对于明显的事情,比如障碍变得明显,也需要进行动态规划。计划的下一部分是计算出轨道。所以我们实际上计算了一些候选配置文件。然后我们会选择最合适的。
首先,我们规划一条路径。就位置而言,这是一条空间路径。这就变成了我们所说的轨迹。而轨迹,不同的是我们现在有一些时间信息。实际上,我们现在把它加进去了。我们不仅要在位置xy。我们想要在给定时间,给定速度下的位置xy。
从所有这些候选轨迹中我们会把它们放到各种标准中,各种测试中选出最合适的一个。这将涉及到最准确的位置,或避开障碍物,为司机提供最佳舒适度,等等。有很多标准。我在这里列出了一些。然后我将讨论更多关于控制的内容。
这些规划算法是在MATLAB Simulink中完成的。而是嵌入到Linux中。这些控制算法被嵌入了快羊。我只是举了三个例子。这个项目的前身是我们有一个小型的印度运载工具。它被称为塔塔王牌。他们用铅酸电池给其中一辆充电。在之前的项目中,这是非常简单的自主测试。这就用到了所谓的纯粹追求。纯粹的追求基本上是说,我知道我想绕过那个弯道,你选一个点。 And you basically steer to that point, and you keep updating it. That's fairly simple. It does have some limitations. You've got to be careful in terms of the tradeoff between accuracy and stability. But that's a very simple one. For low-speed maneuvering, that's absolutely fine.
你可以比较一下,如果你喜欢被拖在一个很长的拖杆上。如果你们中有人有过租拖车和马厩的经历,你们就会知道这种情况非常相似。它并不总是稳定的。所以你必须有效地选择你的前视点来匹配。有效匹配你的速度。所以你的速度越快,你就越需要寻找稳定性。但这意味着你最终会走捷径。所以这是有局限性的。
另一种方法是车道保持。在这里,你可以看到前方的轨迹,然后画出一条曲线。如果你在这种情况下拟合一个简单的二次方程,这个二次方程的系数很优雅地给了你一个在车道上的位置。你的头在你的车道上。给出了曲率的函数。这些可以直接用于简单的控制回路。所以你可能在不同的控制回路上有一个简单的比例增益。
这对于高速公路上的车道保持应用非常有用。特别是你速度更快,这很好。所以当曲线很浅的时候。轨迹跟踪是我们实际使用的方法。这是基于模型预测控制方法的。我们使用MATLAB的工具箱。我在这里展示的是这个模型是非常关键的。我们嵌入的模型是我们如何实际实现性能的关键。这些只是展示高层次的模型。
实际上,我们在中间使用的模型,这是实际的实时实现。但我们在离线模拟中使用的模型,也在回放数据中使用。因此,在不同的数据位上使用相同的模型进行分析和测试是非常好的。
如果之后有人想和我谈谈,我有一些关于模型预测控制器设计的有趣评论。我想马克今天下午会讲话。他也会看这些。我发现了一个有趣的技巧。用MATLAB Simulink很简单。但是有一些,和植入没有太大关系。但更重要的是方法,这很有趣。
另一个关键问题。我提到过使用PTP。精确时间协议。我们发现的一个关键问题是,因为你有很多工作流程,我们得到了很多数据。它们都以某种形式老化了。我们没有一个时间戳,所有的东西都在这个时候发布。所以我们不知道。所以有效的ROS总线,你得到一个与数据相关的时间戳。我在底部展示的图表显示了系统中不同的信息。你会有很多不同的延迟。 They vary. They're fairly cyclical. But they do vary. And so to correct for time delays, which is quite a problem, we've had to use PTP. And then feed that into the algorithms.
数据记录和可视化也是非常关键的。所以我们在做这些测试。我们正在做所有这些模拟。但实际上,为了能够可视化这些算法的工作效果意味着我们必须创造一些新的可视化方法。很明显,就像左边一样,我们会得到GPS轨迹,并将它们覆盖在地图或卫星图像上。但是在右边,我们发现实际上如果你在这种情况下叠加,你的速度轨迹图你可以看到你的计划速度轨迹与实际速度轨迹的比较。
在这种情况下,左边黑色的部分是实际的。绿色是我们想要的。你可以看到它们很匹配。它只是有代表性的。它不能给出确切的结果,因为在任何时间点,轨迹都可能因为障碍物的出现而改变。因此,你可能想要做一些不同的事情。但它能很好地体现出你做得有多好。所以我们设计这些工具主要是为了离线。
听马克之前说的话很有趣。如果这些可以成为在线工具,它们将对我们更有帮助。这里有更多的可视化工具。下面是Arvis的作品。点云处理。所有这些都是我们系统中不同的元素。在某种程度上,有些人在快羊号上。如果它们能在线上和线下结合起来,那将是特别有用的。
我试着从我们一直在做的各种测试中选择一些有趣的部分。这是去年年底考文垂做的。还有一些是在米尔顿凯恩斯。目前,我们正在进行拍摄。今天,我来到了这里。但是BBC在拍我们。所以在接下来的几天里我们可能会在新闻上看到这些。
左转时,你可以看到这面明显的镜子。在右转的时候被夹住了。对此我深表歉意。但我的工作不是电影剪辑师。我只是想展示一些它实际运行的片段。开始这个函数的开发。但最终,我认为我们采取了务实的方法来开发一些自动驾驶汽车的功能,这一点非常突出。我们是一个非常小的团队。所以我们使用了现成的工具。我在这里列出了一些。
现成的硬件。并且在适当的情况下使用定制的第三方软件。一些关键的算法是我们自己做的。这就是把它和ROSS, PTP,规划算法,和控制算法结合在一起的原因。
带着一个小团队离开,说声谢谢。这里提到了几个名字。我也从詹卡洛那里得到了一些帮助。特别是这次演讲。所以我要为此感谢他。我知道我没让你吃午饭。但如果你愿意留下来提出任何问题,我很乐意回答。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。