ROS进阶学习(八)-- 谷歌Cartographer建图导航实战(收尾)

实验平台 :ubuntu 16.04

ros版本: ROS kinetic

所需安装包:ceres solvercartographer,cartographer_ros

实验范围:大约1000平楼层

根据前面的文章安装好依赖项,以及需要的安装包就可以使用cartographer建图了,建图之后通过goole自带的保存命令,就可以保存地图。

简单说下原理:就是用Grid(2D/3D)的形式建地图;局部匹配直接建模成一个非线性优化问题,利用IMU提供一个比较靠谱的初值;后端用Graph来优化,用分支定界算法来加速;2D和3D的问题统一在一个框架下解决。(引用知乎--邵天兰

由于cartographer的局部匹配算法,以及优化算法效果惊人,所以尽管在只使用激光的前提下都能得出不错的效果,以下配置加入了里程计信息,IMU信息也是可以作为一个可选项加入。

这里只需要创建三个文件:

1、在cartographer_ros/launch下新建 backpack_rplidar.launch文件


  

  

  
    
  

backpack_2d.urdf:主要存储了imu,以及水平雷达,竖直型雷达一些配置信息,默认就可以
robot_state_publisher:主要用来处理各种坐标的包,不做更改
 是把 /echoes 的话题重映射到 /horizontal_laser_2d

2、在 cartographer_ros/configuration_files下新建backpack_2d_rplidar.lua

include "map_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  map_frame = "map",
  tracking_frame = "base_link",
  published_frame = "base_link",
  odom_frame = "odom",
  provide_odom_frame = true,
  use_odometry_data = false,
  use_constant_odometry_variance = false,
  constant_odometry_translational_variance = 0.,
  constant_odometry_rotational_variance = 0.,
  use_horizontal_laser = true,
  use_horizontal_multi_echo_laser = false,
  horizontal_laser_min_range = 0.3,
  horizontal_laser_max_range = 8.,
  horizontal_laser_missing_echo_ray_length = 0.,
  num_lasers_3d = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
}

MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
SPARSE_POSE_GRAPH.optimization_problem.huber_scale = 1e2
return options

这里主要包含了机器人上使用到的传感器信息,以及扫描的距离信息等,可以根据自己的机器人进行配置

3、cartographer_ros/launch下新建demo_rplidar_2d.launch

  
     
    
     
    
     
  

重新编译工作空间,至此goole建图的配置信息基本完成


二、建图:

1、启动小车 
2、启动雷达
3、启动键盘
4、启动Google建图 roslaunch cartographer_ros backpack_rpidar_2d.launch
5、保存地图  rosservice call /finish_trajectory "map" 此处会报错,可能是因为官方自带API进行了更改,但是并不影响保存地图,地图会保存在.ros的
   隐藏文件下。可以在输入rosservice call /finish_trajectory后按TAB键根据提示输入地图名称


ROS进阶学习(八)-- 谷歌Cartographer建图导航实战(收尾)_第1张图片

这是对大约1000平的楼层进行建图的效果,由于建图速度较快,每个位置只走一次,所以有的地方会出现了一些歪曲。

下面是建图过程以及使用cartographer进行导航的视频  点击打开链接

你可能感兴趣的:(ros学习,cartographer,建图导航)