当前位置: 首页 > article >正文

从零入门激光SLAM(二十三)——direct_visual_lidar_calibration全型号激光雷达-相机标定包

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:951026257,欢迎大家加入讨论。

0、前言

相机与激光雷达的精确像素级标定一直是一个难点,随着激光SLAM慢慢向三维重建、场景测绘发展,对标定效果要求更高。传统的标定板标定方法有如下缺陷
1.需要标定板设备繁琐

2.标定板不能放太远的位置,无法观测测距范围大而广的激光雷达在远距离的效果

3.无法达到像素级别的标定结果。

Pixel-Level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environments
论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9495137
代码:GitHub - hku-mars/livox_camera_calib: This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.

对于一般的机械式激光雷达怎么达到无标定板的像素级配准,这就是今天介绍的功能包direct_visual_lidar_calib

https://koide3.github.io/direct_visual_lidar_calibration/

1、安装

# Install dependencies-------------------
sudo apt install libomp-dev libboost-all-dev libglm-dev libglfw3-dev libpng-dev libjpeg-dev
 
# Install GTSAM---------------------------
git clone https://github.com/borglab/gtsam
cd gtsam && git checkout 4.2a9
mkdir build && cd build
# For Ubuntu 22.04, add -DGTSAM_USE_SYSTEM_EIGEN=ON
cmake .. -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \
         -DGTSAM_BUILD_TESTS=OFF \
         -DGTSAM_WITH_TBB=OFF \
         -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF
make -j$(nproc)
sudo make install
 
# Install Ceres--------------------------------
git clone https://github.com/ceres-solver/ceres-solver
mkdir ceres-solver/build && cd ceres-solver/build
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DUSE_CUDA=OFF
make -j$(nproc)
sudo make install
 
# Install Iridescence for visualization----------------------
git clone https://github.com/koide3/iridescence --recursive
mkdir iridescence/build && cd iridescence/build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install

2、编译

# ROS1
cd ~/catkin_ws/src
git clone https://github.com/koide3/direct_visual_lidar_calibration.git --recursive
cd .. && catkin_make



# Install SuperGluePretrainedNetwork for auto calib----------------------
pip3 install numpy opencv-python torch matplotlib
git clone https://github.com/magicleap/SuperGluePretrainedNetwork.git

将find_matches_superglue.py放在SuperGluePretrainedNetwork-master目录下

3、使用

官方说明文档

https://koide3.github.io/direct_visual_lidar_calibration/example/#5-calibration-result-inspection_1c

 3.1 数据采集准备

该算法的思想就是利用激光雷达和SLAM算法生成十分稠密的点云再利用场景与视觉配准。

  • 点云采集要求

所以对于非重复扫描的激光雷达,录制静止10s的rosbag包,对于机械式激光雷达需要上下左右旋转,尽可能覆盖所有场景且线束越低,录制时间越长。

  • 场景要求

场景有结构化特征,例如建筑,最好有反射强度明显的区域,如斑马线

  • 相机要求

先计算出相机的内参和畸变参数

 3.2 使用

  • 数据准备

将录制的所有bag放在一个文件夹下,生成稠密点云为标定做准备

 rosrun direct_visual_lidar_calibration preprocess -av \
  --camera_model plumb_bob \
  --camera_intrinsic 1452.711762456289,1455.877531619469,1265.25895179213,1045.818593664107 \
  --camera_distortion_coeffs -0.04203564850455424,0.0873170980751213,0.002386381727224478,0.005629700706305988,-0.04251149335870252 \
  /home/zf/livox_ros1 /home/zf/pre

 camera_intrinsics为相机内参,camera_distortion_coeffs为畸变系数

/home/zf/livox_ros1为存放rosbag包位置,/home/zf/pre :自动创建文件夹存放

-av 适用非重复扫描点云直接叠加

-adv 适用机械激光雷达,有里程计叠加,如下所示

运行成功会自动生成如下文件

  •  初始位姿确定

自动方法利用 superglue匹配

rosrun direct_visual_lidar_calibration find_matches_superglue.py /home/zf/pre/ --rotate_camera 0
rosrun direct_visual_lidar_calibration initial_guess_auto /home/zf/pre

当自动效果不好时候切换手动

rosrun direct_visual_lidar_calibration initial_guess_manual /home/zf/pre

手动鼠标右键选点,点云和图片对应,选完后点击add picked points,至少选三组。之后点击estimate开始标定

  •  精确位姿确定 

rosrun direct_visual_lidar_calibration calibrate /home/zf/pre

 


http://www.kler.cn/a/398757.html

相关文章:

  • 使用win32com将ppt(x)文件转换为pdf文件
  • Spring纯注解开发
  • 论文笔记 SuDORMRF:EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION
  • 深入List集合:ArrayList与LinkedList的底层逻辑与区别
  • python实现十进制转换二进制,tkinter界面
  • OpenHarmony-1.启动流程
  • 永磁同步电机负载估计算法--直接计算法
  • 【C#】C#编程基础:探索控制台应用与数据操作
  • 网络安全技术概论知识点
  • Go语言的创始人, 核心特性和学习资源
  • 【设计模式】结合Tomcat源码,分析外观模式/门面模式的特性和应用场景
  • AI大模型如何重塑软件开发流程:智能化与自动化的新时代
  • git相关知识
  • 在Chrome DevTools中,怎样查看调用堆栈?
  • Django 搭建数据管理web——商品管理
  • Oracle手工创建数据库和多环境变量下如何连接指定的数据库
  • YouQu使用手册【元素定位】
  • 小程序-基于java+SpringBoot+Vue的智能小程序商城设计与实现
  • 华为HCIP——MSTP/RSTP与STP的兼容性
  • 基于微信小程序的科学健身助手的设计与实现
  • 2411rust,异步函数
  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • docker部署bitnami/etcd:latest
  • 搭建es环境
  • 【网络安全】XSS注入
  • Ubuntu上安装docker