在上节课中, 我们推导出纯追踪控制器, 一种几何路径跟踪控制器,定义为 基于前瞻参考点的转向输入。 在本课中, 我们将介绍 第二个几何路径跟踪控制器:Stanley控制器。 此控制器被 斯坦福赛车队用来赢得第二次Darpa Grand Challenge赛事。 具体来说,在本视频中, 您将推导出Stanley几何控制器, 分析其转向命令对于小误差下和大误差下的演变, 并评估控制性能 以从任意启动条件收敛到所需路径的形式 让我们开始吧。

Stanley控制器是 一种几何路径跟踪控制器,它简单 但对机器人和自动驾驶车很有用。 这种方法最初是由加布·霍夫曼开发的 他是我在斯坦福的实验室同事, 作为他对获胜团队的贡献, 并以车辆Stanley的名字命名。 创建Stanley控制器的主要概念是 参考位置的改变可能导致控件的不同, 可能会有更理想的属性。 霍夫曼博士正在寻求一种控制律,其全局收敛 路径和可预测的误差衰减与车速无关。 因此,有一天,灵感来了, 霍夫曼博士将用于控制器的车辆参考点切换到前轴的中心, 而不是CG或 后轴,以了解这个新控制器的行为方式。 他添加的下一个修改是在考虑 在没有前瞻距离的情况下,航向对齐和交叉航迹误差, 而是直接在参考点。 最后,Stanley控制器将其输出 限制在最大转向角的范围内。 在所有这三个考虑因素中形成了最终控制法的基础。

让我们定义Stanley控制器的每个术语。 在此图表中,你可以看到 通过Stanley假设,对相关术语进行了轻微修改。 交叉轨道误差定位为相对于前轴, 路径的参考点并没有和前瞻距离相关联。 让我们对Stanley控制器的三个组件中的每一个定义更加具体。 首先,为了消除相对于路径的航向误差, 将转向角直接设置为等于航向。 然后,为了消除交叉跟踪误差, 增加了比例控制, 其增益通过前向速度的倒数进行缩放。 然后控制器通过反tan函数, 该函数将比例控制信号映射到-π到π的角度范围。 最后,转向角指令保持在 最小和最大转向角度 δmin 和δ max之间, 它们通常对称于0。

与纯追踪控制器的相似性并不令人惊讶, 因为两者都试图执行相同的操作,通过相同的运动模型。 Stanley控制增加其增益,通过 前向速度,这种方式与纯跟踪控制相同, 并且还具有与比例控制信号相同的反正切。 然而,对航向和交叉跟踪误差的独立惩罚以及 消除前瞻距离上 和纯跟踪控制方法不同。 最终控制律简单地 将这三个元素组合起来,以如下方式设定汽车的转向角。 现在让我们来看看不同误差信号所需的转向角。 对于航向误差,转向命令指向 与航向误差相反的方向, 以用来纠正车辆转向与路径的错位。 对于大航向误差,例如, 如果航向误差超过最大转向角, 则控制器的这一部分请求 最大转向命令,直到对齐回落到可用范围内。 对于大的正交叉航迹误差, ke/vf 变大,反正切值接近π/2. 因此我们可以将Stanley控制律近似为航向误差加上π/2. 这个大值将钳位转向命令到 最大值,使得车辆向路径进行转向。 这个术语的作用是增加相反方向的航向误差, 并且,转向命令将会下降到 零,一旦航向误差达到-π/2。 然后车辆直接前进到路径,直到交叉航迹误差减小。 此时,航向项开始 再次校正与路径的对齐,最终, 车辆开始更紧密地跟踪路径。

但是这个控制如何实际收敛到路径? 事实证明,可以使用 我们的表达式,定义叉轨道空气动力学, 在本模块的第一个视频中,以了解 Stanley控制器的收敛特性。 回想一下,前轴参考点的交叉轨道误差的变化率 等于-1*前进速度 乘以航向的正弦减去转向角。 如果我们无限制地替换Stanley控制律, 我们在这个等式中得到最终表达式。 使用三角恒等式简化tan的逆的符号, 我们可以发现交叉轨道误差的变化率等于 -1乘以增益k乘以交叉轨道误差 除以(1+ke/vf的平方)的平方根 对于小的交叉跟踪误差, 我们可以简化表达式的分母 通过假设二次项可忽略不计。 这可以得到 交叉轨道误差演变遵循一阶微分方程, 并且该ODE的解是指数的。 由于k是正的, 我们看到误差以指数方式衰减到0。 这项研究中最有趣的方面是 衰减率与速度完全无关。 因此,更快的车辆会在收敛到路径的同时更远地行驶, 但会在行驶速度较慢的车辆的同时收敛到路径。

现在让我们深入探讨Stanley控制器的误差动态仿真示例, 以观察其收敛特性。 在这个例子中,让我们看看两个极端情况, 大的初始交叉轨道错误和大的初始航向误差。 第一个 对于较大的初始交叉航迹误差, 假设初始交叉航迹误差为5米, 并且最大允许转向角为 25度,前进速度为每秒5米。 为简单起见,我们将车轮底座长度设置为1米, 增益k将设置为2.5。 是根据所选模拟参数 和一些试错测试选择的。 模拟显示了Stanley控制器如何校正 大的交叉轨道误差并收敛到所需的路径。 较大的初始误差导致 大的转向命令,车辆快速转向路径。 然后,航向误差和交叉航迹误差项达到平衡, 并且车辆沿着直线朝向路径继续。 随着交叉轨道误差减小, 路径的指数衰减变得可见。 最后,车辆在模拟的最后阶段安全地跟踪路径。

我们也可以在不同的前进速度下运行相同的模拟。 所以,让我们尝试 2m/s、5m/s和10m/s。 结果显示了Stanley控制器的主要特征。 在所有情况下,转向路径, 直线进展然后指数衰减到路径是可见的。 速度越高, 汽车在到达路径之前行进的距离越远。 但是,最终的收敛 在小的交叉跟踪误差是在相同的时间中,就每种情况而言。

在第二种情况下, 可以在较大的初始航向误差情况下为场景重新生成模拟。 参数与前一种情况相同,但车辆 开始时路径指向错误的方向。 仿真结果表明航向误差由Stanley控制律修正。 首先,当校正航向误差时,转向命令与其极限相反。 然后,当交叉轨道误差开始增大时, 转向命令继续校正 汽车的航向超出与路径的对齐。 最后,汽车像以前一样进入指数收敛段。 这些仿真结果使我们很好地了解 Stanley控制器纠正任意大错误的能力。

实际上,它具有全局稳定性证明, 这意味着无论初始条件如何, 控制器都会引导汽车返回其路径。 然而,在实践中,斯坦利控制器 仍然是几何路径跟踪控制器, 因此不考虑真正的自动驾驶汽车的许多不同方面。 例如,它不考虑噪声测量, 执行器动力学或轮胎力效应, 所有这些都会在操纵期间引起不期望的行驶特性。 但是,可以 几何路径跟踪控制器进行一些调整, 以帮助减轻这些最不希望的影响。 在低速运行期间,纯追踪和斯坦利控制器会 在遇到噪声速度估计时会表现得非常积极。 由于速度项在反正切内的分数的分母中, 因此低速估计中的误差倾向于在转向命令中被放大。 这导致方向盘的剧烈摆动, 这对于驾驶员的舒适性来说是不希望的。 因此,为了摆脱这个问题并在低速下提高解决方案的稳定性, 我们添加了一个正的软化常数, 以确保分母始终具有最小值。 该软化常数可根据现场情况调整。 在更高的速度下,我们遇到的问题是转向指令需要 缓慢变化以确保侧向力不会过大。 即使有这种速度缩放, Stanley在高速时反应也过于激进, 因此也增加了航向率的阻尼项。 这实质上将航向误差控制部分转换为PD控制器, 并且同样的想法也可以应用于曲率的纯追踪控制。 最后,对于具有高曲率的弯曲路径, 控制器无法很好地跟踪它们,因为 在几何控制器的推导中没有考虑参考动力学。

我们在纵向控制中看到,增强 性能和使得误差更快速收敛到0, 可以通过向控制器添加前馈项。 在这种情况下, 只需包括转向角度就足够了 用来保持所需路径的曲率所需的。 通过这些修改, Stanley控制器成为一个有用的工具 对于适度驾驶任务, 只要车辆避免离开线性轮胎区域。 我们将更多地研究定义安全的跟踪路径, 在这个专业的第四个课程中。 在本课中, 您学习了如何应用 Stanley控制器为几何路径跟踪控制器, Stanley控制器的收敛属性以及 如何添加进一步增强功能以提高控制器的实际性能。

在下一视频中, 我们将介绍模型预测控制方法和 基于模型的高级控制方法,可以克服 几何控制器的许多局限性。下节课见。

第 3 课补充阅读:几何横向控制 - Stanley

补充阅读:几何横向控制 - Stanley
要了解有关 Stanley Control 的更多信息,请查看下面列出的 PDF:

Snider, JM,“自动驾驶汽车路径跟踪的自动转向方法”,机器人研究所,卡内基梅隆大学,匹兹堡(2009 年 2 月)。https://www.ri.cmu.edu/pub_files/2009/2/Automatic_Steering_Methods_for_Autonomous_Automobile_Path_Tracking.pdf。

Automatic_Steering_Methods_for_Autonomous_Automobile_Path_Tracking.pdf

Hoffmann, G. 等人,“用于越野驾驶的自主汽车轨迹跟踪:控制器设计、实验验证和赛车”,斯坦福大学,(2007 年)。http://ai.stanford.edu/~gabeh/papers/hoffmann_stanley_control07.pdf

用于越野驾驶的自主汽车轨迹跟踪 - 控制器设计、实验验证和赛车.pdf

参考

https://www.coursera.org/learn/intro-self-driving-cars/lecture/bJoWh/lesson-3-geometric-lateral-control-stanley

自动驾驶 6-3 几何横向控制 - Stanley Geometric Lateral Control - Stanley相关推荐

  1. Apollo自动驾驶入门课程第⑩讲 — 控制(下)

    目录 1. 线性二次调节器 2. 模型控制预测 3. 总结 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 昨天 Apollo自动驾驶课程马上进入尾声,在无人驾驶技 ...

  2. Apollo自动驾驶入门课程第⑨讲 — 控制(上)

    目录 1. 简介 2. 控制流程 3. PID控制 4. PID优劣对比 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 9月26日 上周我们发布了无人驾驶技术的  ...

  3. 自动驾驶汽车的规划与控制

    1. 概念与意义 自动驾驶汽车作为一个复杂的软硬件结合系统,其安全,可靠地运行需要车载硬件,传感器集成.感知.预测以及规划控制等多个模块的协同配合工作.感知预测和规划控制的紧密配合非常重要.这里的规划 ...

  4. 使用 Carla 和 Python 的自动驾驶汽车第 2 部分 —— 控制汽车并获取传感器数据

    欢迎来到 Carla 自动驾驶汽车教程系列的第 2 部分.在本教程中,我们将向您介绍 Carla 的 Python API 方面. 首先,Carla 中有几种类型的对象: world:这是你的环境: ...

  5. [自动驾驶系列一]Introduction to Self-Driving Cars

    Introduction to Self-Driving Cars Module 1: The Requirements for Autonomy Lesson 1: Taxonomy of Driv ...

  6. 关于自动驾驶车辆控制

    目录 1. 本文目的 2. 自动驾驶中控制原理 2.1 控制在自动驾驶中的位置 2.2 控制的数据流 3. 汽车控制模型 3.1 汽车运动学模型 3.2 汽车动力学模型 3.3 运动学模型和动力学模型 ...

  7. 自动驾驶横向运动学分析和非线性问题处理方法

    本文根据论文Autonomous vehicles control in the VisLab Intercontinental Autonomous Challenge 介绍了自动驾驶中使用的横向运 ...

  8. Coursera自动驾驶课程第7讲:Vehicle Lateral Control

    在上一讲<Coursera自动驾驶课程第6讲:Vehicle Longitudinal Control>中我们了解了如何使用PID算法进行汽车纵向控制. 本讲我们继续学习新的模块:汽车横向 ...

  9. L2级自动驾驶量产趋势解读

    来源:<国盛计算机组> L2 级自动驾驶离我们比想象的更近.18 年下半年部分 L2 车型已面世,凯迪拉克.吉利.长城.长安.上汽等均已推出了 L2 自动驾驶车辆.国内目前在售2872个车 ...

  10. 实时障碍更新 局部路径寻优算法 矢量地图数据 局部路径规划解集_自动驾驶近期行为预测和规划的一些文章介绍(下)...

    继续介绍最近公开的文章. "Driving with Style: Inverse Reinforcement Learning in General-Purpose Planning fo ...

最新文章

  1. Openstack安装部署
  2. Installation error: INSTALL_FAILED_CANCELLED_BY_USER
  3. shell基础知识总结
  4. Python编写简易木马程序
  5. String使用注意二
  6. Java 实现 AES 加解密
  7. new对象时,类名后加括号与不加括号的区别
  8. 三菱PLC-GXWorks2程序下载
  9. plsql32位链接64位oracle,32位PLsql连接64位Oracle问题
  10. 计算机图形学 全局光照及方法,实时全局光照渲染研究
  11. 实现通用人工智能和超(强)人工智能的理论基础——心理二元说
  12. 如何用PS的量度标尺工具调整图片
  13. NI RS422/RS485接线方式
  14. C语言统计1到100素数的个数,统计1到100素数的个数
  15. 矩阵平方差公式成立条件的探讨
  16. AppIcon 生成工具
  17. 更改RStudio快捷键
  18. 关于计算机名的相关讨论 【好帖 好帖 哈哈。。】
  19. 电脑损坏,电脑文件损坏无法开机怎么办
  20. javaWeb毕业项目、大作业等学习项目汇总目录

热门文章

  1. 学习webpack系列之一 ---- (手动部署环境)
  2. Mybaitis框架与Spring整合详解(三)
  3. python向oracle写数据类型,python-oracle插入数据类型不匹配
  4. MFC可编辑CListCtrl
  5. 浏览器加载、渲染过程总结
  6. 借助mapshaper的简化来修复geojson的拓扑错误
  7. 民营银行是怎样炼成的:优中选优最终挑选出5家
  8. python日志模块logging
  9. Java实现棒子老虎鸡小游戏
  10. call、apply和bind的用法与说明