English 中文(简体)
在什么地方,我可以找到关于D*或D* Lite病情调查算法的信息?
原标题:Where can I find information on the D* or D* Lite pathfinding algorithm?
问题回答

说到这一点,为什么不增加几篇论文,如果是的话,它们也有:-,但我试图获得一些更近的东西。 随着时间的推移,人们通常能够更好地解释自己的工作,因此,重点是Stentz、Likhachev和Koenig。

如果贵方的伪装成硬法(如果你知道标准字典的话,你不必阅读手法和证据——假装法则相当直截了当,而且你对公布的C和C++代码表示不满,那么我就认为你需要做其他事情:

令人严重关切的是,人们无法在几个网络段落中向你们教授最高年级算法。 做纸面和纸面文字,从纸面上提取和跟踪。 您可能要读两点,一两点,以了解其中的几种概念,而无需在现场挖掘和举证——除非你希望证明提交人错了:-)

如果没有更多的数学,我们就能够前进。 你们要求别人教导你们地球上的东西是 matrix变,但你们不知道什么是病媒。 没有人能够帮助你获得足够数量的数学背景。

www.un.org/Depts/DGACM/index_french.htm

D* 始于<条码>/条码>和<条形码>之间的代管和理想途径;它只在障碍发生时(通常通过移入邻近地带)处理。 这就是说,D* Lite没有了解任何障碍until<>m>,它开始沿着这一理想的道路前进。

任何道路勘察的圣杯都是为了使其快速发展,同时走上最短的道路,或者至少是一条体面的道路(并且为D* Lite处理[你在这里的所有特殊条件——这涉及的是火星路透视可能使用的不为人知的地图)。

因此,D* Lite的一个巨大挑战是,在达到这些障碍时,便宜地适应这些障碍。 找到这些结论是容易的——在你行走时,你只是检查邻国的 no。 但是,我们如何调整现有地图的成本估算,而不走每条可能非常昂贵的节点......?

LPA* 采用切碎trick来调整成本,而D* Lite的trick子已很好地使用。 目前的节点问其邻国: 你们最了解我,你们是否认为我对自己是现实的? 具体来说,它询问其<代码>g值,即从最初的 no到自己,即目前的 no。 邻居看自己的<条码>g,看看当前噪音与否,然后估算<>y的值。 这些出价的最低点为现值rhs。 然后用于更新其<代码>g值的价值;在估算时,邻国考虑到新发现的障碍(或自由空间),例如,当目前更新<代码>g时,使用<代码>rhs,则采用新发现的障碍(或自由空间)。

当然,一旦我们具有现实的<条码>g价值,就出现了一条最短的道路。

D* vs D* Lite: First of all, D*-Lite is considered much simpler than D*, and since it always runs at least as fast as D*, it has completely obsoleted D*. Thus, there is never any reason to use D*; use D*-Lite instead.

D* Lite vs A*: The D* Lite algorithm works by basically running A* search in reverse starting from the goal and attempting to work back to the start. The solver then gives out the current solution and waits for some kind of change in the weights or obstacles that it is presented with. As opposed to repeated A* search, the D* Lite algorithm avoids replanning from scratch and incrementally repair path keeping its modifications local around robot pose.

如果你真的理解算法的话。 我建议你首先通过A* 的假冒代码阅读并加以执行。 首先要了解一下你是如何从中挑选和插入的,以及算法如何使用另一种超常而不是通常的Dijkstra算法,以及为什么允许算法比Dijkstra探索较少的vert。

一旦你感觉到A* 的工作方式(你也应当执行),我就建议你再看Koenig,2002年。 我建议你首先研究D*-Lite pseudo常规法典。 确保你们理解每一种法典。

<>>优先权概念

  • U is your priority queue where you want to stack unexplored vertices.
  • U is has elements of (key, value) where key is you vertex and value is the result of the value = [k1, k2] = calculateKey saying what the priority of the key (meaning vertex) should be. Now your priority queue uses a.
  • U.Top() returns a vertex with the smallest priority of all vertices in priority queue U.
  • U.TopKey() returns the smallest priority of all vertices in prior.
  • U.Pop deletes the vertex with the smallest priority in priority queue U and returns the vertex.
  • U.Insert() inserts vertex into priority queue U with priority.
  • U.Update() changes the priority of vertex in priority queue U to.

<>执行>

我已经实施了优化的D*-Lite算法,一度是 p(见http://stackoverflow.com/questions/61467693/d-lite-search-algorithm-for-robot-path-planning-gets-stuck-infinite-loop-wh>here)。 我建议你将守则和假守则放在一边,并读到。 如果你愿意,也指示对模拟进行测试。

I came up with this
http://idm-lab.org/bib/abstracts/papers/aaai02b.pdf and this
http://www.cs.cmu.edu/~maxim/files/dlitemap_iros02.pdf http://www.cs.cmu.edu/~maxim/files/dlite_icra02.pdf - has 2 versions of D*

http://www.cs.cmu.edu/~maxim/files/dlite_tro05.pdf。 - icra02的主版

https://www.cs.cmu.edu/~maxim/files/rstar_aai08.pdf。 - R*——减少计算费用的随机化

http://www.cs.cmu.edu/~maxim/files/rstar_proofs34.pdf - modified R* http://www.cs.unh.edu/~ruml/papers/f-biased-socs-12.pdf - real time R* + PLRTA*

I hope those link will help you :)
Edit: After posting I noticed that the links I gave you were in the link you pointed out as well. Nevertheless I found those directly on Google. Anyway I ve looked them up a bit and they don t seem to be that complicated. If you know A* well you should manage to understand D* as well.
From experience I can tell you that A* can be used for what you want as well.

Maxim Likhachev s CMU class notes are very informative. It contains an example of how to propagate the dynamics changes occurred on your graph. Also explains the idea of under-consistent which is very important to understand the algorithms. http://www.cs.cmu.edu/~maxim/classes/robotplanning_grad/lectures/execanytimeincsearch_16782_fall18.pdf





相关问题
How to add/merge several Big O s into one

If I have an algorithm which is comprised of (let s say) three sub-algorithms, all with different O() characteristics, e.g.: algorithm A: O(n) algorithm B: O(log(n)) algorithm C: O(n log(n)) How do ...

Grokking Timsort

There s a (relatively) new sort on the block called Timsort. It s been used as Python s list.sort, and is now going to be the new Array.sort in Java 7. There s some documentation and a tiny Wikipedia ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Enumerating All Minimal Directed Cycles Of A Directed Graph

I have a directed graph and my problem is to enumerate all the minimal (cycles that cannot be constructed as the union of other cycles) directed cycles of this graph. This is different from what the ...

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...