使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

这篇具有很好参考价值的文章主要介绍了使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、下载lidar_align源码

ethz-asl/lidar_align: A simple method for finding the extrinsic calibration between a 3D lidar and a 6-dof pose sensor (github.com)https://github.com/ethz-asl/lidar_align2、解压到ros工作空间目录下的src文件中

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

不知道如何创建ros工作空间的可以参考我另一篇博客:

ubuntu下如何创建ros工作空间、创建ros功能包、创建ros节点_╰︶ ̄ 莫等闲۩۩۩的博客-CSDN博客_ubuntu 创建工作空间https://blog.csdn.net/qq_49959714/article/details/127028396?spm=1001.2014.3001.5501

 3、编译

sudo apt-get install libnlopt-dev
cd ~/catkin_ws
catkin_make

此时编译可能会遇到一些问题,比如:

 CNake Error at /usr /share/cnake-3.10/Nodules/FindPackageHandlestandardArgs.cmake:137 (nessage);could NOT find NLOPT (missing: NLOPT_INCLUDE_DIR NLOPT_LIBRARY)
Call stack (most recent call first):
/usr/share/cnake-3.10/NModules/FindPackageHandleStandardArgs.cnake:378(_FPHSA_FAILURENLOPTConfig.cmake:65 (find_package_handle_standard_args)
CMakeLists.txt: 18 (find_package)
-- Configuring incomplete, errors occurred!
see also "/home/findlab/lidar_align-naster/build /CMakeFiles/CNakeoutput.log".See also "/hone /findlab/lidar_align-naster/build/CMakeFiles/CNakeError.log".

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

解决办法:

 在lidar_align-master文件夹中的CMakeLists.txt添加以下代码:

list(APPEND CMAKE_FIND_ROOT_PATH ${PROJECT_SOURCE_DIR})
set (CMAKE_PREFIX_PATH "/usr/local/lib/cmake/nlopt")

 最后应该就编译成功了,如果还遇到编译问题,可以参考一下我另一篇博客,里面总结了几个可能遇到的问题解决办法:

(4条消息) ubuntu安装lidar_align时编译出错,激光雷达与IMU标定_╰︶ ̄ 莫等闲۩۩۩的博客-CSDN博客https://blog.csdn.net/qq_49959714/article/details/128086217?spm=1001.2014.3001.55014、启动

roscore
source devel/setup.bash
roslaunch lidar_align lidar_align.launch

 此时可能会遇到一些问题

问题1:

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

解决办法:

修改launch文件,改为自己的bag路径

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 问题2:

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 解决办法:

修改loader.cpp文件

将以下代码放到该文件的对应位置,并将odom的代码删除或注释掉

std::vector<std::string> types;
  types.push_back(std::string("sensor_msgs/Imu"));
  rosbag::View view(bag, rosbag::TypeQuery(types));
  size_t imu_num = 0;
  double shiftX=0,shiftY=0,shiftZ=0,velX=0,velY=0,velZ=0;
  ros::Time time;
  double timeDiff,lastShiftX,lastShiftY,lastShiftZ;
  for (const rosbag::MessageInstance& m : view){
    std::cout <<"Loading imu: \e[1m"<< imu_num++<<"\e[0m from ros bag"<<'\r'<< std::flush;

    sensor_msgs::Imu imu=*(m.instantiate<sensor_msgs::Imu>());

    Timestamp stamp = imu.header.stamp.sec * 1000000ll +imu.header.stamp.nsec / 1000ll;
    if(imu_num==1){
        time=imu.header.stamp;
            Transform T(Transform::Translation(0,0,0),Transform::Rotation(1,0,0,0));
        odom->addTransformData(stamp, T);
    }
    else{
        timeDiff=(imu.header.stamp-time).toSec();
        time=imu.header.stamp;
        velX=velX+imu.linear_acceleration.x*timeDiff;
        velY=velX+imu.linear_acceleration.y*timeDiff;
        velZ=velZ+(imu.linear_acceleration.z-9.801)*timeDiff;

        lastShiftX=shiftX;
        lastShiftY=shiftY;
        lastShiftZ=shiftZ;
        shiftX=lastShiftX+velX*timeDiff+imu.linear_acceleration.x*timeDiff*timeDiff/2;
        shiftY=lastShiftY+velY*timeDiff+imu.linear_acceleration.y*timeDiff*timeDiff/2;
        shiftZ=lastShiftZ+velZ*timeDiff+(imu.linear_acceleration.z-9.801)*timeDiff*timeDiff/2;

        Transform T(Transform::Translation(shiftX,shiftY,shiftZ),
               Transform::Rotation(imu.orientation.w,
                        imu.orientation.x,
                        imu.orientation.y,
                        imu.orientation.z));
        odom->addTransformData(stamp, T);
    }
  }

 使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 问题3:

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 解决办法:

在loader.h头文件中定义Imu消息即可

#include <sensor_msgs/Imu.h>

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 然后再重新编译catkin_make

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

此时应该编译没问题了

再执行roslaunch lidar_align lidar_align.launch

可能还会再次遇到问题

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 原因是点云序列号超出范围

解决办法:在sensor.h头文件中将keep_points_ratio的默认值0.01改小,比如改成0.001.

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 最终成功标定了

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 最终的标定结果文件存放在lidar_align目录下的results文件夹中

使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)

 文章来源地址https://www.toymoban.com/news/detail-474244.html

 

到了这里,关于使用lidar_align进行激光雷达与IMU的外参标定(超详细教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多激光雷达标定multi_LiDAR_calibration

    对于多激光雷达的标定主要采用ICP、NDT等配准方法进行估计多个激光雷达的外参变换矩阵 T T T 。在这里先介绍一些先前关于多激光雷达外参标定的工作: M-LOAM :采用多个激光雷达固定到一个机器人上进行一起SLAM建图,在线标定得到外参矩阵。 multi_lidar_calibration :代码地址

    2024年02月13日
    浏览(45)
  • MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)

          激光雷达 - 相机标定建立了三维激光雷达点和二维相机数据之间的对应关系,从而将激光雷达和相机输出融合在一起。 激光雷达传感器和相机被广泛用于自动驾驶、机器人和导航等应用中的三维场景重建。激光雷达传感器捕捉环境的三维结构信息,而相机则捕捉色彩、

    2024年02月20日
    浏览(52)
  • 手机LiDAR-based激光雷达标定板提高无人汽车智能化程度

    手机LiDAR-based 3D扫描和建模测试系统是一种利用激光雷达(LiDAR)技术进行三维扫描和模型创建的工具,它可以在手机上运行。这种测试系统可以用于各种应用,如地形测绘、建筑物建模、机器人视觉、无人驾驶汽车导航等。 手机LiDAR-based激光雷达标定板是一种用于激光雷达传

    2024年02月04日
    浏览(46)
  • 激光雷达(LiDAR)| Open3D:第二节 邻近搜索之构建KDTree

    本节将介绍Open3D开源库:KDTree的原理及构建,将无序点云变为有序点云,实现点云的快速邻近搜索。 Open3D使用FLANN构建KDTrees,将无序点云变为有序点云,以便快速检索最近邻。 在激光雷达中,一般使用的是三维点云。所以,kd-tree的维度是3。 KDTree(k 维树)是一种空间分区数

    2024年02月05日
    浏览(52)
  • Cartographer算法2D激光雷达与IMU融合建图 首先先说一下我的硬件设备:

     上一篇文章讲了cartographer算法手持雷达建图的参数调试,这篇进一步讲如何融合2D雷达与IMU采用cartographer算法进行slam建图。 cartographer算法手持二维激光雷达建图(不使用里程计及IMU) https://blog.csdn.net/wangchuchua/article/details/127268037?spm=1001.2014.3001.5502 思岚s1激光雷达、Tobotics

    2023年04月10日
    浏览(57)
  • 计算机视觉 激光雷达结合无监督学习进行物体检测的工作原理

            激光雷达是目前正在改变世界的传感器。它集成在自动驾驶汽车、自主无人机、机器人、卫星、火箭等中。该传感器使用激光束了解世界,并测量激光击中目标返回所需的时间,输出是点云信息,利用这些信息,我们可以从3D点云中查找障碍物。         从自

    2024年02月07日
    浏览(58)
  • autoware标定工具进行固态激光雷达与相机的联合标定并运用标定结果进行投影(C++)

    本文主要介绍速腾聚创的RS-LIDAR-M1固态雷达激光与小觅相机左眼的联合标定过程,并介绍标定过程中的一些技巧与避雷,加快标定效率。最后给出运用标定结果进行投影的关键代码。 一、安装autoware(为了标定完成后的可视化,可选,本文并未用到) 参考https://blog.csdn.net/qq

    2024年02月08日
    浏览(46)
  • Hesai激光雷达使用PTP时间同步

    PTP是一个网络同步时钟的协议,全称是Precise Time Protocol,也称为IEEE 1588,其有IEEE1588v1和IEEE1588v2两个版本(其中v1版本是为工业自动化测量和控制系统开发的,适用于工业局域网应用。v2版本是在v1版本的基础上,专门针对通信网改进的,我们使用的是IEEE1588v2版本)。当硬件支

    2024年02月07日
    浏览(63)
  • matlab Lidar Camara Calibrator使用方法及雷达点云对相机的标定

    标定数据导入matlab lidar camara calibrator 插件,点击图示中的 Import 后选择Import Data如图所示: 依次选择导入图像和点云数据如下后点击“ 确定 ”: Matlab会自动导入数据并计算相机内参,然后开始进行相机和点云数据的处理,并进行自动标定,但自动标定结果一般较差,会提示

    2024年02月05日
    浏览(46)
  • 使用扩展卡尔曼滤波(EKF)融合激光雷达和雷达数据(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 大多数自

    2024年02月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包