建图示例
ROS1 建图(v3.1.04 及更高版本)
Section titled “ROS1 建图(v3.1.04 及更高版本)”本示例使用高翔博士团队在 Github 上发布的 SLAM Mapping(faster-lio)方案。主要操作流程和数据流图如下:

建图包位于 ~/lite_cog/slam/src 路径下,包含三个包:faster-lio、pcd_2_gridmap 和 map_server。faster-lio 包负责构建 3D 点云地图(.pcd),pcd_2_gridmap 包负责将 3D 点云地图(.pcd)转换为栅格地图(.pgm)并发布,map_server 包负责保存栅格地图(.pgm)。
注意: 建图前请检查
/home/ysc/lite_cog/system/map文件夹中是否有之前创建的地图。如果有,请将其移动到其他文件夹以避免覆盖。
注意: 建图需要较多计算资源,请先关闭 App 上的所有 AI 选项。
- 打开终端,输入以下命令启动雷达驱动(三选一):
cd /home/ysc/lite_cog/system/scripts/lidar./start_lslidar.sh # 镭神雷达./start_livox.sh # Livox 雷达./start_rslidar.sh # 速腾雷达如果雷达驱动节点启动失败,使用以下命令检查雷达是否已连接到感知主机:
ping 192.168.1.201
注意: 建图期间此终端应保持运行。
- 启动建图程序:
a) 启动建图程序的脚本 start_slam.sh 位于 /home/ysc/lite_cog/system/scripts/slam 路径下,内容如下:
#!/bin/sh
# 打开建图程序gnome-terminal -x bash -c "source /home/ysc/lite_cog/slam/devel/setup.bash; roslaunch faster_lio mapping_c16.launch; read -p 'Press any key to exit...'"
# 打开用于生成栅格地图的终端gnome-terminal -x bash -c "bash /home/ysc/lite_cog/system/scripts/slam/gridmap.sh; read -p 'Press any key to exit...'"
# 打开用于保存栅格地图的终端gnome-terminal -x bash -c "bash /home/ysc/lite_cog/system/scripts/slam/save_map.sh; read -p 'Press any key to exit...'"b) 使用 NoMachine 登录感知主机桌面并远程控制机器人起立后,打开终端输入以下命令启动建图程序:
cd /home/ysc/lite_cog/system/scripts/slam./start_slam.shc) 执行上述命令后,将启动 RViz 可视化工具,并在运行 start_slam.sh 的终端中生成三个标签页,分别运行 faster-lio、生成栅格地图和保存栅格地图。

-
操作机器人,引导其在指定区域周围移动以构建地图。转弯时请减速,并注意雷达的盲区,保持机器人与墙壁至少 0.5 米的距离。
-
完成指定区域扫描后,在 RViz 中检查点云地图是否与实际环境匹配。
-
完成地图扫描后,找到 faster-lio 程序对应的标签页,按 Ctrl+C 停止建图,程序将自动将 3D 点云文件(.pcd)保存到
~/lite_cog/system/map目录,并显示平均处理时间(仅供参考)。按回车关闭该标签页。

- 成功保存 3D 点云文件(.pcd)后,找到如下图所示的标签页,输入 1 并按回车。稍后 pcd_2_gridmap 包将被调用,将点云地图转换为栅格地图,当 RViz 窗口弹出并显示栅格地图时即可进行下一步。


-
保存栅格地图:选择显示 “when you want to save the grid map” 的终端,输入 2 并按回车调用 map_server。地图文件将保存到
/home/ysc/lite_cog/system/map,包括 .yaml 文件、.pgm 文件和 .pcd 文件。
-
如果栅格地图(.pgm)与实际环境不完全一致,或需要手动划定可通行区域,可使用 GIMP Image Editor 进行编辑。打开终端输入
gimp打开 GIMP Image Editor,将栅格地图(.pgm)拖入其中。

- 如果未显示工具箱,可在顶部菜单栏选择 [Windows] – [New Toolbox] 打开。
- 前景色(Foreground Color)指定铅笔颜色,背景色(Background Color)指定橡皮擦颜色。在栅格地图中,黑色区域不可通行,白色区域可通行,灰色区域未知。用户可使用铅笔或橡皮擦擦除噪声或添加虚拟墙。
- 点击 [File] – [Overwrite usr_map.pgm] 保存修改后的地图以覆盖原文件,关闭编辑器时无需再次保存。
-
完成所有操作后,请使用 Ctrl+C 关闭所有终端,以免影响后续流程。
-
地图文件默认保存在
/home/ysc/lite_cog/system/map目录。如果更改了地图文件的路径或名称,请按以下步骤操作以确保定位和导航程序能正确调用地图:
a) 更新对应 .yaml 文件中地图文件(.pgm)的路径,并修改 .yaml 文件名使其与 .pgm 文件名一致:
image: /home/ysc/lite_cog/system/map.pgm # 地图文件(.pgm)路径resolution: 0.050000...b) 进入 ~/lite_cog/nav/src/hdl_localization/launch 目录,在 local_rslidar_imu.launch 文件中配置地图文件的名称和路径:
<arg name="map_name" default="lite3" /> <!-- 定义地图文件名 -->...<node name="MapServer" pkg="map_server" type="map_server" args="/home/ysc/lite_cog/system/map/$(arg map_name).yaml"/>...<param name="globalmap_pcd" value="/home/ysc/lite_cog/system/map/$(arg map_name).pcd" />...ROS1 建图(低于 v3.1.04 版本)
Section titled “ROS1 建图(低于 v3.1.04 版本)”本示例使用日本丰桥技术科学大学 Kenji Koide 在 Github 上发布的 6DOF SLAM(hdl_graph_slam)方案。主要操作流程如下:

对应的数据流图如下:

/home/ysc/lite_cog/slam├── build── devel├── src│ ├── CMakeLists.txt│ ├── fast_gicp│ ├── hdl_graph_slam│ ├── map_server│ └── ndt_omp└── versionhdl_graph_slam 包负责构建地图。
注意: 建图前请检查
/home/ysc/lite_cog/system/map文件夹中是否有之前创建的地图。如果有,请将其移动到其他文件夹以避免覆盖。
注意: 建图需要较多计算资源,请先关闭 App 上的所有 AI 选项。
- 打开终端,输入以下命令启动雷达驱动(三选一):
cd /home/ysc/lite_cog/system/scripts/lidar./start_lslidar.sh # 镭神雷达./start_livox.sh # Livox 雷达./start_rslidar.sh # 速腾雷达如果雷达驱动节点启动失败,使用以下命令检查雷达是否已连接到感知主机:
ping 192.168.1.201 # 雷达 IP 均为 192.168.1.201- 启动建图程序:
a) 启动建图程序的脚本 start_slam.sh 位于 /home/ysc/lite_cog/system/scripts/slam 路径下,内容如下:
#!/bin/sh
# 打开 rvizgnome-terminal -x bash -c "cd /home/ysc/lite_cog/slam; source devel/setup.bash; roslaunch hdl_graph_slam mapping_rslidar_indoor.launch;"
# 打开 rvizgnome-terminal -x bash -c "bash /home/ysc/lite_cog/system/scripts/slam/rviz.sh"
# 打开用于生成栅格地图的终端gnome-terminal -x bash -c "bash /home/ysc/lite_cog/system/scripts/slam/gridmap.sh"
# 打开用于保存地图的终端gnome-terminal -x bash -c "bash /home/ysc/lite_cog/system/scripts/slam/save_map.sh"b) 使用 NoMachine 登录感知主机桌面并远程控制机器人起立后,打开终端输入以下命令启动建图程序:
cd /home/ysc/lite_cog/system/scripts/slam./start_slam.shc) 执行上述命令后,将生成五个终端窗口,分别为运行建图脚本的终端、建图程序运行的终端、RViz 开启终端、生成栅格地图的终端、保存地图的终端(下图中左侧为雷达驱动程序窗口,右侧为建图程序脚本窗口):

- 若要在建图过程中实时看到建图效果,找到 RViz 可视化节点对应的终端(如下图所示),输入数字 1 并按回车键,此时会打开 RViz 可视化界面(打开此界面会降低建图性能,若后面对建图效果不满意,请尝试不打开可视化,并在建图时关闭 NoMachine 远程界面,减少算力资源占用)。

-
操作机器人,引导其在指定区域周围移动以构建地图。转弯时请减速,并注意雷达的盲区,保持机器人与墙壁至少 0.5 米的距离。
-
完成指定区域扫描后,查看建立的点云地图是否与真实环境符合(若之前未打开 RViz 可视化界面,则在此时打开)。若地图较大或存在回环(例如绕了房子一圈),请查看回环处的地图是否重合,若不重合,可以再绕一圈,使程序进一步完成回环检测。
-
点云地图扫描完成后,找到 grid map 节点对应的终端(如下图所示),输入 2 并按回车键后稍等一会,此时会调用 octomap 功能包将点云地图转化为栅格地图。

- 在点云地图转化为栅格地图之后,找到 save map 对应的节点终端(如下图所示),输入数字 3 并按回车键后稍等一会,此时会调用 map_server 功能包保存栅格地图,相关文件将保存到
/home/ysc/lite_cog/system目录下的 map 文件夹中(包括 .yaml 文件、.pgm 文件以及 .pcd 文件)。

- 如果栅格地图(.pgm)与实际环境不完全一致,或需要手动划定可通行区域,可使用 GIMP Image Editor 进行编辑。打开终端输入
gimp打开它,将栅格地图(.pgm)拖入 GIMP Image Editor。

- 如果未显示工具箱,可在顶部菜单栏选择 [Windows] – [New Toolbox] 打开。
- 前景色(Foreground Color)指定铅笔颜色,背景色(Background Color)指定橡皮擦颜色。在栅格地图中,黑色区域不可通行,白色区域可通行,灰色区域未知。用户可使用铅笔或橡皮擦擦除噪声或添加虚拟墙。
- 点击 [File] – [Overwrite usr_map.pgm] 保存修改后的地图以覆盖原文件,关闭编辑器时无需再次保存。
-
完成所有操作后,请使用 Ctrl+C 关闭所有终端,以免影响后续流程。
-
地图文件默认保存在
/home/ysc/lite_cog/system/map。如果更改了地图文件的路径或名称,请按以下步骤操作以确保定位和导航程序能正确调用地图:
a) 更新对应 .yaml 文件中地图文件(.pgm)的路径,并修改 .yaml 文件名使其与 .pgm 文件名一致:
image: /home/ysc/lite_cog/system/map.pgm # 地图文件(.pgm)路径resolution: 0.050000...b) 进入 ~/lite_cog/nav/src/hdl_localization/launch 目录,在 local_rslidar_imu.launch 文件中配置地图文件的名称和路径:
<arg name="map_name" default="lite3" /> <!-- 定义地图文件名 -->...<node name="MapServer" pkg="map_server" type="map_server" args="/home/ysc/lite_cog/system/map/$(arg map_name).yaml"/>...<param name="globalmap_pcd" value="/home/ysc/lite_cog/system/map/$(arg map_name).pcd" />...ROS2 建图
Section titled “ROS2 建图”本示例使用高翔博士团队在 Github 上发布的 SLAM Mapping(faster-lio)方案。主要操作流程和数据流图如下:

ysc@lite:~/lite_cog_ros2/slam/src$ tree ..├── faster-lio├── map_server└── pcd2gridfaster-lio 包负责构建 PCD 地图,pcd2grid 包负责将 PCD 地图转换为栅格地图并发布,map_server 包负责保存栅格地图。
注意: 建图前请检查
/home/ysc/lite_cog_ros2/system/map文件夹中是否有之前创建的地图。如果有,请将其移动到其他文件夹以避免覆盖。
注意: 建图需要较多计算资源,请先关闭 App 上的所有 AI 选项。
- 打开终端,输入以下命令启动雷达驱动(三选一):
cd ~/lite_cog_ros2/system/scripts/lidar./start_lslidar.sh # 镭神雷达./start_livox.sh # Livox 雷达./start_rslidar.sh # 速腾雷达如果雷达驱动节点启动失败,使用以下命令检查雷达是否已连接到感知主机:
ping 192.168.1.201 # 雷达 IP 均为 192.168.1.201注意: 建图期间此终端应保持运行。
- 启动建图程序:
a) 启动建图程序的脚本 start_slam.sh 位于 ~/lite_cog_ros2/system/scripts/slam 目录,内容如下:
#!/bin/sh
# start rvizgnome-terminal -x bash -c "source /home/ysc/lite_cog_ros2/slam/install/setup.bash; ros2 launch faster_lio mapping_c16.launch.py; read -p 'Press Enter to exit...'"
# start a terminal for generating grid_mapgnome-terminal -x bash -c "bash /home/ysc/lite_cog_ros2/system/scripts/slam/gridmap.sh; read -p 'Press Enter to exit...'"
# Open a terminal for Saving Mapgnome-terminal -x bash -c "bash /home/ysc/lite_cog_ros2/system/scripts/slam/save_map.sh; read -p 'Press any key to exit...'; read -p 'Press Enter to exit...'"b) 使用 NoMachine 登录感知主机桌面并远程控制机器人起立后,打开终端输入以下命令启动建图程序:
cd ~/lite_cog_ros2/system/scripts/slam./start_slam.shc) 执行上述命令后,将生成四个终端窗口,分别为运行建图脚本的终端、建图程序运行的终端、生成栅格地图的终端、保存地图的终端(下图中左侧为雷达驱动程序窗口,右侧为建图程序脚本窗口):

-
操作机器人,引导其在指定区域周围移动以构建地图。转弯时请减速,并注意雷达的盲区,保持机器人与墙壁至少 0.5 米的距离。
-
完成指定区域扫描后,检查点云地图是否与实际环境匹配。
-
点云地图扫描完成后,找到 faster-lio 程序对应的终端输入 Ctrl+C 停止建图,程序将自动保存 PCD 文件到
~/lite_cog_ros2/system/map目录下,并显示统计得到的平均处理耗时(耗时仅供参考,具体数值可能有所浮动),再次按下回车键可退出终端。

- PCD 文件保存成功后,找到 grid map 节点对应的终端(如下图所示),输入 1 并按回车键后稍等一会,此时会调用 pcd2grid 功能包将点云地图转化为栅格地图,当弹出 RViz 窗口显示栅格地图时可进行下一步。


- 在点云地图转化为栅格地图之后,找到 save map 对应的节点终端(如下图所示),输入数字 2 并按回车键后稍等一会,此时会调用 map_server 功能包保存栅格地图,文件将保存到
/home/ysc/lite_cog_ros2/system目录下的 map 文件夹中(包括 .yaml 文件、.pgm 文件)。

- 如果栅格地图(.pgm)与实际环境不完全一致,或需要手动划定可通行区域,可使用 GIMP Image Editor 进行编辑。打开终端输入
gimp打开 GIMP Image Editor,将栅格地图(.pgm)拖入其中。

- 如果未显示工具箱,可在顶部菜单栏选择 [Windows] – [New Toolbox] 打开。
- 前景色(Foreground Color)指定铅笔颜色,背景色(Background Color)指定橡皮擦颜色。在栅格地图中,黑色区域不可通行,白色区域可通行,灰色区域未知。用户可使用铅笔或橡皮擦擦除噪声或添加虚拟墙。
- 点击 [File] – [Overwrite usr_map.pgm] 保存修改后的地图以覆盖原文件,关闭编辑器时无需再次保存。
-
完成所有操作后,请使用 Ctrl+C 关闭所有终端,以免影响后续流程。
-
地图文件默认保存在
/home/ysc/lite_cog_ros2/system/map目录。如果更改了地图文件的路径或名称,请按以下步骤操作以确保定位和导航程序能正确调用地图:
a) 更新对应 .yaml 文件中地图文件(.pgm)的路径,并修改 .yaml 文件名使其与 .pgm 文件名一致:
image: /home/ysc/lite_cog_ros2/system/map.pgm # 地图文件(.pgm)路径resolution: 0.050000...b) 进入 ~/lite_cog_ros2/nav/src/hdl_localization/launch 目录,在 lite_localization.launch.py 文件中配置地图文件的名称和路径:
declare_map_server_config_file_cmd = DeclareLaunchArgument( 'map_server_config_file', default_value=os.path.join( '/home/ysc/lite_cog_ros2/system/map/lite3.yaml' ))...parameters=[ {"globalmap_pcd": "/home/ysc/lite_cog_ros2/system/map/lite3.pcd"}, ...