zoukankan      html  css  js  c++  java
  • 第三期 行为规划——5.自主驾驶车辆的状态

    现在让我们考虑一下我们可能想要在高速公路上驾驶汽车的状态。

    从头开始创建一个有限状态机。保持简单。如果我们是唯一一辆路上的车,会发生什么?

    我想我们需要一个状态来正常待在你的车道上。

    如果我们正在改变车道,我们想要一个状态来代表这一点。或者,也许两个状态,因为改变车道左侧不同于右侧。

    好的。我猜。如果我们面前有车辆,会发生什么变化?那么我们可能慢下来,所以我们应该有一个状态或我们可能想通过它。

    我想,但不是只通过左侧车道变更,然后右侧车道变更?真的需要这个的状态吗?集思广益,没有坏主意。

    好的。那么,如果我们有更多的汽车会发生什么变化?我可以想象在这种情况下,你可能想放慢脚步,这样你就可以

    如果进展缓慢,可能会在这里融合到这个差距中,然后通过这辆车。我们真的应该有一个缓慢的状态

    我想这意味着我们也需要加快北部的速度。如果遇到紧急情况,我们应该增加一个停止状态。

    我想我们可以通过保持目标速度状态一次完成所有这些。那么我不知道。

    速度不应该由您驾驶的车道和速度限制决定吗

    如果我们只是添加一个准备车道变化状态来表示何时在换道之前,自我车辆是否试图在交通中出现空白?

    是的,这可以工作,但我们可能应该有准备车道变更并准备车道变更权,

    因为那些真的是不同的演习。哦,我们也可以打开转向灯。好点子。事实是,没有一套正确的状态可供选择。

    一方面,我们希望保持我们的状态空间像可维护性原因,但另一方面,我们要确保我们有足够的逻辑状态

    实际上代表我们关心的所有物理状态。正如你在讨论中看到的那样,我们已经有了它不容易找到这个场景的完美状态集合。

    你为什么不想一下你想要的状态用于表示高速公路上的车辆行为。

    选中您要保留的每个状态旁边的复选框请在左侧的空白框中写入任何附加字符。

     


    在规划本课时,我们知道我们想要专注于公路驾驶,但我们仍然在讨论我们应该为我们的有限状态机使用哪些状态。

    我们很快同意了三个,因为在我们看来,这些都是最低限度的单一换道不足。

    我们也同意排除很多状态,因为大部分状态这些可以被认为是保持车道状态的各种实现。

    但是,最后两个,准备变道,我们不确定。最终,我们决定将这些状态用于这些课程。所以我们应该澄清这些状态的含义。

    我们首先想象一下车辆的行为看起来像没有这两个准备状态。首先,让我解释一下这个例子将如何工作。

    在这里,我们有一条双车道高速公路,右边是交通车道。这是我们的自驾车,其他车辆显示为红色。

    当你看这个动画时,你应该想象从一架正在飞行的直升机上观看在自动驾驶汽车目标速度的高速公路上方。

    这些红色迹线表示其他车辆的相对速度。在这种情况下,车道一中的车辆行驶得更快

    比第二车道的车辆移动速度慢。当我们只有三个状态加上第四个就绪状态时,有限状态机看起来像这样。

    我们假设当我们开始观察时,我们已经处于保持车道状态。在我们观察我们的车辆使用这个有限状态机时发生了什么之前,

    让我解释一下这些状态的含义。车道保持状态尝试停留,靠近该车道中线附近的当前车道。

    所以在有限的坐标中思考,我们可以说车辆的目标d是车道的d值。

    而对于这个方向,在可行的情况下保持车道状态试图以车辆的目标速度行驶,

    但如果不是,它会尝试以最安全的车道速度开车。对于车道改变,目标是从初始车道移动到目标车道

    d行为就是你可能期望的适当的左右移动。所以目标d是任何通道的d,自我当前车道的左侧或右侧。

    对于s,与车道保持相同的规则适用。车辆将尝试以目标速度行驶,

    但如果这不可行,那么它会以最快车道的安全速度行驶。现在,让我们观察随着时间的推移,车辆的行为。

    对于前几个时间步,我们看到自我车辆越来越靠近车辆2.2左车道的车辆通过自行车。

    在此期间,车辆保持在车道保持状态,因为没有足够的差距来改变车道安全。请注意,在这一点上,自我车辆

    即使不改变状态,也开始减速。这是因为车道保持状态包含这种行为。

    当目标速度不再可行时,它会将车速调整为安全的车道。此时,车辆已经决定左侧换道是最好的举措。

    现在,在换道状态下,你可以看到车辆已经在车道左侧移动,但没有调整车速。这与我们为换道行为定义的规则一致。

    此时,车辆已经穿过虚线,所以它当前的车道是左车道。

    现在它想要回到车道保持状态留在这条车道上,当它这样做时,它立即开始加速,因此它可以达到对这条车道安全的速度。

    现在它的速度与左车道上的其他车辆相同,它可以继续进行,直到它通过右侧的车辆。

    尽管这有效,但还是有一些问题。首先,即使当时很清楚我们可能会移动到左边的差距,我们没有办法告诉车辆试图摆脱这种差距。

    我们不得不等待差距接近我们。其次,这条车道变化并不是那么安全。理想情况下,我们可以接近实际进行车道改变之前的左车道速度。

    第三,我们不清楚在这种情况下何时打开转向灯

    转向信号是行为团队的责任,理想情况下,我们想打开它几秒钟后我们才开始换车道。

    使用这个有限状态机,这将很难做到。

    为了解决这个问题,我们可以介绍一个换车道状态的准备。在这种状态下,我们会尽一切可能为左侧或右侧的车道更换做好准备

    这意味着在d方向我们仍然可以留在目前的车道,但在我们的方向试图匹配其中一条相邻车道中的某个间隙的位置和速度。

    这也是当我们打开适当的信号。我们也改变了有限状态机看起来像这样。

    请注意,改变车道的唯一方法是首先准备换车道。让我们看看会是什么样子。

    在第一时间我们可以决定准备通过跟踪这里的差距来改变车道,

    这使我们能够立即开始放慢速度。此时,汽车可能开始缓慢增加速度接近左车道速度,

    并且此时车辆已经达到与左车道交通相同的速度并且能够执行从这里开始的换道。

    从这里开始,一切看起来都和以前非常相似。

    有了这些新增的状态,我们现在可以更安全有效地执行车道更换。

  • 相关阅读:
    求长度的另一种方法(""+obj).Length
    XCode中如何使用事务
    最终版 Reflector v1.0 (+简单的反流程混淆)
    与ObjectDataSource共舞
    性能&分布式&NewLife.XCode对无限数据的支持
    XCode之第一次亲密接触
    5,ORM组件XCode(动手)
    你知道吗?多个类多线程环境下静态构造函数的执行顺序
    使用C#编写IDA插件 IDACSharp v1.0.2010.0605
    XCMS V1.0 Beta1 发布
  • 原文地址:https://www.cnblogs.com/fuhang/p/8994691.html
Copyright © 2011-2022 走看看