EAI G4 lidar 在cartographer上2dslam建图
Posted lovebay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EAI G4 lidar 在cartographer上2dslam建图相关的知识,希望对你有一定的参考价值。
参考: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
$ cd ~/catkin_ws
$ catkin_make_isolated --install --use-ninja
$ roslaunch ydlidar lidar.launch
$ roslaunch cartographer_ros demo_revo_lds.launch
#新建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建图的主要内容,如果未能解决你的问题,请参考以下文章
好消息Office 365和Exchange 2019将支持EAI地址