英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论