多目标路径规划:IMOMD-RRT*算法详解


多目标路径规划项目结构与关键算法解析

一、项目版本概览

该路径规划项目共包含两个主要版本:

两个版本的共同点

  • 配置文件路径:config/algorithm_config.yaml

    • system: 使用不同算法的编号

    • destination: 定义目标点的 ID 列表

    • map: 指定使用的地图文件

    • pseudo:

      • 1: 仅规划起点到终点
      • 0: 多目标路径规划

两个版本的区别

✅ 新版特点:
  • 路径生成由 src/main 可执行文件完成;
  • 支持三种算法生成 .csv 文件(保存在 experiments/ 文件夹中);
  • plot_result.py 可生成可视化对比曲线,展示多个指标下的三种算法表现;
  • 需手动将 .csv 文件放入脚本指定路径才能正确绘图。
✅ 旧版特点:
  • 支持 实时 RViz 可视化路径
  • 启动:launch/osm.launch
  • driver_mode = 1:使用 algorithm_config.yaml 中定义的目标点;
  • driver_mode = 0:用户在 RViz 中手动打点生成路径;
  • ⚠️ 修改 driver_mode 后需重新 catkin_make
  • num_objectives 仅在 driver_mode=0 时生效;
  • 路径显示数量取决于 destination 参数设置。

两版本的联系:

  • 旧版本 RViz 显示路径后会自动将路径数据生成到新版的 experiments/ 文件夹中对应的 .csv 文件。

二、TSP 与 R-TSP 问题引入

经典 TSP(Traveling Salesman Problem):

寻找一个旅行商经过所有城市一次并返回起点的最短路径,是组合优化与图论的重要问题。

本项目所用 R-TSP(Relaxed TSP):

  • 宽松版本 TSP,允许一个点被访问多次;
  • 但仍需保证路径的 起点和终点顺序
  • 更贴合机器人/小车复杂路径规划实际需求。

三、路径规划中的伪目标点与陷阱处理

❓ 问题:什么是“逃离陷阱”?为什么要引入伪目标点?

✅ 回答:

在路径规划中,陷阱指的是算法陷入局部最优解,无法走出当前区域或错误路径。

引入采样算法的意义:

  • 避免陷入局部最优;
  • 随机性采样 → 提高全局探索能力;
  • 常见方法如蒙特卡洛采样

伪目标点(Pseudo-Destination)作用总结

  1. 避免局部最优陷阱
  2. 辅助避障,临时绕行;
  3. 优化路径质量
  4. 支持动态环境下的实时调整

✅ 本质是提升算法在复杂环境下的灵活性与鲁棒性。


四、IMOMD-RRT* vs. RRT* 的六大区别

编号 区别点说明
RRT* 随机全图采样,IMOMD-RRT* 仅在道路上可能的点进行采样
IMOMD 从路径中途的可扩展点采样作为 Vrand,而非直接从树中节点采样
给 Vnew 节点重新选择最优父节点,最小化总成本
使用跳点搜索(Jump Point Search)加速树扩展
对邻域节点进行重新布线以优化树结构
若某点连接了两棵树,该点被视为连接点(桥接)

五、为什么 RRT* 有图还需求 R-TSP?

虽然 RRT* 可生成有权图,但:

  • RRT* 专注于“到达一个目标点的最短路径”;
  • R-TSP/IMOMD-RRT* 关注“在多个目标之间如何选择顺序”;
  • 二者解决的问题层级不同,IMOMD 解决的是路径排序 + 连接优化的组合优化问题。

️ 六、ROS 路径规划中的地图与定位机制详解

map_server 与 move_base

  • map_server 节点发布 /map 静态地图;

  • 若不启动 map_server/map 话题为空;

  • move_base 核心导航模块,依赖 /map

    • 订阅 /map,生成 全局/局部代价地图
    • 若无 /map,则无法生成有效代价地图。

Cartographer 与 Relocation 重定位

  • 推荐cartographer 自带的 .pbstream 发布 /map
  • 启动更快,定位更精准;
  • 若用 .pgm + map_server,Cartographer 定位慢、误差大;
  • 初始位置错误时,可自动重定位,但耗时长、稳定性差。

修改 cartographer 初始定位教程:传送门


代价地图结构理解

名称 功能
静态地图层 显示全局障碍
障碍物地图层 实时探测障碍
膨胀层(inflation) 扩大障碍半径,保障路径安全
  • 全局代价地图

    • 基于静态地图生成;
    • 膨胀区域持续保持;
  • 局部代价地图

    • 以机器人为中心,实时更新;
    • 仅维护当前运动范围。

七、实用技巧与建议

  • amcl 初始位置可通过 RViz 中的“2D Pose Estimate”手动设定;
  • 每次修改 driver_mode 或目标点后记得重新 catkin_make
  • .csv 输出路径文件可用于后续路径指标评估和绘图;
  • 合理使用伪目标点与多目标策略,提升在复杂环境下的鲁棒性。

你可能感兴趣的:(多目标路径规划:IMOMD-RRT*算法详解)