学生休息室

分享技术和现实生活中的例子,学生如何在他们的日常项目中使用MATLAB和Simulink # studentsuccess金宝app

掌握自动停车使用仿真软件和活性氧金宝app

今天的帖子马克西米利安Muhlbauer。马克西米利安的自主驾驶主管TUfast生态上赛季,将分享他们的自主旅行2018年壳牌生态马拉松自主UrbanConcept挑战。

- - - - - -

早在2016年,我们开始开发一个速度控制器来帮助司机在我们的效率挑战被证明是非常有用的。优化后端和控制器已经提出了一个赛车休息室视频”巡航控制系统效率的挑战”。

为我们的努力在2018年,我们将下一个大步骤,开发了一个全自动的系统。我们的目标是建立一个完全集成的车辆一个想把日常生活。为了证明我们的方法,我们将仔细看看停车的挑战。

任务是公园标志矩形尽可能接近蓝色块

硬件安装和软件体系结构

我们的汽车中使用的电器元件到目前为止是基于微控制器和低功耗传感器消耗更少的功率比你的智能手机,以最大限度的提高效率。驾驶完全自主,我们显然需要更多的力量和最先进的传感器。

两个激光雷达传感器形式我们的知觉系统的核心为主要挑战是检测跟踪边界和物理对象。广角mono相机为深度知觉对象检测和立体相机安装对对象进行分类。例如,mono相机是用来明确区分的停车块跟踪的边界。超声波传感器补充设置——他们让我们正确地估计小所以操作尽可能近距离5厘米的块停车。

视频muc18传感器:激光雷达,mono +立体相机,超声波传感器

知觉的情况下,我们使用了一个NVIDIA驱动™PX2这是足够动力来处理复杂的处理任务。它也可以有针对性的使用GPU编码器™通货膨胀,我们所做的与我们的入住率网格算法。对于我们的计划和控制系统,我们依赖于dSPACE MicroAutoBox II嵌入式PC。这个盒子包括实时仿真软件来运行我们的目标控制算法和一个标准的PC运行规划算法。金宝app

我们的软件系统是基于ROS。它允许我们分发软件在各种电脑和使用现成的司机。我们的目标是高度模块化的系统能够轻易替代和测试组件。

软件架构

居住的环境模型主要由网格的自由空间确定驾驶。对象检测主要依靠相机数据。使用的算法大大得益于GPU的支持。金宝app

高层和轨迹规划嵌入式PC上运行。状态估计和控制算法在实时µAutoBox上运行。所有部分是为了有效地利用计算资源来保持足够的力量允许进一步发展。

一点我们的设置大大不同于其他系统是我们不使用预构建地图。原因之一是因为我们觉得自主车应该能够完全取代人类司机,驾驶员只有汽车的环境,它可以看到作为输入。我们想要复制依赖从汽车的传感器实时数据。我们的系统应该能够在未知的领域——就像自主导航车必须在复杂的,不断变化的城市环境。这导致“概率”和轨迹生成方法的目标点。我们必须权衡各种因素找到最好的解决方案的规划问题,不知道去哪里。

Simulation-Driven发展

我们的主要目标是执行所有组件的闭环仿真。这是必要的,因为车是尚未建立。另外,像我们构建一个自治系统,与复杂的感知和实时互动,计划和控制太复杂原型硬件上进行测试。

我们选择的方法:一个模拟的感知和规划部分和一个对我们的控制算法仿真。通过这种方式,我们可以显著降低复杂性和运行模拟所需的计算能力。

控制模拟在一个简单的工作方式,我们在模拟取代真正的输入和输出的模型车。这是双轨模型用于模拟我们的效率,延长车辆的内部状态,我们需要自主的逻辑系统。我们可以使用预定义的轨迹来验证控制算法。

一起使用的轨迹,是时间信息的几何路径是一个重要的概念决定。他们不需要挑战的类型执行自治区竞争。然而,在动态环境中,他们是必要的。Collision-checking在这样一个环境中static-path解决方案是不可行的。相反,它需要实时准确位置信息。

组件的轨迹安全停止

产生知觉输入,我们依靠露台,可以模拟各种传感器和出口直接输出ROS的话题。移动车,我们开发了一个插件,将执行轨迹计算。闭环模拟对我们尤其重要,因为动态感知和规划是更加困难比优化算法在静态场景。

在下面的图中,您可以看到我们如何发展我们的规划算法。输入电网规划算法是一个充气的入住率,以前的轨迹和目标点。占用网格是通过闵可夫斯基膨胀扩张与圆的挑战。该算法在MATLAB编程,然后出口到运行在GPU的GPU编码器™。

上述路径的轨迹

然后计算一组可能的目标规划算法在目标点位置和连接他们开始通过多项式。可行的路径然后使用不同的评估指标,如占用网格曲率和可能的碰撞。Non-admissible路径所示红色,curvature-optimal路径用黄色画,最后选定的轨迹是绿色的。

我们开发了一个脚本输入ROS,做计算,然后显示生成的路径和轨迹。这种方式,我们可以看看引擎盖下面的规划算法,看看它将计划做在特定位置。在汽车上运行,算法当然出口到c++代码和编译。

最具挑战性的方面之一,然而,找到目标点是我们没有跟踪的地图。在track-following操作模式中,我们使用了一个扩展版的投影算法来找出我们可以看到最远的入住率的网格。这一点被用作目标点。这里最重要的是找到一个好的体重因素可能处理不准确的测量。我们使用仿真来找到最好的价值。在这里,实现仿真软件ROS节点大大帮助我们:我们可以直接在模金宝app拟调试我们的算法和变化值。

要做到这一点,我们需要放慢速度仿真ROS作为推进慢于实时仿真。这可以通过在仿真软件通过获得ROS时间金宝appROS时间块然后减缓仿真与实时Pacer类似的代码。我们也做整合tf转换树通过使用解释MATLAB仿真期间访问代码rostf对象

一旦汽车已经发现和局部停车,停车块背后的最佳停车位置作为目标点。从这一刻起,汽车开停车s形路径框。这可以看到下面的视频模拟。

视频自动停车在模拟

左视图显示了汽车顶部在仿真环境中移动。左边底部显示了视图的前置摄像头覆盖的感知开始线条和块停车。在右边,rviz显示视图的场景。它包括汽车位置和占用网格一起感知停车块(红色,大点)。目标点(绿线)以及计划轨迹(橙色)和完整的路径(蓝色)也包括在内。完整路径有时消失,因为我们未来的计划然后rviz不是tf变换。

部署和测试

算法足够成熟时,我们开始真正的硬件上测试。实时单元可以直接从我们的笔记本里。休息,我们克隆存储库和构建软件直接在目标硬件。

为我们的模型RO金宝appS节点,我们还需要与ROS集成。现在可以轻松做到这一点时,检查“使ROS时间步进”。用于访问tf树,更多的工作需要完成:我们基本上已经写用户c++代码,我们可以从一个MATLAB函数。当然,“助教”必须被添加到包的依赖。xml和CMakeList-file。

真正的硬件上最大的问题之一是得到一个准确的时间轨迹的正确执行。我们同步相关机器使用网络时间协议(ntp)。实时同步使用单位高优先级消息。我们还必须删除额外延误了我们的模型来支持一个低延迟操作。金宝app只有这样做之后,我们取得了平稳的运动车。

这些事情解决后,计划系统仍然是一个大问题。我们最初有一个方法,认为困难的“占领”与“不占领”占用网格阈值。虽然这在模拟与精确的传感器读数,它没有工作的现实。传感器扭曲如来自问题,这种方法最终将无法找到一条可行的路径。另一个担忧是“被困”案件在一个膨胀的障碍,在最初的算法不会找到出路。

然后我们走回仿真开发更多的概率方法,给入住率只有重量值。一旦我们发现了一个很好的初始设置,我们回到测试跟踪调整值。我们经常停在位置算法之前检查失败,直接在MATLAB如何克服这个问题。最后,这允许我们开发整个规划体系与不少迭代在很短的时间。事实上,我们最后使用的系统开发的竞争,包括测试,在短短四个星期。系统被证明有效的竞争。

另一个问题与缺陷在实际时试图公园尽可能接近停车的块。在模拟过程中,我们得到非常准确的读数的传感器和我们完全知道我们的立场。在现实中,这是更难以实现。因此,我们依靠超声波传感器进行密切的范围和实现了一个从trajectory-following转向位置控制一旦停车块直接感知。这对真正的汽车必须调整,因为停止行为很大程度上取决于制动行为,无法完全建模。

执行最终的测试,然而,在竞争。新的挑战来到停车走下坡路,我们之前从未尝试。这需要更多的制动功率和更早的比在测试过程中我们需要停止。因此,我们不得不再次调整参数,成功完成挑战。

结论

在短短一年的时间,我们建立了一个成功的自主车。当然,这有几个缺点在改装现有的车,最严重的是,前不久我们只能测试竞争。然而,它允许我们建立一个汽车有自主权。我们学会了什么是重要的,我们可以贡献我们的愿景与muc018自主移动的未来。

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。