马克·塔克,塔塔汽车公司
“英国自动驾驶”(UK Autodrive)是一个雄心勃勃的三年项目,正在米尔顿凯恩斯(Milton Keynes)和考文垂(Coventry)的街道上试验联网和自动驾驶汽车的使用。作为这项工作的一部分,塔塔汽车公司正在开发自动驾驶汽车。自动驾驶试验开始于一个受控的测试轨道环境,然后通过逐渐复杂的城市场景,最终在英国城市的街道上进行。
在本次演讲中,您将了解如何开发自动驾驶汽车所需的复杂控制系统,以及塔塔汽车是如何使用Simulink的万博1manbetx®、Robotics System Toolbox™和Simuli万博1manbetxnk Real-Time™开发用于轨迹规划和运动控制的算法,并将它们部署到自动驾驶车辆中进行测试。
记录时间:2018年10月3日
非常感谢。所以我很快就能搞清我们是谁。你可能听说过塔塔集团。尤其是在印度,这是一个非常大的群体。其实跨国。你可能听说过这里的一些品牌,包括塔塔钢铁、塔塔通信、塔塔莱西。塔塔汽车就是其中的一部分。我们是塔塔汽车的一部分。
所以塔塔汽车在商用车和乘用车方面都是相当大的。正如你们所知,它还拥有捷豹和路虎。我们是塔塔汽车欧洲技术中心的一部分。我们最初的任务是把技术从欧洲带到印度。
所以在印度的乘用车市场上,尤其没有印度本土品牌。他们把技术带到那里,这样他们就可以开发和制造自己的汽车,他们现在就在这样做。他们也得到了更多的进口。所以印度的市场已经发生了很大的变化。但我们是来支持印度的母公司的。万博1manbetx
我们的总部就在考文垂附近。我们有一个工作室。我们有一个设计工作室。我们在大学校园里也有办公室。对于那些去过校园的人来说,我们现在将要搬进左边的新大楼。其实很晚了就在这里。但现在这里将被庄严地命名为全国丰田创新中心。我们将与捷豹路虎、华威制造集团和其他公司分享这一点。
这就是我们。这次演讲将集中讨论自治问题。但我只是想简单地说明ADAS和自主性之间的区别。ADAS,顾名思义,就是在驱动的某些功能上支持驱动程序。万博1manbetx很多这样的功能已经在汽车上实现了。比如自适应巡航控制,车道偏离警告。所以你可以从纵向,横向,和车辆的运动中得到一些额外的帮助。
而自动驾驶汽车更多的是消除驾驶员的这种反应,并接管横向和纵向控制的任务。要做到这一点,它需要感知环境和车辆以便控制车辆。相当高的SAE自动驾驶水平。我知道这篇文章很小,但我很快就看完了。
基本上,前三个层次都与驾驶员和驾驶员协助有关。第一层是驾驶员完全处于控制之中。然后我们进入一级驾驶员协助,其中一些任务被从驾驶员手中拿走。或者他在一些任务万博1manbetx中得到了支持。像自适应巡航控制是否支持车辆的纵向行驶,或者像车道保持辅助,或车道偏离警告,这些都是支持驾驶员的。万博1manbetx这是纵向的。在侧面也是一样的。
当你进入自治区时,我们开始做更多的实际工作,如果你喜欢,处理,以及在特定情况下如何实际做出反应。这里我们真正要讲的是所谓的条件自动化。这是系统接管车辆的情况。但在某些情况下,司机可能会夺回控制权。
随着时间的推移,我们会进入高速公路试点项目或城市试点项目。在这些情况下,飞行器完全处于控制状态。你不需要辅助司机。万博1manbetx但这只是在特定的情况下。非常具体的场景。比如在高速公路上。但这一切都通向第五级,即给予全力支持。万博1manbetx汽车得到了完全的控制。所以不需要开车。而且没有驾驶员控制来接管控制。
另一个很好的例子是停车。我们已经看到了0级。司机完全控制住了局面。然后你就得到了不同程度的支持。万博1manbetx简单的东西,比如环绕视图。然后你就有了各种自动停车功能。最终,这将导致像代客泊车这样的事情,你可能会出现,把车交出来,车自己去停车。这是SAE自动化水平的一个很好的例子。
这一切都是为了达到五级全自动化。现在有一些相当重要的参与者正在关注这个时刻。你可能在新闻上听到过很多关于谷歌和Uber的人。他们都在这方面发展了很多。他们是那种试图把它快速地送到高速公路上的大玩家。我们在塔塔所做的是完全不同的。而我们的定位则更小。我会试着告诉你们我们做了什么以及它的独特之处。
这也是值得为其设定场景的。为什么对自治有如此多的关注?尽管如此,在我看来,这项技术非常有趣。能参与这项工作真是太好了。确实需要一些好处。其中一些关键因素是社会效益。从本质上说,就安全而言,很大比例的车祸——90%的车祸——在某种程度上可以归因于司机。因此,车辆中的驾驶员是最不确定的系统之一。
我知道我们有不同的路况。汽车有各种磨损。但实际上,一辆新车,在良好的条件下,你可以找到一个可以从一个极端到另一个极端的司机。你可能会遇到年老的司机,年轻的司机,你会遇到在某些方面受损的司机。一些能力较弱的人。还有一些人只是对开车有不同的态度。他们更温顺。有些人可能会更激进。
因此,这将有效地,自动驾驶将在这方面创造一个公平的竞争环境。不仅是在安全方面,而且在我们实际如何使用道路方面,这可能会有很大的好处。我稍后会讲到我们在米尔顿凯恩斯做的一些实验。你开车去米尔顿凯恩斯。走M1。我做的事。常常有交通堵塞。停车经常有困难。
如果我们有自动驾驶的车队,其中一些问题就会减少。你如何设置汽车,你可以以某种方式使它们更有效率。比如空气质量。其他正在发生变化的因素;一个关键的问题是,几年前,居住在农村的人口占城市人口的比例发生了变化。因此,人们拥有自己汽车的需求正在改变。所以我住在乡下。没有车,我去不了很多地方。公共交通不是很好。但是越来越多的人生活在城市,那里的要求是不同的。
我们对待汽车的方式也发生了很大变化。因此,汽车拥有量可能会发生变化。在未来,这可能不是一个拥有汽车的问题。有很多人都在说,机动性是一种服务,基本上,如果你想去某个地方,汽车是一种选择或解决方案的一部分,可以把你从一个地方带到另一个地方。
好吧。我们来快速介绍一下英国自动驾驶项目。这在目前是非常重要的,因为我们已经达到了项目的最后阶段,在目前的两周中,我们正在做大量的拍摄和大量的向贵宾展示。这个项目已经运行了好几年。三、四年了。和资助项目一样,这是一个合作项目。在车辆方面,我们有RDM吊舱,你们可能在新闻上看到过。他们围着米尔顿凯恩斯转。你有自动驾驶汽车。我要谈谈我们的自动驾驶汽车。 JLR also got autonomous vehicles in the project.
此外,我们、捷豹路虎和福特都在致力于V2x。这是一种交通工具和交通工具之间以及交通工具和基础设施之间的沟通方式。下面列出了项目中的其他合作伙伴。但这包括来自不同委员会、法律实体等的支持。万博1manbetx但我将更多地集中在技术方面。
让我先检查一下我们的车。这就是我们的飞行器。这是塔塔Hexa。正如我所说,塔塔乘用车主要支持印度市场。万博1manbetx所以你在欧洲买到的车是完全不同的。所以它主要针对印度,在那里价格是一个非常关键的因素。这就是我们生产和销售的汽车类型。所以这个数字没有一些国际卖家那么大,因为市场非常有限。
这是塔塔的一辆车。叫做六边形。在这个特殊的变种中,它是一个六座的。有三排,两个座位。如你所见,我们移除了后排,放入了processing。我将谈谈汽车的四个要素我们改变了什么。其中一个关键因素是感知。所以我们在车上安装了很多传感器。等下再详细讲一遍。
和很多这些自主系统一样,接下来要讨论的一个问题是感知。传感器给我们原始数据。但这些原始数据需要以某种方式进行处理,以便为我们提供一些有用的信息,使我们能够真正使用这些信息——例如,用于探测物体。对物体进行分类,规划路线。从这些原始数据中,我们需要做我们所谓的感知,并提取这些数据。
我们还有一个叫做规划的部分。所以我们现在有了道路和环境的信息。我们需要计划从现在到想去的地方的路线。这有三个阶段。我还会再详细讲讲不同层次的计划。一旦我们有了计划,我们就需要控制飞行器。这是最后一块。这是一个相当高的视角。
有趣的是,我们的团队规模很小。但我们有一些传统的汽车工程师。MATLAB 万博1manbetxSimulink的用户。他们对汽车控制非常熟悉。这是图的右边。但我们也有一些计算机科学家,研究机器人的人,来自伯明翰大学的人,但他们都是基于Linux, c++和Python。
我们有两个不同的领域。它最终分裂的方式是,很多感觉和知觉都是在这些环境中完成的。它们与MATLAB和Simulink在控制和规划中所做的工作相结合。万博1manbetx我会讲一下我们是如何在技术上把它们融合在一起的。也许这样做会有一些问题。
其中一种方法,我应该提一下,是我们系统的关键,我一会儿会详细讲。我们称之为机器人操作系统,它由MATLAB支持。万博1manbetx因此,它是在左边的c++和Python代码以及右边的MATLAB窗口之间进行通信的一种简单方法。我们还使用了一些叫做PTP的方法,这是同步时间的方法。这就是精确时间协议。
这是一个标准。IEEE标准。这也得到了双方的支持。万博1manbetx这是对这两种不同解题方法进行积分的另一种方法。我们用的是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的不同方面,给了我们更好的精度。右边的小图片,你能看到的,不是很清楚。这意味着给出一个点云表示。这就是你可能得到的输出。你可能从一个激光扫描仪得到的原始输出。
这就是我们的传感器套件。就像我说的,我们在后面坐了两个座位,我们在那里放了一个架子。我们有很多过程。所以我们有很多处理,特别是在传感方面,是在这些工业部件中进行的。你们可以看到有四个。这些都是在基于linux的平台上完成的。你还会看到右边的蓝色,那是Speedgoat盒子。这就是我们连接到飞行器的盒子来控制我们的驱动线系统。
在那里你也有像盒子一样的东西融合在一起。例如激光雷达信息。GPS处理器之类的。最后,我们得到了有线驱动系统。所以我们所做的,并没有直接与引擎管理或刹车系统对接。我们所做的就是在上面加一个驱动装置来做驾驶员所做的事情。我把这里放大了一点。我们在转向柱上安装了两个发动机。我们有一个活塞来推动刹车。然后我们绕过电子油门。
我们也有,你可以看到在中间,我们有一个大的紧急停止按钮的盒子。这样司机就能完全控制了。它还提供了一些其他的控制。这里有变速杆,手刹,还有类似的东西。我们还可以控制点火,雨刷,各种辅助设备。因此,当我们构建这个功能时,我们可以将所有这些整合到我们的系统中。
这个系统实际上是基于移动性的解决方案。所以我们去找了第三方。所以有些车,对于那些不能转动方向盘的人,他们会安装一个操纵杆。我们用的是同样的系统。但我们没有操纵杆,我们实际上有一个CAN接口,这样我们就可以控制各种各样的控制。但我们总是可以恢复到全手动驾驶模式,这样我们就可以在站点之间行驶。当我们进行测试时,如果情况出现,我们可以立即恢复。
这是一张很长的幻灯片。我尽量不把它搞得太慢。但是我已经提到了高水平。我们如何感知,如何规划,以及如何控制。这些都是使用这个ROS总线连接在一起的。这个机器人操作系统的想法。所以我真正想要展示的是不同的处理过程从何而来,以及我们是如何组成我们的系统的。
举个例子,前两个是传感器。原始的传感器。可能是激光雷达,或者雷达,或者GPS。Slam放在那里。这实际上是一些已经完成的处理。所以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。万博1manbetx
界面,运动控制器,和Speedgoat显然是在MATLAB Simulink中完成的。万博1manbetx我们也在MATLAB Simulink中做了很多轨迹规划。万博1manbetx但这是嵌入到Linux环境中的。我们已经将MATLAB的Simulink嵌入到实时处理器中。万博1manbetx我们在Linux中混合了MATLAB和Simulink。万博1manbetx我们也有纯Linux进程。
所以我说我只是快速地过一遍规划者的级别只是给你们一些背景知识让你们至少了解一下我们是如何做的。但我相信这是一个相当标准的方法。所以计划分为三个阶段。我们有一个全球规划师。我刚刚画了一张非常简单的地图。这是一张从车站到大学的混凝土地图。这和说,我想从A到B,最好的路线是什么没有区别?这是一个相当高水平的计划。
根据这个高层次的计划,我们可以做行为规划。这就是平面图,然后我们得到了路线的局部地图。我们实际上把它们分成了我们所说的lanelets。每个lanelet也有一些相关的行为。所以标准的行为是保持在车道上。但是我们可能会遇到像左转或在交通灯前停车这样的情况。这些就是我们需要计划去满足的行为。
这些是静态的,因为它们是不变的。然后是战略规划的一部分。还有动态规划需要继续进行,以应对明显的事情,比如障碍变得明显。计划的下一部分是计算出轨迹。所以我们实际上计算了一些候选人的档案。然后我们会选择最合适的。
所以一开始,我们计划一条路径。所以从位置上来说,这是一条空间路径。这就变成了我们所说的轨迹。而轨迹,不同之处在于我们现在有了一些时间信息。实际上,我们已经把它加进去了。我们不仅要在xy位置。我们想要在给定的时间,给定的速度,得到一个位置xy。
从所有的候选轨迹中我们将通过各种标准,各种测试来选择最合适的轨迹。这将涉及到最准确的位置,或避免障碍,最好的舒适性的司机,等等。有很多标准。我在这里列出了一些。然后我将更多地讨论控制。
这些规划算法都是在MATLAB Simulink中完成的。万博1manbetx而是嵌入到Linux中。这些控制算法被嵌入了Speedgoat。我在这里举三个例子。这个项目的前身是我们有一个小型的印度运输工具。它被称为塔塔王牌。他们用铅酸电池给其中一个通电。在之前的项目中这是非常简单的自主测试。这就是所谓的纯粹追求。纯粹的追求基本上是说,我知道我想绕过那个弯道,你选择一个点。 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是相当容易的。万博1manbetx但是有一些,和植入没有太大关系。但更多的是做这个方法,这很有趣。
另一个关键问题。我提到过使用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国家站点没有针对您所在位置的访问进行优化。