5

我正在寻找一种算法,但我不知道从哪里开始!

我试图在笛卡尔图中从 A 点到 B 点。运动仅限于遥控车:后退、前进、左前和右前(恒定转弯半径;汽车要么完全转弯,要么根本不转弯)。

我将如何构造一个采用以下内容的算法:

turningRadius, initialPosition, initialOrientation, finalPosition

并产生一组有序的步骤来到达 finalPosition?

请注意,我不在乎最终的方向是什么。

谢谢!


编辑: 请注意,这不是在具有离散节点的图中,而是在连续坐标系中

4

4 回答 4

5

描述你的问题的方式,算法很简单,只需要两个简单的步骤:1)在转弯(左或右)的同时向前移动,直到汽车直接指向 B,2)直线向前移动,直到你撞到 B。完成。

唯一相对棘手的部分是第一步。如果 B 在其初始位置位于汽车纵轴的左侧,则自然的方法是从左转开始。这将起作用,除非 B 点位于由左转(半径为turningRadius)产生的圆形轨迹内。在后一种情况下,汽车会绕圈行驶,但永远无法直接瞄准 B。在这种情况下,正确的策略实际上是从右转开始继续转弯,直到将汽车瞄准 B。

因此,如果您对轨迹没有任何最优性要求,那么第一步最简单的算法是无条件地“远离”该点:如果 B 位于汽车纵轴的左侧,则右转,如果 B 位于右侧,则向左转。继续转动,直到汽车直接瞄准 B。这听起来有点不自然,但它总是有效的,即您始终能够最终瞄准汽车。

如果您关心更优(更短)的轨迹,那么您需要分析 B 相对于汽车初始位置/方向的位置(“B 是在转弯圈内还是在转弯圈外?”)并选择第一回合相应地。

于 2010-10-27T18:45:32.163 回答
1

一般来说,这不是一个容易的问题。它属于“差异约束下的规划”类别。LaValle 书的最后三章(可在此处在线获取)处理此问题。尤其是第 14.4.2 节,它涉及“杜宾斯汽车”,它与您的遥控车相似,只是它不会后退。

还可以搜索“Dubins 汽车路径规划”。你会发现很多论文。

于 2010-10-27T18:57:19.177 回答
0

你试过a*(a-star)吗?提供地形图也很好。您可以为地形的不同部分分配权重,这将导致不同的路径。我相信默认情况下该算法不提供对角线方向,但您可以很容易地添加它。

此外,默认情况下它不处理“转向”,但 a-star 会给出完整路径。您可以做的是根据 2 个点计算转弯半径。当前位置和下一个计算的位置,或最后一个位置和当前位置。然后,您可以随着角度的变化增加或减少朝向。您可能需要对此进行一些调整。

于 2010-10-27T18:34:04.803 回答
0

听起来像是一个有趣而有趣的项目!要获得特定的算法推荐,您可能应该提供更多详细信息……就像您希望在连接到 RC 汽车的某种嵌入式控制器上运行它一样?或者是在工作站上运行并远程控制汽车的算法?(或者这纯粹是一个抽象的练习,没有车……哇。)

我一般建议从哪里开始着手构建问题解决者,这是对“人工智能”问题解决技术世界的一个很好的介绍。这些天可能有点过时了……但是等等,我在说什么!可能不是。:-)

[好吧,我应该解释最后一条评论:我在实践中看到的大多数“现代”人工智能技术实际上可以追溯到多年前的想法……由于摩尔定律的不断进步,它们现在才变得实用。因此,就我个人所见,1993 年写的一本书仍在讨论相当先进的技术。我很想指出一个反例!]

于 2010-10-27T18:47:31.423 回答