你应该使用哪种算法来找到两点之间避开障碍物的最短路径?

huangapple go评论82阅读模式
英文:

What algorithm should I use to find the quickest path between two points while avoiding obstacles?

问题

我有一个起点和终点,以及若干障碍物(根据情况多少不等)。我还有一个类似机器人的系统,它在动态环境中移动。我的任务是实现一个算法,让我的系统能够避开障碍物到达终点。有没有人之前研究过路径/运动规划,并能给我一些建议?

到目前为止,我已经做了一点“研究”,发现基本上有两类算法:基于搜索和基于采样。显然,基于采样的算法更适用于有多个障碍物的环境,它们也在机器人领域广泛使用。但是,测试后我发现它们给出了非常奇怪的轨迹,有很多转弯,这完全不是我想要的。另一方面,基于搜索的算法因为使用网格,在有更多障碍物时需要大量内存。所以,我现在陷入了困境。我曾考虑实现RRT*,但即使有很多迭代,我仍然不太喜欢找到的路径。

我查找了像A*、D*、DLite、RRT、RRT和PRM等算法。

英文:

I have a start and end point and several obstacles (more or less depending on the situation). I also have a robot-like system that moves in a dynamic environnment. My job is to implement an algorithm that will allow my system to arrive to the end-point avoiding the obstacles. Has anyone worked on path/motion planning before and could give me some advice ?
So far I've done a little bit of 'research' and I found that basically there are two groups of algorithms: serach-based and sampling-based. Apprently the sampling-based ones are more suitable for environments having multiple obstacles and they are also mostly used in robotics. Now testing they give a very strange trajectory, having many turns which is not at all what I want. On the other hand, search-based algorithms since they work with a grid, when we have more obstacles take a lot of memory. So, here is where I'm stuck. I was thinking of implementing RRT*, but I really don't like the path found even when I have many iterations.

I looked up algorithms like A*,D*,DLite,RRT,RRT and PRM.

答案1

得分: 1

如您所提到的,基于采样的方法在具有非常高维状态空间的问题中效率更高,而且您不必担心网格大小。采样规划器返回的奇怪和不平滑路径的观察是常见的。通常,人们会进行后处理来修复这个问题。您可以进行路径简化(参见论文:https://ieeexplore.ieee.org/document/5509683),或者可以将找到的路径输入基于优化的求解器(例如轨迹优化)作为一个良好的初始猜测,该猜测考虑了路径的平滑性。

英文:

As you have mentioned, sampling-based methods are a lot more efficient in problems with very high-dimensional state space and you don't have to worry about grid size. The observation of strange and unsmooth paths returned by a sampling-based planner is common. Usually, people perform post-processing to fix this. You can perform shortcutting (see paper: https://ieeexplore.ieee.org/document/5509683), or you can throw the found path into an optimization-based solver (e.g. trajectory optimization) as a good initial guess that takes into account path smoothness as well.

huangapple
  • 本文由 发表于 2023年6月15日 20:01:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/76482257.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定