制作社交网站,成都搜索优化整站优化,推广费用一般多少钱,深圳建工集团原来是用栅格地图的方式#xff0c;0表示可通行区域#xff0c;1表示不可通行区域#xff0c;然后采用JPS算法做路径规划#xff0c;从起点到终点规划出一条路径。但是目前我需要做的是将栅格地图更换为ESDF地图#xff0c;那么JPS算法计算代价的部分是否需要进行变化。
…原来是用栅格地图的方式0表示可通行区域1表示不可通行区域然后采用JPS算法做路径规划从起点到终点规划出一条路径。但是目前我需要做的是将栅格地图更换为ESDF地图那么JPS算法计算代价的部分是否需要进行变化。
栅格地图和ESDF地图的区别 首先ESDFEuclidean Signed Distance Field地图不仅提供障碍物信息还能给出每个点到最近障碍物的距离这比二值化的栅格地图0和1包含更多信息。传统JPS在栅格中使用的是曼哈顿或欧氏距离作为启发式而代价通常只是移动成本比如每个格子的固定成本或者考虑地形因素。
JPS算法中代价函数修改策略
接下来需要考虑如何修改JPS的代价函数。传统JPS的g(n)是起点到当前节点的实际代价h(n)是当前节点到终点的估计代价。在ESDF中g(n)可能需要包括当前节点的ESDF值比如用1/(d1)或者指数衰减函数来增加靠近障碍物的节点的代价。同时启发式函数h(n)可能仍然保持欧氏距离但需要确保它是可接受的即不会高估实际代价否则A*可能找不到最优路径。 另外节点之间的移动成本也需要调整。在栅格中相邻节点移动成本通常是固定的比如1。但在ESDF中可能需要根据相邻节点的ESDF值来调整移动成本。例如从高ESDF值远离障碍物移动到低ESDF值靠近障碍物的区域成本会增加从而避免路径靠近障碍物。 还需要考虑的是ESDF地图中的距离值可能很大直接使用这些值可能导致代价函数失衡需要进行归一化或适当的缩放。例如使用sigmoid函数将ESDF值转换为0到1之间的权重再与其他因素结合。
可能的深层需求是希望路径在安全性和长度之间取得平衡。因此代价函数可能需要一个权重参数用来调整安全性和路径长度的优先级。比如cost distance_cost safety_weight * safety_cost这样用户可以通过调整safety_weight来改变路径的倾向。
另外需要注意ESDF地图的计算是否正确确保每个节点的距离值准确。如果ESDF地图中存在噪声或错误可能会影响路径规划的结果。因此预处理ESDF地图比如平滑处理或去除小的错误区域可能也是必要的。
ESDF地图特性与代价函数设计
def get_g(self, pos1, pos2):# ESDF安全代价离障碍物越近代价越高safety_weight 0.6 # 安全系数可调参数slope_weight 0.3 # 坡度权重可调参数d self.ESDF_map[round(pos2[0])][round(pos2[1])]safety_cost 1 / (abs(d) 1e-5) # 距离越近代价越高# 坡度惩罚可选slope_penalty abs(self.ESDF_map[round(pos1[0])][round(pos1[1])] - d)if pos1[0] pos2[0]:return abs(pos1[1] - pos2[1]) safety_weight * safety_cost slope_penalty * slope_weightelif pos1[1] pos2[1]:return abs(pos1[0] - pos2[0]) safety_weight * safety_cost slope_penalty * slope_weightelse:return abs(pos1[0] - pos2[0]) * 1.4 safety_weight * safety_cost slope_penalty * slope_weight
启发函数改进
def heuristic(node, goal, esdf_map):# 基础欧式距离dx abs(node.x - goal.x)dy abs(node.y - goal.y)base_h math.sqrt(dx**2 dy**2)# 安全加成可选d esdf_map[node.x][node.y]safety_h 1 / (d 1) # 离障碍物越近启发值越高return base_h 0.3 * safety_h # 加权组合
关键参数说明
参数推荐值作用safety_weight0.3-0.8安全避障权重slope_penalty0.1-0.3地形起伏惩罚安全距离阈值3-5 cells拒绝进入该距离内的区域
效果对比
指标原始A*ESDF-A*路径长度最短略长1-5%安全距离可能贴障碍物保持安全距离计算时间快增加20-40%适用场景简单环境动态/复杂环境
仿真结果