Cursor 调试C++ ego planner代码 (3)地图生成器 (mockamap)
2025-08-25
ROS
00

目录

原有地图
如何造自己的地图
回顾包的作用
mockamap包的主要作用
主要功能:
具体的地图生成方式:
关键参数:
mockamap的type参数控制层级
1. 最终控制者:用户/开发者
2. 主要集成控制:simulator.xml

原有地图

src/uav_simulator/mockamap/src/mockamap.cpp 去ws:

bash
展开代码
# 使用 Debug 模式构建 catkin_make -DCMAKE_BUILD_TYPE=Debug

初始化环境:

bash
展开代码
source devel/setup.bash

删除以前得roscore的进程,可能经常用,用来清理环境:

bash
展开代码
pkill -f roscore pkill -f rosmaster

启动roscore:

bash
展开代码
# 终端1:启动roscore cd /xd_ws/ego-planner export ROS_MASTER_URI=http://localhost:11311 source devel/setup.bash roscore

启动地图:

bash
展开代码
# 终端2:启动mockamap(使用相同端口) cd /xd_ws/ego-planner export ROS_MASTER_URI=http://localhost:11311 source devel/setup.bash roslaunch mockamap mockamap.launch

roslaunch mockamap mockamap.launch 自动加载 rviz.rviz 配置,配置文件在config里,在rviz里保存配置也是保存到配置文件来。

从launch文件中可以看到,RViz 启动时使用了配置文件:

bash
展开代码
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mockamap)/config/rviz.rviz"/>

RViz 左边设置 Global Options 里的数据格式为world。在PointCloud2里,设置topic为 /mock_mao ,设置Style 为Points。

image.png

如何造自己的地图

新建节点文件,然后仿造原有地图节点,写文件,简单的地图,更易于学习:

image.png

启动地图:

bash
展开代码
catkin_make && source devel/setup.bash && roslaunch mockamap2 mockamap2.launch

image.png

回顾包的作用

mockamap包的主要作用

mockamap是一个用于生成模拟3D环境地图的ROS包,主要用于UAV(无人机)仿真测试。它能够生成各种类型的3D障碍物环境,为路径规划算法提供测试场景。

主要功能:

  1. 生成多种类型的地图

    • Type 1: Perlin噪声3D地图 - 使用Perlin噪声算法生成自然的3D地形
    • Type 2: 随机障碍物地图 - 生成随机分布的立方体障碍物
    • Type 3: 2D迷宫地图 - 生成2D迷宫结构
    • Type 4: 3D迷宫地图 - 生成复杂的3D迷宫结构
  2. 输出格式

    • 以PointCloud2格式发布地图数据
    • 话题名:/mock_map
    • 坐标系:world

具体的地图生成方式:

  1. Perlin噪声地图 (perlin3D()):

    • 使用Perlin噪声算法生成自然的3D地形
    • 可调节复杂度、填充率、分形细节等参数
    • 适合模拟真实的山地或复杂地形
  2. 随机障碍物地图 (randomMapGenerate()):

    • 在指定空间内随机生成立方体障碍物
    • 可设置障碍物数量、尺寸范围
    • 适合测试避障算法
  3. 迷宫地图 (maze2D(), Maze3DGen()):

    • 生成具有通道和墙壁的迷宫结构
    • 2D迷宫使用递归分割算法
    • 3D迷宫基于Voronoi图原理生成

关键参数:

  • resolution: 地图分辨率(默认0.1米)
  • x_length, y_length, z_length: 地图尺寸
  • seed: 随机种子,确保可重复性
  • type: 地图类型(1-4)

mockamap的type参数控制层级

1. 最终控制者:用户/开发者

用户通过选择不同的launch文件来控制type参数:

  • mockamap.launch: type = 1 (Perlin噪声3D地图)
  • perlin3d.launch: type = 1 (Perlin噪声3D地图)
  • post2d.launch: type = 2 (随机障碍物地图)
  • maze2d.launch: type = 3 (2D迷宫地图)
  • maze3d.launch: type = 4 (3D迷宫地图)

2. 主要集成控制:simulator.xml

在ego-planner的主要仿真启动文件中,simulator.xml硬编码了:

xml
展开代码
<param name="type" type="int" value="1"/>

这意味着在ego-planner的仿真环境中,默认使用Perlin噪声3D地图

image.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!