Velodyne激光SLAM学习之激光雷达+IMU外参标定-lidar_align联合标定激光雷达和IMU外参

系统环境:Ubuntu 20.04

激光雷达:velodyne 16线

IMU :WHEELTEC N100

 一、使用 lidar_align 雷达和IMU联合标定

GitHub - wwtx/lidar_align_wwtx
1. 安装依赖

sudo apt-get install libnlopt-dev

2. 下载源码编译

   

cd ~/lidar_align_ws/src
git clone https://github.com/wwtx/lidar_align_wwtx.git
cd ..
catkin_make

报错:

解决:

 将 lidar_align 文件夹下的 NLOPTConfig.cmake 复制到 ROS工作空间lidar_align_ws/src路径下面,再次编译

报错:

解决:

 CMakeLists.txt 文件夹里面的 " c++11 " 改为  " c++14 "再次编译

报错:

 解决: https://github.com/stevengj/nlopt

    git clone https://github.com/stevengj/nlopt.git
    cd nlopt
    mkdir build
    cd build
    cmake ..
    make
    sudo make install

再次编译 即可完成!!!!

3. 改写IMU接口

打开 src 文件夹下面的 loader.cpp 文件, 找到里程计部分注释掉,然后用下面的替换。。提供的代码中已经改写了,可能旧的版本里面没有改写,如果没有改写,按照参考博客连接里面的代码改写。。

修改完成之后再次 编译即可!

4. 录制数据,录制话题

联合标定需要录制bag 数据包,里面包括 激光数据 和 IMU 数据,需要先将激光雷达和 imu 固定好位置,然后再进行录制。。

验证imu 和 雷达安装的方向是否符合要求,(一般IMU坐标系和雷达坐标系方向一致就问题不大),参考视频:https://www.youtube.com/watch?v=BOUK8LYQhHs

首先参考这个视频验证imu和雷达安装的方向是否符合要求,一般IMU坐标系和雷达坐标系方向一致就没多大问题

录制话题数据,旋转三个轴,XY轴不要大幅度旋转,录制时间大概2分钟,注意环境中避免出现移动物体,玻璃等反光物体。有条件的话可以放在小车等地面移动平台控制移动。

 (1) lidar 和 IMU 安装
 (2) 分别启动雷达和IMU

启动雷达参考: lidar 启动

启动IMU参考:  IMU 启动

    // 在进行下面的操作前 设备连接好
     
    // 激光雷达
    // 打开一个终端

    cd ~/catkin_ws
    catkin_make
    source devel/setup.bash
    roslaunch rubber_navigation lslidar_c16.launch


     
     
    // 再打开一个终端,查看雷达的话题

    rostopic list


     
     
    // IMU
    // 再打开一个终端

    cd ~/catkin_ws
    source devel/setup.bash
    roslaunch rubber_navigation imu_spec_msg.launch


     
    // 再打开一个终端, 查看 imu 话题  和  imu 数据
    rostopic list
     
   

rostopic echo /IMU_data /lslidar_point_cloud

 启动之后  看一下数据雷达和 imu  是否安装好
(3) 录制数据包

之后打开终端 录制数据

rosbag record -o lidar_imu.bag out /IMU_data /lslidar_point_cloud

(4) 修改 launch 文件

录制完成之后 修改 launch 文件的 bag  包路径。

 5. 进行标定

    cd ~/lidar_align_ws
    catkin_make
    source devel/setup.bash
    roslaunch lidar_align lidar_align.launch

执行完上面的过程,出现下面的开始标定的界面。

 然后运行launch文件,等待大概半小时的迭代优化时间。

标定完之后:

结果会保存到lidar_align/result  (result 是我自己改的文件名字) 文件下:

注意看迭代的实时误差,如果是在3000以内,则让他继续迭代。如果是一万以上的误差,则中止迭代,重新录制数据集或者再次运行迭代程序。

注意我们最终标定出来的外参数据不一定能用,也可以发现迭代同一组数据的结果其实是不一样的。

标定结束后会打印出标定结果:

下图4*4矩阵中前3*3为旋转矩阵

 这一个为平移矩阵:

五、将标定结果填入config文件里

打开LIO-SAM/config/params.yaml

修改话题名:

将旋转矩阵和平移矩阵分别填入lio-sam的config (/home/rubber/rubber_tapping_robot/rubber_ws/src/mapping/FAST_LIO/FAST_LIO/config/velodyne.yaml)文件:

 另外的,我用Fast-lio2程序验证,同样的也将标定结果填入该SLAM代码的config文件里,Lio-sam和Fast-lio2运行效果分别如下:

至此,联合标定就结束了!!!!

  • 27
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值