从零搭建一辆ROS小车(三)使用激光雷达建图

本文将介绍两种使用激光雷达的建图方法

本文所使用的代码:网盘链接 (包括前两篇的代码)


hector_mapping建图与定位

这种方法的优点是简便,只需要有一个激光雷达即可,支持手持建图,不需要底层的里程计数据,

这里我推荐一篇文章https://blog.csdn.net/weixin_41459903/article/details/102795148

 

slam_gampping建图

准备工作

  首先,我们在他的官方文档中可以看到,gmapping功能包订阅了 tf 和 scan,这个tf包括了odom和base_link的变换以及激光雷达和base_link的变换,在之前的文章里为我们介绍了前者,那么接下来将介绍后者的配置。

从零搭建一辆ROS小车(三)使用激光雷达建图_第1张图片

 

   那么我们需要下载 rplidar_ros 和 slam_gmapping 两个功能包,git太慢的话可以下载我网盘里的。网盘链接

配置串口

  由于激光雷达插在电脑或者其他设备上时串口号总是变来变去,修改代码太麻烦,那么我们将设备和串口号做一个映射就可以解决这个问题了下载网盘的文件,在serial_port/serial_port_sh/rplida/ 下 运行create_udev_rules.sh这个脚本,便可以绑定。对于具体内容可以参考这篇博客,若有不明白的可以私信我。

 

编写rplida.launch

  这个文件中,我们可以看到首先启动了激光雷达的节点,同时在填写串口号的地方,我们改成 /dev/rplidar 这就是因为上文将设备对应的串口号映射为rplidar。

  另外,在原文件中是没有做tf变换的,由于我们需要知道雷达与机器人的相对位置,所以还需要加上tf。


  
  
  
  
  
  
  
  






 

编写slam_gmapping.launch


    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

编写bringup_base.launch

这个launch文件用于启动我们前两篇文章所提到的节点,包括串口通信,里程计和键盘,顺便把雷达也启动了


    
    
    
    
    

 

启动建图

roslaunch bringup bringup_base.launch

roslaunch bringup slam_gmapping.launch

rviz

 

打开rviz后设置一下fixed frame 为odom 然后点击add,添加map,LaserScan,至此,通过键盘移动机器人就可以建图了(没实物的话先熟悉下流程,后面会更新仿真环境)

 

 

保存地图

rosrun map_server map_saver -f ~/map/rplidar_gmapping

 

你可能感兴趣的:(从零搭建ROS小车,ROS)