从系列:自主导航
布莱恩•道格拉斯
这个视频中探索的一些方法,我们可以使用一个映射像二进制占用网格运动和路径规划。我们简单介绍运动规划是什么意思和如何可以使用图来解决这个计划的问题。然后我们穿过两个受欢迎的方法来创建图:搜索算法像RRT和RRT * *和sampling-based算法。
上一节,我们介绍同步定位和映射。顾名思义,我们结束了一个环境的地图以二进制的形式占用网格。视频,我们要探索的一些方法,我们可以使用这样的地图进行运动规划,这是找到一个轨迹通过这个环境,连接一个机器人的起始状态到目标状态。我们将简单介绍运动规划是什么意思和如何使用图表来解决这个规划问题,然后我们将讨论两种流行的方法用于创建图——搜索算法像RRT和RRT * *和sampling-based算法。我认为这个视频会很好地设置一个基本的了解我们可以用图表来计划一个轨迹通过一个已知的环境。和这是你可以建立在出去了解更多关于这些规划方法。所以,我希望你留下来。我是布莱恩,欢迎来到MATLAB技术说话。
我们想要找到一条路径从开始对一个目标造成。如果我们谈论的是机器人,沿着地面,可能有三个州组成的姿势,x和y的位置和方向。
道路是构成国家的序列平稳启动和目标联系起来。确定这个序列被称为路径规划。现在,路径规划是更大的运动规划问题的一个子集。与运动规划,我们不只是关心构成的序列,而且他们的衍生品,如速度,加速度,转速等等。与运动规划,我们正试图决定如何机器人穿过环境。路径规划,我们只是关心的路径,而不是速度加速或穿过它。
当然构成向量的大小取决于您的系统和环境的细节。而不是3,可能是两个,x和y如果机器人全向和定向无关紧要。,或者在一个机械手臂与多个致动器的情况下,构成可以由几十个国家。
视频,我要用例子集中在路径规划和全向机器人,所以只有两个姿势状态。这将简化的解释,希望你能看到,这些技术可以外推到高维系统。
好吧,让我们开始用一个简单的映射,类似于我们在最后生成的视频。它只是一个矩形。
这里假设,起始姿势,姿势的目标是在这里。最小距离的解决方案可以解决直接通过连接启动和目标的一条直线,只要没有障碍。如果机器人沿着这条路径,它将达到的目标可能的最短的距离。
现在,像这样的分析求解最短路径是平凡简单的环境。和这种类型的解决方案甚至可以工作环境和一些障碍和约束。
但对许多问题的障碍和系统过于复杂的动态生成一个最佳解决方案分析。所以,我们解决问题的数值方法。正如我说,这段视频的开始,我们要专注于基于数值方法找到最短的路径长度。
在我们进入任何特定算法之前,让我告诉你背后的一般思想基于这个简单的地图解决方案。金宝搏官方网站图论算法通过离散化的环境——打破它分成离散点或节点,然后找到最短的距离目标仅仅考虑这些节点。
让我们以随机的方式解决这个问题。起始位置是第一个节点图和它的成本(0)因为我们已经在那里了。所以我把一个零的内部节点。然后我们可以在一个随机的方向移动,把图中的一个节点在我们的新位置。节点之间的边是多少我们旅行,到达该节点的成本是一个边缘的长度。现在我们再一步一个随机方向,另一个边,这个节点的成本是3单位。我们能继续这样做,在一个随机游走,直到我们到达目标。这个特殊的随机路径的成本是10个单位。我们发现一种有效的路径,即使这肯定不是最短路径。
所以,我们可以重新开始,一个新的随机步骤,添加一个节点和连接优势和记录成本。如果我们到达之前,我们参观了一个节点发生,我们可以比较两个不同路径之间的成本,我们将到达该节点并保持最小的一个。基本上,修改我们的估计有多少单元需要达到这一节点。
我们现在有这张图的节点,或在地图上位置,需要多少成本每个节点。我们应该认识到,我们实际上并不需要建立一个完全相互关联的图,只是一个树,这是一个图表的一个子集。图可以有节点连接在无论如何你想要的,但在一个树每个节点只有一个父节点。如果你能到达一个节点两种不同的方式,它没有意义继续路径,如果你正在寻找一个长最短路径。所以,你可以删除的边缘路径的时间越长,保持一个树结构。
这样,树会在机器人的位置和树枝会外出到其他国家,但却从未重组。
现在,找到一个较短的距离的目标,我们可以保持随机漫游环境,更新树,直到我们找到一个分支到达目标成本足够低。这并不保证最优的路径,但将继续接近最优的节点数趋于无穷。
当然,建立一个树通过随机徘徊并不是最好的解决方案。这是路径规划算法,它们提供了更有效的方法来构建这棵树。
我想开始所谓的基于搜索的方法,建立通过添加节点树的有序模式。在实践中做到这一点的一种方法是首先基于网格地图,像我们的入住率网格和细胞通过细胞并确定成本,或机器人的距离会为了达到细胞。在这里,我声称相邻移动10和对角线移动是14。这类似于我们刚刚做的随机方法,通过每个单元除了我们有条不紊地工作,和计算成本达到它,如果它的最短路径节点更新成本和树。一旦我们覆盖网格中的每一个细胞,最优路径就是细胞产生的序列的最小成本的目标。
这将产生一个最优解,至少最优网格的分辨率,但你可以看到,这将是计算昂贵,因为它是一种蛮力的方法检查每一个可能的节点。为了改善这种情况,研究提出了1968年的A *算法使机器人沙基机器人能够自行确定去哪里——第一个通用的移动机器人。这仍然基于搜索的方法添加节点以有序的方式,但它是通过优先级的节点更有可能产生最优路径,和搜索第一。它通过跟踪其他一些启发式的直线距离从一个节点到目标,除了节点的成本。这两个数的和是绝对的最小成本路径。如果有一条直线,目标,然后你可以想象的总路径长度,说,该节点将48。我们已经走了10剩下至少38。因此,这个其他节点应优先,即使当前的成本是14,因为只有28的潜力更多去共有42岁,更有意义不断尝试这条路。
通过这种方式,一个*允许我们搜索节点的方式将我们的目标没有必要将每个节点添加到我们的树。事实上,一旦我们到达我们的目标,我们知道我们采取最优路径从其他路径会有成本加距离要大于我们发现的道路。
现在,这是一个快速介绍*,我要做一个动画显示,这仍然运转良好的障碍,但是,老实说我不做得更好塞巴斯蒂安瘟疫周(腿)已经在他的YouTube频道,我下面的链接。他的视频和动画*是惊人的,我建议你检查一下,如果你想知道更多关于这种方法。
好的,那么搜索算法给出了一种通过添加节点建立一个树在某种命令模式。但是有一个问题,这些类型的算法,甚至高效的*,是他们变得非常贵计算状态空间的大小和尺寸增加。你可以想象网格点的数量成倍增长随着维度数量的增加。可一切都慢下来。因此,他们倾向于不应用于高维状态空间,如确定关节机器人机械手的路径,或非常大的低维状态空间,可能会有数百万或更多网格细胞。这就是所谓的sampling-based算法是有用的。
了解sampling-based算法工作,我认为第一个意识到在我们的地图上,会有帮助,可能大多数地图,有部分路径可以继续在一个方向需要转弯之前一段距离。*我们需要计算每一个网格单元之间的这两点,所以多个节点的树。然而,如果我们只检查了遥远的节点,并没有任何障碍的方式,然后我们可以计算出直线成本就这一个节点。这减少了节点的数量,因此总数量的计算。
那么问题就在于,我们如何选择这些稀疏节点的位置,所以我们还是达到目标吗?和一个答案是随机选择,或样本,因此得名。现在,我知道我说随机选择节点并不是最好的方法来构建一个树,但是我们要选择一个随机节点位置有点不同。而不是扩展路径通过某种随机游走,这可能允许的路径圆回来,需要很长时间去探索的方向目标,我们要懂得随机化,关注迅速探索随机树(RRT)和一个版本,可以达到一个名为RRT *的最优解。
让我们进入基本RRT算法是如何工作的。从开始节点,我们需要一个新节点树。RRT通过随机选择一个节点状态空间的任何地方。一旦我们有这个随机节点,我们想要它到最近的节点连接到我们的树。,因为我们刚开始是第一个节点。但我们不想把它太远,因为路径跨越障碍的几率还是旅行太远了错误的方向与更长更大优势。所以,我们指定一个最大距离,可以将新节点距离最近的节点。
现在,一个快速的一边。如果随机节点比马克斯近距离然后我们将新节点。同样,如果最近的节点之间存在一个障碍,我们要将新节点,那一个是完全被忽略,没有添加到树,我们继续前进。这使树从十字架试图通过任何墙壁或其他障碍。
好的,让我们继续前进。我们随机选择一个新节点,并且找到现有的节点最近的。同样,这是起始节点。我们已经有两条路径在我们的树,都是冒险到状态空间的不同部分。一个新的随机节点,我们连接到最近的,这是成长的一条路径进一步开放空间。这就是为什么这种算法称为迅速探索随机树。当有大量未开发的地区,我们有一个好的机会,一个随机节点被选中。这中添加新节点的影响导致路径的地方冒险进入未知的领域很快开始,因此迅速探索。和一个随机节点的一个方向相反的目标并不影响路径,正在自不同的节点将最近的目标。这样,一条路总是迅速的向着目标和其他人正在迅速进入状态空间的其他开放区域。 And then later on, as the unexplored area starts to fill up, the random node selection tends to just fill the tree out with more branches.
我们可以继续这个过程,直到目标的路径到达某个阈值。在这一点上,我们有一个可行的路径,尽管可能不是最优的一个因为这个方法往往曲折使其方式。但是我们找到了一个解决方案,重要的是一个可能的解决方案使用更少的节点比是必要的*由于节点可以间隔的远。我们组的最大连接距离。
RRT可以工作得很好情况下你只是寻找一个有效的路径和不一定最短的距离。只要启动和目标节点是可及的,这种方法是保证找到一个路径的样本数趋于无穷时- - -在大多数情况下更小得多的有限数量的样本。
现在,如果我们想要一个接近最优的解决方案,我们需要添加一些额外的步骤RRT算法得到RRT *。RRT *,节点选择过程是完全相同的。我们选择一个随机节点,找到最近的邻居,如果没有障碍在我们地方新节点在马克斯的随机节点或连接距离——哪个更小。来自我们的区别这个节点连接到现有的树。我们不一定将它连接到最近的节点。相反,我们检查其他节点在一些指定的搜索半径,并确定我们是否可以重新连接这些本地节点的方式维护树结构也最小化总路径长度。所以,在这里,我别的节点连接到这个会产生更短的路径回到开始。
让我们看RRT *使用稍微复杂的环境。在这里,我使用MATLAB可视化和RRT *函数从导航工具盒。在一开始,你可以看到它迅速探索的环境。而且这样做只有几个节点。到目前为止,这不是比RRT不同,但我暂停一下。这里会出现下一个节点。如果这是RRT,将该节点连接到这一个,因为它的最近的。但看看会发生什么。该节点出现,这里的连接一直以来是一个较短的路径回到开始。它连接搜索半径内的其他节点。 So RRT* is always trying to shorten the paths. Let’s continue.
这里到达目标,就像RRT路径有点齐格zaggy,。但随着我们继续添加更多的节点,和现有的路径连接之后,您可以看到他们如何得到精制随着时间的推移,变得短而直。我们可以停止添加节点时我们满意的结果。我们不仅有一个算法路径的目标,但我们的树生成最优路径附近的任何地方环境。至少,只要环境不会改变。这是RRT *的力量。
现在,这是一个超级快速介绍sampling-based算法,和我离开更好的信息来源的描述这段视频。这就是我要把它现在只有一个简单的介绍。这里的想法,不是告诉你所有你需要知道的关于路径规划就有数十个不同的种类的RRT孤独,但是希望你有一个的树可以帮助我们通过环境规划一条路径,和一些搜索和sampling-based方法我们可以建造那棵树。
在这个视频中,我们通过一个静态处理规划路径的环境。然而,通常其他对象和障碍正在通过环境和规划算法需要对这些变化作出反应。解决这一问题的部分原因是跟踪扩展对象,这些对象是足够大的,一个传感器返回多个检测。这就是我们要讲的下一节。
如果你不想错过或任何其他未来科技视频说话,别忘了订阅这个通道。你想看看我的频道,控制系统讲座,我覆盖更多的控制理论主题。谢谢观看,下次再见。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。