人形机器人第四章全局路径规划与局部避障

📅 2026/7/7 2:24:58
人形机器人第四章全局路径规划与局部避障
动态障碍物去除方法2D导航图制作基于A*的全局路径规划下图是两种方法全局路径规划A*一、左侧ROS 程序外层调度程序整体运行逻辑启动 ROS 节点打开规划程序注册 ROS 通信节点准备接收地图、机器人位置、目标点数据。节点初始化开启 3 个数据回调地图回调接收激光 SLAM 建好的栅格地图做膨胀地图把障碍物向外扩一圈防止机器人贴墙碰撞里程计回调实时读取机器人当前位置作为寻路起点目标点回调接收用户 / 上层下发的终点坐标。判断是否同时拿到地图 起点 终点没凑齐数据 → 等待数据持续监听三样数据全部到位 → 启动 A * 核心寻路计算。A * 算出路径后处理 把栅格地图坐标转成真实世界坐标系通过话题发布规划好的路线流程结束。二、右侧虚线框A * 核心寻路循环找最短无碰撞路径1. 初始化准备创建两个集合开放集待考察的格子候选路径点封闭集已经算过、不再重复考察的格子 把机器人起点放进开放集开启循环。2. 主循环反复执行直到找到终点 / 无路可走检查开放集是否空了空 所有可行格子都遍历完找不到终点规划失败从开放集取出「综合代价最小」的最优格子A * 核心代价 已经走的路程 预估到终点的剩余距离优先走综合代价最低的格子判断这个格子是不是终点是终点直接跳出循环规划结束不是终点把这个格子放进封闭集不再重复计算遍历当前格子上下左右 8 个邻居格子逐个校验邻居 ① 邻居是障碍物 / 已经在封闭集 → 直接跳过不处理 ② 有效空白格子计算走到这个邻居的综合代价 ③ 对比旧路径代价如果这条新路更优更新代价、记录父节点用来回溯整条路径放入开放集回到主循环开头重复迭代。3. 循环结束后回溯路径从终点顺着记录的父节点反向倒推就能得到完整从起点到终点的最优路线。大白话总结程序一边实时收地图、机器人位置、目标点三样齐全就启动 AA不断优先走 “离起点近、离终点也近” 的格子避开障碍物记录每个格子的来路碰到终点就反向拉出完整路线没格子可走就报规划失败。基于DWA的局部路径规划DWA 局部路径规划 通俗完整讲解整张图分为两大模块左侧DWA Planner 局部规划器、右侧Position Control 总控制调度配合前面 A * 全局路径实现「全局指路 局部避障」导航。一、右侧 Position Control 总调度ROS 顶层循环初始化节点 订阅所有话题里程计话题获取机器人实时位置目标点话题接收导航终点A全局路径话题拿到 A算出的远距离全局路线障碍物话题接收激光点云识别的障碍物信息。进入持续控制循环判断当前视野内有没有障碍物有障碍物切 DWA 避障控制走左侧 DWA 逻辑无障碍物正常跟踪 A * 全局路径根据当前路径点计算前进速度统一输出速度指令/cmd_vel发给机器人底盘循环往复直到抵达终点。二、左侧 DWA Planner 局部避障核心流程1. 初始化与数据实时更新启动时先设置机器人尺寸、最大速度、安全距离等参数 三个回调实时刷新数据里程计更新自身当前位置A * 路径从全局路线提取分段航点作为局部参考激光点云过滤、聚类更新障碍物信息。2. 环境状态判断结合机器人位置、全局参考路径、障碍物点云识别前方障碍物判断是否需要启动避障 DWA需要避障有障碍物→ DWA 避障模式速度采样在机器人速度上下限内批量生成多组「线速度 角速度」候选组合每组速度推演一条短期局部轨迹打分评估给每条模拟轨迹算综合分数贴近全局路径分 远离障碍物安全分 速度顺滑分择优选择选出总分最高、安全又贴合全局路线的速度参数。无需避障无障碍物→ 正常跟随模式直接沿 A * 全局路径匀速前进不做复杂轨迹采样。3. 终点判断与指令下发把算出的最优速度打包成控制指令下发给底盘判断是否到达导航终点到达终点停止机器人运动结束导航未到终点回到数据更新步骤循环持续规划。三、大白话总结全局逻辑A负责远距离规划一条无碰撞的全局大路全局规划DWA 负责盯着眼前激光雷达实时微调速度没障碍物就老老实实跟着 A路线走 突然出现行人、杂物立刻批量模拟多条转弯减速轨迹选最安全、不偏离大路的一条输出速度控制机器人绕开障碍全程循环直到走到目标点。补充A * 和 DWA 分工区别A*全局规划看整张地图找远距离最优路线不处理临时动态障碍物DWA局部规划只看雷达近处视野实时动态避障修正局部行驶轨迹输出底盘速度指令。实践机器人自主探索Tare Planner 完全无人的遍历Far Planner