速腾16线激光雷达+cartographer+ubuntu+20.04+ros离线二维建图

本文记录了这几天配置激光雷达slam实现二维建图的方法,第一次发帖,希望能帮助到大家

在进行激光slam之前需要安装诸多依赖和功能包,在安装过程中会出现依赖不足的问题,可以通过命令“sudo apt-get install xxx”来解决,但是有可能出现因为软件源过旧而导致安装出现问题,因此在apt之前可以去etc/apt/sources.list设置更新软件源,我是用的是最新的清华源,因此可以实现配置,需要用到的依赖有:

sudo apt-get install automake google-mock libatlas-base-dev libboost-all-dev libeigen3-dev libgflags-dev libgmock-dev libgoogle-glog-dev liblapack-dev liblua5.2-dev libpcl-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build pcl-tools protobuf-compiler python3-sphinx ros-noetic-tf2-eigen stow

1. 安装ceres2.0.0

可以通过如下命令安装,安装在主目录即可:

git clone https://github.com/ceres-solver/ceres-solver.git

cd ceres-solver

git checkout 0ffb6db49cec52566f53ab66be7a19970ddc562b  # 将下载的ceres-solver的版本回退到2.0.0

mkdir build

cd build/

cmake ..

make -j8

sudo make install

图1. Ceres

2. 安装Protobuf3.21.1

可以通过如下命令来安装,安装在主目录即可:

git clone https://github.com/protocolbuffers/protobuf.git

cd protobuf/

git checkout e73ed1630fdec85d7fb513c166629ed49cd4eb18

./autogen.sh

./configure

make -j8

sudo make install

sudo ldconfig

图2. Protobuf

3. 安装Abseil

可以通过如下的命令来安装,安装在主目录即可:

git clone https://github.com/abseil/abseil-cpp.git

cd abseil-cpp/

git checkout 215105818dfde3174fe799600bb0f3cae233d0bf

mkdir build

cd build/

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl ..

ninja

sudo ninja install

cd /usr/local/stow

sudo stow absl

图3. Abseil

4. 安装Cartographer

首先在喜欢的位置建立工作空间,使用如下命令即可:

mkdir -p cartographer/src

cd cartographer/src

git clone https://github.com/cartographer-project/cartographer.git

git clone https://github.com/cartographer-project/cartographer_ros.git

cd ..

catkin_make_isolated 

但是在最后编译的时候会报错,通过如下声明可以避免错误出现,即:

catkin_make_isolated # -DPYTHON_EXECUTABLE=/usr/bin/python3

注意此处井号以及后面的部分应该输入到命令行中。

5. 下载pointcloud_to_laserscan包实现三维转二维

在喜欢的位置创建工作空间3dto2dslam,并且进入工作空间的src目录,使用如下命令完成安装:

git clone https://github.com/BluewhaleRobot/pointcloud_to_laserscan.git

cd ..

catkin_make

图4. Point_to_laserscan

6. 修改与配置Cartographer

接下来修改cartographer工作空间。

a. 创建rs16_lidar.lua文件

使用如下命令创建文件:

cd ~/cartographer/src/cartographer_ros/cartographer_ros/configuration_files #找到自己的路径

cp revo_lds.lua rs16_lidar.lua  #复制

gedit rs16_lidar.lua  #打开文件

将文件内容修改为如下:

  1. include "map_builder.lua"
    include "trajectory_builder.lua"
    
    options = {
      map_builder = MAP_BUILDER,
      trajectory_builder = TRAJECTORY_BUILDER,
      map_frame = "map",
      tracking_frame = "rslidar",
      published_frame = "rslidar",
      odom_frame = "odom",
      provide_odom_frame = true,
      publish_frame_projected_to_2d = false,
      use_pose_extrapolator = true,
      use_odometry = false,
      use_nav_sat = false,
      use_landmarks = 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.,
      fixed_frame_pose_sampling_ratio = 1.,
      imu_sampling_ratio = 1.,
      landmarks_sampling_ratio = 1.,
    }
    
    MAP_BUILDER.use_trajectory_builder_2d = true
    
    TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
    TRAJECTORY_BUILDER_2D.min_range = 0.3
    TRAJECTORY_BUILDER_2D.max_range = 8.
    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

b. 创建cartographer_demo_rs16.launch文件

使用如下命令:

cd ~/cartographer/src/cartographer_ros/cartographer_ros/launch #自己的路径

cp demo_revo_lds.launch cartographer_demo_rs16.launch

接下来将修改cartographer_demo_rs16.launch文件内容:

  1. <launch>
      <param name="/use_sim_time" value="false" />
     
      <node name="cartographer_node" pkg="cartographer_ros"
          type="cartographer_node" args="
              -configuration_directory $(find cartographer_ros)/configuration_files
              -configuration_basename rs16_lidar.lua"
          output="screen">
        <remap from="scan" to="/scan" />
      </node>
      
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.45 0 0.0 0.0 map rslidar 100" />
     
      <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>

7. 运行程序并且完成建图

打开四个终端并分别为在正确的位置启动:

roscore #终端1

roscag play xxx.bag #终端2

roslaunch pointcloud_to_laserscan point_to_scan #在3dto2dslam工作空间下,别忘了source,终端3

roslaunch cartographer_ros cartographer_demo_rs16.launch#在cartographer工作空间,别忘了source,终端4

图5. 运行完成的结果

下面是参考资料:

https://blog.csdn.net/QQ3545325613/article/details/136688341
https://blog.csdn.net/TJZH0318/article/details/136458527

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于ROS激光雷达+小车+IMU的SLAM建图、定位、路径规划c++实现源码+项目说明.zip # 单线激光雷达SLAM建图与路径规划 使用的硬件:autolabor pro1小车、小觅双目相机(S1030标准版本)、IntelNUC迷你主机、显示器、2D激光雷达 Delta-1A 使用的软件:ubuntu 16.04 LTS、ROS-kinetic、小觅驱动、autolabor pro1小车驱动、Delta-1A驱动、VINS-Fusion算法、ROS-navigation导航包、gmapping建图算法、cartographer_ros建图算法 ## tf介绍 tf变换:map(地图坐标系)-->odom(里程计坐标系)——>base_link(小车基座坐标系)——>传感器坐标系(lidar、camera) ---- map-->odom 由建图算法提供 ---- odom --> base_link 由小车驱动提供 ---- base_link --> 传感器坐标系 根据传感器在小车上安装的位置确定,使用static_transform_publisher静态坐标转换来设置 所需传感器数据类型: sensor_msgs/LaserScan 使用Delta-1A驱动发布的雷达扫描话题,话题名:/scan 所需里程计信息数据类型:nav_msgs/Odometry 使用autolabor pro1发布的里程计,话题名:/wheel_odom ## 建图 采用gmapping与 cartographer_ros建图算法分别进行建图 ### gmapping建图:(雷达+小车) 打开终端,执行如下指令: $ cd ~/catkin_ws_lidar_slam/ $ source devel/setup.bash $ roslaunch autolabor_box_launch create_map_gmapping.launch ####打开小车urdf模型、驱动、键盘控制节点、打开雷达驱动、打开gmapping节点、打开rviz可视化节点 ####此时使用键盘的上下左右键控制小车移动,开始建图 ####建图完成后,开启新的终端执行如下指令,保存地图: $ rosrun map_server map_saver -f map_name ####保存地图 map_name为保存地图的名称,运行结果,会生成2个文件,后缀名分别为 .pgm .yaml ### cartographer_ros建图:(雷达+小车) ##打开终端,执行如下指令: $ cd ~/catkin_ws_lidar_slam/ $ source devel/setup.bash $ roslaunch autolabor_box_launch create_map_cartographer.launch ####此时使用键盘的上下左右键控制小车移动,开始建图 ####建图完成后,开启新的终端执行如下指令,保存地图: $ rosrun map_server map_saver -f map_name ......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值