lon*_*oat 5 algorithm coordinate-systems motion-planning cartesian
我正在寻找算法,我不知道从哪里开始!
我试图在笛卡尔图中从A点到达B点.运动仅限于RC车的运动:向后,向前,向前 - 向左和向前 - 向右(恒定的转弯半径;汽车要么完全转动,要么根本不转弯).
我将如何构建一个采用以下方法的算法:
turningRadius, initialPosition, initialOrientation, finalPosition
Run Code Online (Sandbox Code Playgroud)
并产生一组有序的步骤来获得finalPosition?
请注意,我不关心最终的方向是什么.
谢谢!
编辑: 请注意,这不是具有谨慎节点的图形,而是连续坐标系
描述问题的方法,算法很简单,只需要两个简单的步骤:1)转向(向左或向右)直到汽车直接指向B,2)向前移动直到你击中B.完成.
唯一相对棘手的部分是第一步.如果B在汽车的纵向轴线的左侧位于其初始位置,则自然的方法是从左转开始.这将起作用,除非点B位于由这样的左转弯(半径turningRadius)产生的圆形轨迹内.在后一种情况下,汽车将以圆圈运行,但永远无法直接瞄准B.在这种情况下,正确的策略实际上是从右转弯开始并继续转弯直到您将汽车瞄准B.
因此,如果您对轨迹没有任何最优性要求,则第一步的最简单算法是无条件地从该点"离开":如果B位于汽车纵轴的左侧,则向右转,如果B位于右侧,则向左转.继续转动直到汽车直接瞄准B.这听起来有点不自然,但总是有效,即你总是能够最终瞄准汽车.
如果你想要一个更优的(更短的)轨迹,那么你需要分析B相对于汽车的初始位置/方向的位置("B在转弯圈内或在外面?")并选择方向相应的第一个转弯.