问题标签 [motion-planning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 摩尔社区的局部最小值
在尝试使用波前算法时,我遇到了一个我无法轻松解决的场景。我用波前算法填充数组并使用摩尔邻域,考虑到几个邻居完全相同,我如何决定走哪条路。
我当地的邻居有 4,4,5,5,5,4,5,6 的值。局部最小值是 4,但在这种情况下我有 3 个。如果有几个局部最小值需要移动,我该如何做出决定。现在我正在随机决定是否存在相等的值,但我觉得有更好的方法来决定。
通往目的地的所有路径都具有相同的步数(5 步),但所走的每条路径都不同。我还假设为路径选择了局部最小值。
我的问题是,给定相同数量的步骤(在波前),除了随机化或比较器的顺序之外,还有其他方法可以决定从一个块移动到另一个块的方式吗?
只是一个符号,99 表示一个障碍。
仅纯局部最小值或比较器顺序的问题是下图所示的失败案例。
我不是在寻找这个问题的 Astar 解决方案,但我觉得在这种情况下,我将面临完全相同的决策问题,因为所有路径都是平等的。
谢谢
编辑:我错误地生成了数字,很尴尬。
这是波前的正确生成
正确生成时,它显示只有 1 条路径
即使障碍有点复杂
注意:在所有图像(已校正)中,路径是使用 Van Neumann 邻域生成的,而运动是通过 Moore 邻域生成的。
但是,如果使用范诺依曼邻域生成和范诺依曼导航,问题又出现了。
tree - RRT 和 RRT 的时间和空间复杂度*
RRT 和 RRT* 的时间和空间复杂度是多少?与基于图的增量启发式算法相比,基于增量采样的算法如何执行
python-3.x - 寻找最优路径
我试图找到从给定
initial_state(形式为 list[row,col,orientation])到给定目标(形式为 list[row,col])的汽车的最佳路径。
汽车可以沿方向(上、左、下、右)自由前进。
它可以执行 3 个动作,分别是:
右转前进(2)、前进(1)、左转前进(20)
注意:括号中的数字是执行相应动作所涉及的成本
转向发生在同一个单元格中。
由 0 和 1 组成的2D 列表(称为grid)作为输入(2D 非循环世界)。
0 --- 可导航单元格
1 --- 不可导航单元格
任务是从多个可能的路径中找到一条路径(成本最低)。
这是我的代码。
我在不可导航的单元格处创建了一个具有任意高值 999(高于所涉及的最大成本)的 2D 列表值。
接下来我创建一个空列表(称为 Routes),它将存储不同的路由。每条路线将采用以下形式 - [成本、路线中的单元格列表、汽车的最终方向]。在进入 while-Loop 之前,Route 被初始化为初始状态(因为它将成为任何 Route 的一部分)。
一个 for 循环检查有效邻居(邻居的有效性 - 应该在网格中,应该是可导航的)。
对于一个有效的邻居——
在 thisRoute 中创建 presentRoute 的副本。
将新的单元格坐标附加到路线中的单元格列表中。
根据执行的操作更新成本。
根据动作更新最终方向。
*最后将此新路由附加到 Routes。
(对于每个有效的邻居,一个新的路由被附加到 Routes 中)
Routes[0] 现已删除。在对路线进行排序时,列表中的第一条路线将是成本最低的路线。变量 'r' 和 'c' 用 min-cost Route 的最后一个单元格更新。
一旦 [r,c] 等于目标,我们就找到了成本最低的路线。
输出与我的信念不同。我查找此代码中的错误。
graph-algorithm - 当 RRT 用于没有解决方案的配置空间时会发生什么?
当 RRT 或其变体(例如 RRT-connect)用于没有解决方案的配置空间时会发生什么?(例如,当所有现有路径都没有碰撞时)
它只是永远循环吗?
localization - 机器人在遵循 ros nav stack 给出的路径之前高速倒车
我将 ros nav stack 与 google cartographer(映射和本地化)结合使用,在已知地图中导航机器人。现在,机器人遵循以可接受的精度生成的路径。但是,通常,一旦生成了路径,机器人就会以 params 文件中设置的最高速度(escape_velocity 参数)反转,然后开始在生成的路径上正确前进。
我附上了我所有参数文件的图像: 1. Praram Files-1 2. Param Files-2。顶部提到了每个参数文件的名称。但为避免混淆,它们的顺序如下:
A. Param Files-1: 1. Global Costmap Params 2. Local Costmap Params 3. Common Costmap Params 4. Global Plnner Params 5. Local Planner Params
B. 参数文件-2:移动基础参数
这是 rviz 上的视频链接。https://vimeo.com/320040685
绿色的细线是 ros nav stack 生成的计划。视频后面看到的较粗的线是实际的机器人运动。可以看到机器人先倒车,然后开始向前移动。
我是这个论坛的新手,所以如果我需要提供更多数据让任何人回答这个问题,请告诉我
还有其他人有这个问题吗?将不胜感激有关解决此问题的任何提示!提前致谢!
PS:我在 Ubuntu 14.04 上使用 ROS Indigo
python - 我们是如何在 A 星算法中给出这些八个方向的值的?
我正在尝试基于此代码实现我自己的代码。当我阅读这段代码时,我对这部分感到困惑。以下函数的部分:
作者是如何给出这些值的?我知道我们什么时候开始检查 8 个邻居,但是这些数字是多少?我的意思是这些 [1, 0, 1] 等等。如果我想为 3D 生成它们会是什么?
这是下面的A星算法Python代码:
python - (pin) 在这里意味着什么?
我正在阅读有关 A 星算法的 Python 代码。对我来说,我理解这个算法是如何工作的,但是当我谈到代码时,我得到了一些令人困惑的东西,直到理解为止。根据下面的代码片段,我的意思是类节点,这里 pind 意味着什么?会怎么做。。
这是Python中A星算法的完整代码
python - 如何将 A 星算法的公式修改为我需要的以下内容?
我正在研究 A 星算法。我正在尝试根据 A 星为无人机建立轨迹。我在下面实现了我的代码。我需要考虑障碍物的高度并修改我的方程式:
F= G+H
至F=H+G+E
E:代表障碍物的标高。我们让无人机在地图上的特定高度飞行,如果障碍物非常高(这意味着它的风险非常高),障碍物和无人机之间的距离太近,所以无人机会更喜欢飞越短障碍。如果障碍物高于无人机的高度,它会掉头。
我添加了一个带有随机高度生成和drone_altitude 的高程图,但它不适用于我。请问我可以得到一些帮助吗?
A-star Python 代码: