码迷,mamicode.com
首页 > 其他好文 > 详细

EAI G4 lidar 在cartographer上2dslam建图

时间:2018-11-29 20:09:02      阅读:506      评论:0      收藏:0      [点我收藏+]

标签:required   article   cost   www   min   配置   ram   run   hub   

 参考:http://www.mindthink.me/2018/11/01/cartographer学习系列之二%EF%BC%9A-使用-eai-ydlidar-实现-cartographer-2d-slam/  

https://blog.csdn.net/qq_41622988/article/details/80483826  

前面已经完成配置 ROS(kinetic)、cartographer、EAI的ROS驱动包。接下来进行EAI G4 lidar 在cartographer上跑数据。
 (1) 对cartographer_ros文件夹中的代码及参数修改,首先修改~/catkin_ws/src/cartographer_ros/cartographer_ros/launch目录下的demo_revo_lds.launch  文件,其实需要修改的也就是<remap from="scan" to="scan" />因为这里我们只是利用了激光雷达建图,并未使用机器人本体。最后的playbag 节点删掉。(建议备份原文件) 修改后如下:

<!--
  Copyright 2016 The Cartographer Authors

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<launch>
  <param name="/use_sim_time" value="true" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_ros)/configuration_files
          -configuration_basename revo_lds.lua"
      output="screen">
    <remap from="scan" to="scan" />
  </node>

  <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />

</launch>

   (2) 接下来对~/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files目录下的revo_lds.lua文件进行修改,其中比较关键的是开始的几个frame的设置,网上转载比较多的是如下修改方式
  map_frame = "map",
  tracking_frame = "laser",
  published_frame = "laser",
  odom_frame = "odom",
这样设置的原因应该是只用了一个激光器,而不是机器人,所以用“laser”,这个“laser”也需要查看激光器在tf_tree中的名称,用实际的名称“laser_frame”替换,否则rviz中看不到地图,因为tf有问题。之前的问题一直是tf树的问题,所以所建地图无法出来,通过查看激光雷达的在tf树中的名称。因此将tracking_frame和published_frame后的参数改成laser_frame即可
 修改后如下:

-- Copyright 2016 The Cartographer Authors
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--      http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.

include "map_builder.lua"
include "trajectory_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
  tracking_frame = "laser_frame",
  published_frame = "laser_frame",
  odom_frame = "odom",
  provide_odom_frame = true,
  use_odometry = false,
  num_laser_scans = 1,
  num_multi_echo_laser_scans = 0,
  num_subdivisions_per_laser_scan = 1,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
  trajectory_publish_period_sec = 30e-3,
  rangefinder_sampling_ratio = 1.,
  odometry_sampling_ratio = 1.,
  imu_sampling_ratio = 1.,
}

MAP_BUILDER.use_trajectory_builder_2d = true

TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
TRAJECTORY_BUILDER_2D.min_range = 0.08
TRAJECTORY_BUILDER_2D.max_range = 16.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 1.
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 10.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1

POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65

return options 
 
(3) 重新编译
 $ cd ~/catkin_ws
 $ catkin_make_isolated --install --use-ninja
 
 (4) 开启两个窗口。分别运行如下指令:
 $ roslaunch ydlidar lidar.launch
 $ roslaunch cartographer_ros demo_revo_lds.launch
 
 (5)保存地图
 #新建map文件夹用于保存地图
 $ mkdir -p ~/map
 #启动存图,并将名为lidar_2d的地图文件保存在map文件夹
 $ rosrun map_server map_saver -f ~/map/lidar_2d
 #查看内容,包含lidar_2d.pgm  lidar_2d.yaml
 $ ls ~/map

EAI G4 lidar 在cartographer上2dslam建图

标签:required   article   cost   www   min   配置   ram   run   hub   

原文地址:https://www.cnblogs.com/lovebay/p/10040053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!