我目前尝试实施 D* Lite 算法进行路径规划(另请参见此处)以掌握它。我在网上找到了两个实现,都是针对 C/C++ 的,但不知何故不能完全遵循这些想法,因为它们似乎与白皮书中的伪代码有很大的不同。我特别使用以下两篇论文: Koening,S.;Likhachev,M. - D* Lite,2002 Koenig & Likkachev,在未知地形中快速重新规划导航,IEEE Transactions on Robotics,Vol。2005年6月21日第3期
我尝试从第一个白皮书(第 5 页,图 4)中实现 D* Lite 的优化版本,对于“调试”,我使用第二个白皮书(第 6 页,图 6 和图)中所示和解释的示例.7)。所有工作都在 MatLab 中完成(更容易与他人交换代码)。
到目前为止,我通过运行一次 computeShortestPath() 来运行代码以找到初始最短路径。但现在我被困在伪代码的 {36''} 和 {37''} 行:
{36”} Scan graph for changed edge costs;
{37”} if any edge costs changed
我如何检测这些变化?我似乎不知道这是如何被检测到的?到目前为止,在我的实现中,我主要使用了 3 个矩阵。一个与包含所有 rhs 值的网格图大小相同的矩阵。一个大小相同的矩阵,包含类似的所有 g 值。还有一个具有可变行数的矩阵,用于优先级队列,前两列是优先级键,第三和第四行是 x 和 y 坐标。
比较我的结果,我在第 5 步中第一次运行 computeShortestPath() 得到的结果与第二份白皮书第 6 页图 6 中所示的结果相同。移动机器人一步也不是问题。但我真的不知道下一步应该如何实施扫描更改的边缘成本。
感谢您的任何提示、建议和/或帮助!!!