ubuntu20.04使用浙大开源包lidar_IMU_calib

文章介绍了如何在Ubuntu20.04上使用lidar_IMU_calib工具进行Lidar和IMU的标定,包括编译源码、修改源码以适配不同型号的Lidar、录制数据集、运行标定过程以及解决遇到的问题,如PCL和Pangolin的版本兼容性问题。此外,还分享了针对RS_Helios5515的代码修改和标定结果的解释。
摘要由CSDN通过智能技术生成

Ubuntu20.04使用lidar_IMU_calib

浙大开源的lidar_IMU_calib提供了在无目标的情况下进行Lidar和IMU的标定。下面记录了我在使用过程中遇到的一些问题,希望对大家有所帮助,也希望大家指出错误。

源代码只支持了VLP-16, 实际使用过程中常常需要使用其他类型的雷达,需要对代码进行拓展,本文提供了百度网盘下载拓展后的代码(支持了RS_Helios5515)。

1.编译

Github源码地址
编译步骤:

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

####下载源码###########
git clone https://github.com/APRIL-ZJU/lidar_IMU_calib

####下面是安装一些依赖############
####ndt_omp###
wstool init
wstool merge lidar_IMU_calib/depend_pack.rosinstall
wstool update

cd lidar_imu_calib
./build_submodules.sh

cd ../..
catkin_make
source ./devel/setup.bash
###

注意:ubuntu20.04一般是pcl1.10和c++ 14,如果编译不通过,在CMakeLists.txt中修改。

2.源码修改

源码只支持了VLP-16,要使用其他的雷达信号需要自己自己增加相关的代码。这里参考了@
kero-czh
博主的思路,主要修改在*/include/utils/vlp_common.hdataset_reader.h文件,以及/src/ui/calib_helper.cpp*文件中的内容。修改主要内容是根据其他雷达的用户手册在源码中增加新的雷达模型。

修改后的完整项目我放在了百度网盘中,有需要请自行下载。

注意:由于ubuntu系统是20.04,在编译成功后运行代码会导致Pangolin链接到python3.7m.so.1.0。所以可以修改项目文件的CMakeLists.txt,将PANGOLIN_DIR的路径注释掉,然后在系统中重新安装Pangolin,重新编译即可。

find_package(Eigen3 REQUIRED)
# find_package(Boost REQUIRED COMPONENTS system filesystem thread date_time)
find_package(Boost REQUIRED)
# set(PANGOLIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/build-pangolin")
find_package(Pangolin REQUIRED)

在运行时也有可能找不到Pangolin的相关Lib,这是需要把自己安装的Pangolin链接加入到环境变量中。首先知道自己安装的Pangolin的位置,一般安装在 /usr/local/lib 中,打开 .bashrc文件,添加:

export  LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

3.录制数据集

录制标定数据集时,尽量在室内平面较多的地方,也要注意不要在太过狭窄的小房间内。需要在录制时,固定lidar和imu,让雷达和imu在各个方向上旋转和移动充分。(更新,其实移动充分就可以了)。

4.标定

标定之前,需要在launch 文件中更改录制的bag包的地址,和持续时间,以及lidar的类型,话题名。
launch文件如下(标红的部分)

<?xml version="1.0"?>
<launch>
    <arg name="topic_imu"           default="/imu/data" />
    <arg name="path_bag"            default="*****(path to your bag)" />
    <arg name="bag_start"           default="1" />
    <arg name="bag_durr"            default="**以秒为单位" />
    <arg name="scan4map"            default="15" />
    <arg name="lidar_model"         default="your lidar model" />
    <arg name="ndtResolution"       default="0.5" /> <!-- 0.5 for indoor case and 1.0 for outdoor case -->

    <arg name="time_offset_padding" default="0.015" />
    <arg name="show_ui"    default="false" />

    <node pkg="li_calib" type="li_calib_gui" name="li_calib_gui" output="screen">
    <!-- <node pkg="li_calib" type="li_calib_gui" name="li_calib_gui" output="screen" clear_params="true" launch-prefix="gdb -ex run &#45;&#45;args">-->

        <param name="topic_imu"         type="string"   value="$(arg topic_imu)" />
        <param name="topic_lidar"       type="string"   value="your lidar topic" />
        <param name="LidarModel"        type="string"   value="$(arg lidar_model)" />
        <param name="path_bag"          type="string"   value="$(arg path_bag)" />
        <param name="bag_start"         type="double"   value="$(arg bag_start)" />
        <param name="bag_durr"          type="double"   value="$(arg bag_durr)" /> <!-- for data association -->
        <param name="scan4map"          type="double"   value="$(arg scan4map)" />
        <param name="ndtResolution"     type="double"   value="$(arg ndtResolution)" />

        <param name="time_offset_padding"   type="double"   value="$(arg time_offset_padding)" />
        <param name="show_ui"               type="bool"     value="$(arg show_ui)" />
    </node>

</launch>

其中参数bag_durr可以使用下面的命令得到持续时间

rosbag info ***.bag

运行有两种方法

一种是按照源码的方法,运行calib.sh(这种方法还需要在callib.sh中修改相关的参数)

./src/lidar_IMU_calib/calib.sh

一种是直接运行launch文件

roslaunch li_calib licalib_gui.launch

运行可能出现的错误
1:提示报错,找不到libpython3.7m.so.1.0,没有这个文件
这个报错是由于系统中没有python3.7。这种情况不需要再安装python3.7,请转到本篇文章第二部分的源码修改中的部分,查看解决方案。

2.代码在优化时迭代卡在了0次,不往下运行。
GitHub的issue55中找到解决方案:在 /thirdparty/Kontiki/kontiki/sensors.const_bias_imu.h 中找如下代码,并在代码中加入 return true

bool LockGyroscopeBias(bool lock) {
    gyro_bias_locked_ = lock;
    //加入
    return true;
  }

  bool AccelerometerBiasIsLocked() const {
    return acc_bias_locked_;
  }

  bool LockAccelerometerBias(bool lock) {
    acc_bias_locked_ = lock;
    //加入
    return true;
  }

5.标定结果

标定结果

P_LinI 为Lidar在IMU坐标系下的平移,euler_LtoI:为Lidar变换到imu的欧拉角(变换为旋转矩阵即为lidar->imu)。

  • 21
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 37
    评论
Ubuntu 20.04是一个操作系统,而lidar_align是一个用于联合标定激光雷达和惯性测量单元(IMU)外参数的软件。在Ubuntu 20.04上安装和编译运行lidar_align可以按照以下步骤进行: 1. 首先,确保你已经安装了必要的软件和依赖项。根据引用提供的信息,你需要使用Windows 10 (64位)和VMware 16 Pro来创建一个虚拟机,在虚拟机中安装Ubuntu 20.04操作系统。你还需要在Ubuntu 20.04中安装nlopt,可以使用以下命令来安装libnlopt-dev:sudo apt-get install libnlopt-dev。请注意,如果仅使用该命令可能会报错,你可能需要解决nlopt和c相关的问题,可以参考引用中提供的解决方案。 2. 下载和编译lidar_align。根据引用提供的信息,你可以按照以下步骤来完成: - 下载lidar_align的源代码。 - 使用nlopt和c相关的解决方案解决编译过程中可能遇到的问题。 - 修改源码中的loader.cpp和lidar_align.launch文件,根据你的需求进行配置。 - 运行lidar_align并查看结果。 3. 处理数据集。你可以使用lidar_align来处理你的激光雷达和IMU数据集。根据你的需求,可以选择合适的数据集和处理方法。 总之,使用Ubuntu 20.04安装和编译运行lidar_align需要安装必要的软件和依赖项,解决可能遇到的nlopt和c相关问题,然后按照指南下载、编译、配置和运行lidar_align。你可以参考引用提供的更详细的步骤和参考博客来完成这个过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Ubuntu20.04运行lidar_align标定激光雷达和IMU](https://blog.csdn.net/abanchao/article/details/127195195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Ubuntu20.04安装和编译运行lidar_align来联合标定lidarimu的外参](https://blog.csdn.net/qq_39607707/article/details/127361539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值