许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  【SLAM】Cartographer的配置与运行(激光SLAM)

【SLAM】Cartographer的配置与运行(激光SLAM)

阅读数 7
点赞 0
article_banner

官方文档:Cartographer — Cartographer documentation

1、依赖安装(Ubuntu20.04)

链接:https://pan.baidu.com/s/150mTzN5t_rkMUIuaj8vmIw  提取码:wxa1

./auto-carto-build.sh

使用 脚本 一键安装~

2、拉取源码

这里使用的源码是基于李想老师注释的源码~

源码路径:https://github.com/xiangli0608/cartographer_detailed_comments_ws

mkdir carto_wscd carto_wsgit clone https://github.com/xiangli0608/cartographer_detailed_comments_ws.git

编译:

cd cartographer_detailed_comments_ws ./catkin_make.sh

编译了4个 package  包:

  • cartographer
  • cartographer_ros
       

设置环境路径:

sudo vim ~/.bashrc # 在最后面放入(绝对路径)source /home/robot/Documents/learn_repo/carto_ws/cartographer_detailed_comments_ws/install_isolated/setup.bash

小技巧:(在vim里面点G,可以跳转到最后一行)

注意:本工程文件只能使用catkin_make.sh 脚本文件进行编译,不能直接用catkin_make

当不需要修改cartographer源码的时候,可以直接把cartographer_ros 放在工作空间进行catkin_make编译(因为cartographer源码已经安装到系统里,作为一个安装库)

3、运行(2D建图)

新建一个 bagfiles 文件,在home目录下(后面也可以修改launch文件中bag路径信息)

cd ~mkdir bagfiles

将下载好的 数据集  bag文件放入这个文件夹中!

可以修改这里的数据集的路径:

# 查看系统环境是否生效rospack profile

运行:(2D建图)

roslaunch cartographer_ros lx_rs16_2d_outdoor.launch 

以上的建图使用的Submaps进行查看,也可以用map进行查看:

查看map话题是谁发布的:

rostopic info /map

4、保存地图(2D地图)

保存地图:(方式1)

rosrun map_server map_saver -f map 

(方式2:)使用工程里面的脚本文件finish_slam_2d.sh

./finish_slam_2d.sh 

我们可以看到,它保存在了home目录下,创建了一个 文件夹  ,这个路径其实是可以修改脚本文件

5、运行(纯定位模式)

roslaunch cartographer_ros lx_rs16_2d_outdoor_localization.launch

纯定位模式相比刚刚的建图其实就是加载已建立的地图后,再跑一下bag包进行建图

而我们可以发现其实地图还是稍微有点变化的,这对于导航是不利的,因此我们可以通过map_server,把已建立的地图加载出来,通过map的话题发布出来即可

6、运行(3D建图)

roslaunch cartographer_ros lx_rs16_3d.launch 

7、保存地图(3D地图)

 ./finish_slam_3d.sh 

生成 pbstream 文件

7、使用asset生成ros格式的2d栅格地图

roslaunch cartographer_ros assets_writer_2d.launch 

读取urdf文件、bag包、pbstream文件,最终生成一个map.pgm

8、使用asset生成ros格式的3d栅格地图

roslaunch cartographer_ros assets_writer_3d.launch 

生成了一个b3_1.pcd文件

pcl_viewer b3_1.pcd  

安装:

sudo apt install pcl-tools

按4,可以实现点云通过不同高度赋予颜色

9、使用landmark

roslaunch cartographer_ros landmark_mir_100.launch

10、配置lua文件

  • tracking_frame

  • published_frame

  • provide_odom_frame
  • use_pose_extrapolator 设置为false
  • use_odometry 是否使用里程计的传感器数据,如果为true,tf树中一定要存在odom坐标系
  • num_laser_scans/num_point_clouds 是否使用单线雷达,和多线雷达,使用一个则为1,不使用则为0,可以同时为1,不可以同时为0(可以使用多个单线雷达或者多个多线雷达)
  • TRAJECTORY_BUILDER_2D.use_imu_data 是否使用IMU,如果用IMU,tracking_frame一定要设置为imu_link
  • TRAJECTORY_BUILDER_2D.min_z 点云的最小z的范围 单线点云不能设置大于0的值(或者不设置) 多线点云这个值要大于0

lua文件:

-- 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,                        -- map_builder.lua的配置信息  trajectory_builder = TRAJECTORY_BUILDER,          -- trajectory_builder.lua的配置信息   map_frame = "map",                                -- 地图坐标系的名字  tracking_frame = "imu_link",                      -- 将所有传感器数据转换到这个坐标系下  published_frame = "odom",                         -- tf: map -> odom  odom_frame = "odom",                              -- 里程计的坐标系名字  provide_odom_frame = false,                       -- 是否提供odom的tf, 如果为true,则tf树为map->odom->footprint  publish_frame_projected_to_2d = false,            -- 是否将坐标系投影到平面上  use_pose_extrapolator = false,   use_odometry = false,                             -- 是否使用里程计,如果使用要求一定要有odom的tf  use_nav_sat = false,                              -- 是否使用gps /fix  use_landmarks = false,                            -- 是否使用landmark   num_laser_scans = 0,                              -- 是否使用单线激光数据  num_multi_echo_laser_scans = 0,                   -- 是否使用multi_echo_laser_scans数据 多回声波雷达  num_subdivisions_per_laser_scan = 1,              -- 1帧数据被分成几次处理,一般为1  num_point_clouds = 1,                             -- 是否使用点云数据   lookup_transform_timeout_sec = 0.2,               -- 查找tf时的超时时间  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.,  fixed_frame_pose_sampling_ratio = 1.,  imu_sampling_ratio = 1.,  landmarks_sampling_ratio = 1.,} MAP_BUILDER.use_trajectory_builder_2d = true TRAJECTORY_BUILDER_2D.use_imu_data = trueTRAJECTORY_BUILDER_2D.min_z = 0.1                    -- 雷达数据z轴的最小值,低于该值过滤掉  return options


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空