使用lidar_align标定激光雷达-IMU外参数

系统环境 Ubuntu20.04+ros noetic
选用苏黎世理工大学lidar_align工具。
数据来源:速腾聚创airy中的激光雷达和imu
其中速腾聚创airy 的sdk输出的激光雷达输出话题 /rslidar_points,类型为sensor_msgs.PointCloud2
imu输出话题为/rslidar_imu_data 类型为/sensor_msgs/Imu

参考
https://blog.csdn.net/gmf0327/article/details/129948565

1.下载编译lidar_align

原始的lidar_align
https://github.com/ethz-asl/lidar_align

使用修改后的用于标定的lidar_align
https://github.com/wwtx/lidar_align_wwtx

mkdir -p ~/catkin_lidar_align/src
cd ~/catkin_lidar_align/src
catkin_init_workspace

git clone https://github.com/wwtx/lidar_align_wwtx

下载依赖

sudo apt-get install ros-noetic-nlopt
sudo apt-get install libnlopt-dev

还是会报错
将 ~/catkin_lidar_align/src/lidar_align_wwtx-main/NLOPTConfig.cmake 文件移动到 ~/catkin_lidar_align/src下,并进行第二次编译。报pcl和c++错误

1)src/lidar_align_wwtx 中的CMakeLists.txt
将 add_definitions(-std=c++11 -ofast)
改为add_definitions(-std=c++14 -ofast)

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4805cc13d31843c4bfc157a504197860.png#pic_center

2.启动激光雷达采集并开始录包

由于lidar_align的输入为sensor_msgs.PointCloud2类型,而速腾聚创airy 的sdk输出的激光雷达输出话题 /rslidar_points,类型正好为sensor_msgs.PointCloud2,因此直接可以用。

启动的工程包括速腾聚创激光采集包rslidar_sdk,参考
ubuntu20.04速腾聚创airy驱动调试
(1)启动采集数据工程 catkin_rslidar_sdk

cd catkin_rslidar_sdk
roslaunch rslidar_sdk start.launch

(2)录制数据

rosbag record -O calib.bag /rslidar_imu_data /rslidar_points

注意:在采集数据时,缓慢,多角度,多方向移动,最好不要有太多移动的物体,时间90秒左右。录制完成后Ctrl+C 结束录制。保存在当前目录。

3.开始使用 lidar_align 标定

使用录制的数据集跑标定算法,打开 lidar_align.launch 文件,修改 bag 包的地址 修改bag_file这一行,加入required=“true” 使标定完成后就退出

<?xml version="1.0" encoding="UTF-8"?>
<launch>

  <arg name="bag_file" default="/home/qian/calib.bag"/>
  <arg name="transforms_from_csv" default="false"/>
  <arg name="csv_file" default="/home/qian/calib.csv"/>

  <node pkg="lidar_align" name="lidar_align" type="lidar_align_node" output="screen" required="true">
    <param name="input_bag_path" value="$(arg bag_file)" />
    <param name="input_csv_path" value="$(arg csv_file)" />
    <param name="output_pointcloud_path" value="$(find lidar_align)/results/$(anon lidar_points).ply" />
    <param name="output_calibration_path" value="$(find lidar_align)/results/$(anon calibration).txt" />
    <param name="transforms_from_csv" value="$(arg transforms_from_csv)"/>
  </node>

</launch>

roslaunch lidar_align lidar_align.launch

注意,如果不限制迭代次数实测90s的包笔记本电脑标定时间大概需要1个多小时都没有结束(200多次迭代)。
在 lidar_align.launch 加入参数限制不结束的情况

 <param name="max_evals" value="10"/>

标定过程中Iteration会一直变化。
在这里插入图片描述

标定结果如下:

Active Transformation Vector (x,y,z,rx,ry,rz) from the Pose Sensor Frame to  the Lidar Frame:
[0, 0, 0, 0, 0, 0]

Active Transformation Matrix from the Pose Sensor Frame to  the Lidar Frame:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Active Translation Vector (x,y,z) from the Pose Sensor Frame to  the Lidar Frame:
[0, 0, 0]

Active Hamiltonen Quaternion (w,x,y,z) the Pose Sensor Frame to  the Lidar Frame:
[1, 0, 0, 0]

Time offset that must be added to lidar timestamps in seconds:
0.05

ROS Static TF Publisher: <node pkg="tf" type="static_transform_publisher" name="pose_lidar_broadcaster" args="0 0 0 0 0 0 1 POSE_FRAME LIDAR_FRAME 100" />

实验结果:限制标定次数会标出来位移结果为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值