ROS 入门第三讲: Hector_Mapping
约 750 字大约 3 分钟
2025-10-31
一、Hector_Mapping的介绍
核心特点:Hector_Mapping 是一种无需里程计数据的 SLAM 方法,它利用激光雷达获得二维姿态估计。该算法对硬件要求较低,不需要将雷达固定,也不需要里程计数据,但需要高精度的激光扫描仪,如 SICK、hokuyo 等。
主要步骤:首先对激光雷达数据进行预处理,包括去除离群点和地面平面拟合;然后构建概率栅格地图,将地图分成各个小网格,并在每个网格中存储该区域被占据的概率;接着提取激光雷达的特征,建立机器人运动模型;再使用扩展卡尔曼滤波(EKF)算法对机器人位置进行估计;最后将估计出的位置和地图信息进行更新,生成最终的地图。
应用场景:该系统已成功应用于无人地面机器人、无人地面车辆、手持测绘设备、四旋翼无人机等多种设备,在机器人导航、环境监测等领域发挥了重要作用。
在 ROS 中的应用:Hector_Mapping 是基于 ROS(Robot Operating System)的 SLAM 算法库。在 ROS 中,它是一个 LIDAR 节点,有相应的订阅话题和发布话题。例如,它订阅
scan话题获取 SLAM 系统使用的激光扫描数据,订阅syscommand话题接收系统命令;发布map_metadata话题提供地图元数据,发布map话题提供 2D 栅格地图数据等。
二、Hector_Mapping第一次建图
1.下载Hector_Mapping工具包
sudo apt install ros-noetic-hector-mapping2.运行仿真环境
roslaunch wpr_simulation wpb_stage_slam.launch3.运行slam节点
rosrun hector_mapping hector_mapping4.运行rviz,并添加机械人,laserscan和map
rosrun rviz rviz5.打开速度控制工具移动工具人
rosrun rqt_robot_steering rqt_robot_steering三、通过launch文件启动建图功能
1.进入工作目录
cd catkin_ws/src/2.创建软件包
catkin_create_pkg slam_pkg roscpp rospy std_msgs3.打开vscode,在软件包目录下新建一个名为launch的文件夹,并在launch文件夹中建立hector.launch的文件(内容如下)
<launch>
<include file="$(find wpr_simulation)/launch/wpb_stage_slam.launch"/>
<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping"/>
<node pkg="rviz" type="rviz" name="rviz"/>
<node pkg="rqt_robot_steering" type="rqt_robot_steering" name="rqt_robot_steering"/>
</launch>4.然后编译运行
roslaunch slam_pkg hector.launch四、move_base
1.进入工作目录
cd catkin_ws/src/2.下载工程源代码
git clone http://github.com/6-robot/wpb_home.git](http://github.com/6-robot/wpb_home.git3.进入脚本文件夹
cd wpb_home/wpb_home_bringup/scripts/4.获取依赖
./install_for_noetic.sh5.回退工作空间,进行编译
cd ~/catkin_ws/
catkin_make6.打开新终端并打开虚拟场景,建图并保存地图
roslaunch wpr_simulation wpb_gmapping.launch
rosrun wpr_simulation keyboard_vel_ctrl
rosrun map_server map_saver -f map7.将地图数据放置到maps文件夹里 8.打开系统终端进入工作目录创建软件包,并且创建launch文件再编译
cd catkin_ws/src/
catkin_create_pkg nav_pkg roscpp rospy move_base_msgs actionlib9.打开终端,运行仿真环境
roslaunch wpr_simulation wpb_stage_robocup.launch
roslaunch nav_pkg nav.launch