Robosense 激光雷达slam建图(3):使用hector_slam建图

前面两篇文章进行了激光雷达的测试和三维点云转二维,这里就可以进行slam建图了,我们这里采用hector_slam包进行建图。

1,安装hector_slam

cd ~/catkin_ws/src
git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam
cd ~/catkin_ws
catkin_make

2,修改tutorial.launch文件

cd ~/catkin_ws/src/hector_slam/hector_slam_launch/launch
gedit tutorial.launch

将原来的文件改为如下:





  

  

  

  

  
    
    
  

  

  


主要做了两点修改:

  1. 中的true改为false;
  2. 添加了两个tf变换坐标。

3,修改mapping_default.launch文件

上一步骤中修改了tf坐标的名称,这里也需要在对应的地方那个修改。如下:

cd ~/catkin_ws/src/hector_slam/hector_mapping/launch
gedit mapping_default.launch

修改如下:

  
  

4,修改rslidar中的frame_id

由于hector_slam从激光雷达处订阅的frame_id为laser, 而激光雷达发布的frame_id为rslidar,因此需要对rslidar中的源码进行修改,并重新编译。如下:

#源码位置
cd ~/catkin_ws/src/ros_rslidar/rslidar_driver/src
gedit rsdriver.cpp

private_nh.param("frame_id", config_.frame_id, std::string("rslidar")); 中的rslidar改为laser

#重新编译rslidar_ros
cd ~/catkin_ws/src
catkin_make

5,创建slam.launch文件

cd ~/catkin_ws/src/ros_rslidar/rslidar_pointcloud/launch
gedit slam.launch

在创建的空文本中输入如下:



  

  

  


第一个是启动激光雷达,第二个是将三维point转换为二维scan,第三个是执行hector_slam功能。

这里需要注意的是,第一个和第三个都启动了rviz,需要将第一个launch文件中的rviz注释掉。如下:

cd ~/catkin_ws/src/ros_rslidar/rslidar_pointcloud/launch
gedit rs_lidar_16.launch

rviz注释掉:

  

7,启动slam.launch 文件

roslaunch rslidar_pointcloud slam.launch

正常的话便会显示如下,手持雷达平稳移动,便会对周围的环境进行建图:
Robosense 激光雷达slam建图(3):使用hector_slam建图_第1张图片

看下节点流程图rqt_graph,如下:
Robosense 激光雷达slam建图(3):使用hector_slam建图_第2张图片

你可能感兴趣的:(ROS,robosense,hector_slam)