我正在研究A星优化技术,该技术可以避免过度的转弯弯角并找到最小转弯的方法,因为谈论机器人,如果不停不断地前进并计算进一步的步骤,效率会更高。
我已经开发了自己的方法,但是缺少了一些东西。这种方法是基于预先计算自由线和列交叉处的交叉像元,但是存在一个问题:我要从考虑包含不可通过像元的线和列中进行遍历。
要解决此问题,我还需要在障碍物之间添加子线。 依此类推。
也许有更好的注册算法可以更好地满足我的需求。
此图显示了如何使用最小转弯来构建路径
这是相同的长度,但考虑到没有转弯,这是最佳选择
答案 0 :(得分:0)
在寻找解决方案时,我发现最佳搜索可以满足我的需求,它与我的需求非常接近,但动作却不正确。
// This pseudocode is adapted from below
// source:
// https://courses.cs.washington.edu/
Best-First-Search(Grah g, Node start)
1) Create an empty PriorityQueue
PriorityQueue pq;
2) Insert "start" in pq.
pq.insert(start)
3) Until PriorityQueue is empty
u = PriorityQueue.DeleteMin
If u is the goal
Exit
Else
Foreach neighbor v of u
If v "Unvisited"
Mark v "Visited"
pq.insert(v)
Mark v "Examined"
End procedure
我想出的最佳方法是在自由行和自由列上找到所有十字架,并找到从十字架到最接近目标的最近邻居的最接近像元。
因此,我已经完成了从Grid类更新Neighbor属性实现的操作,而没有更新A *算法。