相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 介绍

举报
月照银海似蛟龙 发表于 2022/07/29 23:30:38 2022/07/29
【摘要】 相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 相机与激光雷达外参标定功能包介绍环境配置及功能包安装功能包节点准备内容1 livo...

相机与激光雷达外参标定

什么是相机与激光雷达外参标定?
就是相机坐标系和激光雷达坐标系的TF变化。位置x,y,z 欧拉角 roll,pitch,yaw,6个变量构成一个4*4的旋转变换矩阵
标定的就是这个4维的旋转矩阵

标定的方法有:

  • 基于特征
  • 基于运动观测
  • 基于最大化互信息
  • 基于深度学习

基于特征 的方法是根据对应特征点求解PnP问题,需要标定板来获取特征
基于运动观测可以看作手眼标定问题,精度决定于相机和雷达的运动估计
基于最大化互信息认为图像灰度于反射强度具有相关性
基于深度学习需要长时间的训练并且泛化能力不高

定方法有两个指标

  • 精度
  • 自动化程度

精度也就是标定的外参有多么精确,一般可以通过投影来定性的来看出来,自动化程度指的是这种方法在标定时需要进行什么操作(比如特定的数据录制要求),以及需要满足什么前提条件(比如特定的标定板)等等。

livox_camera_lidar_calibration 就是基于特征的标定方法
基于特征的方法原理也比较简单,实际上就是构建并求解一个PnP问题。

需要找到n对3d-2d点对,也就是要分别要在点云和图像中提取特征,并确定特征间的对应关系,一般选择的特征是标定板上一些特殊的位置点,比如角点。

功能包介绍

功能包名称:livox_camera_lidar_calibration
功能包使用环境: Ubuntu 64-bit 16.04

功能包功能简介:
本方案提供了一个手动校准Livox雷达和相机之间外参的方法,已经在Mid-40,Horizon和Tele-15上进行了验证。其中包含了计算相机内参,获得标定数据,优化计算外参和雷达相机融合应用相关的代码。本方案中使用了标定板角点作为标定目标物,由于Livox雷达非重复性扫描的特点,点云的密度较大,比较易于找到雷达点云中角点的准确位置。相机雷达的标定和融合也可以得到不错的结果。

环境配置及功能包安装

首先需要安装Ubuntu 16.04的 系统

然后安装 Livox SDK 和 livox_ros_driver
指令如下:

# 安装Livox_SDK
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
sudo ./third_party/apr/apr_build.sh
cd build && cmake ..
make
sudo make install

# 安装livox_ros_driver
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
cd ws_livox
catkin_make

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

然后安装相关库的依赖,有PCL,Eigen,Ceres-solver
这三个都是常用的了,安装了可以跳过此步骤
安装方式的链接如下:
PCL 安装
Eigen安装
Ceres-solver安装

最后下载功能包

git clone https://github.com/Livox-SDK/livox_camera_lidar_calibration.git

  
 
  • 1

在这里插入图片描述

放到自己的ROS工作空间下面
编译

catkin_make

  
 
  • 1

在这里插入图片描述
这里在编译完后有个警告:

warning: XXX is deprecated [-Wdeprecated-declarations]

  
 
  • 1

这是一句警告,简单来说就是在你代码中使用的XXX已经被弃用了。具体发生原因暂时不清楚,可能新链接的某个库对XXX,名字进行了替换

但是warning不影响make也不影响结果

有强迫症的话忍不了warning,可以打开CMakeLists.txt

把这个

set(CMAKE_CXX_FLAGS)

  
 
  • 1

换成

 set(CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations ")

  
 
  • 1

功能包节点

功能包的功能较多,包含7个节点,每个节点有对应的launch文件,所有可以看launch的文件夹
在这里插入图片描述
下面简单介绍下各节点的功能:

  • cameraCalib - 标定相机内参
  • pcdTransfer - 将雷达点云rosbag转换成PCD文件
  • cornerPhoto - 获得照片角点
  • getExt1 - 计算外参节点1,只优化外参
  • getExt2 - 计算外参节点2,同时优化内参和外参
  • projectCloud - 把雷达点云投影到照片上
  • colorLidar - 雷达点云着色

准备内容

1 livox雷达

2 基于针孔原理的相机

然后需要选择相机的镜头,因为livox的雷达的视场角是不会改变的,例如livox 的avia 的视场角是 70.4° * 77.2° ,那么相机就要选一个镜头,视场角尽量和它保持一致

两者安装好之后位置关系就不要再动了,因外求的就是两者的位置关系嘛

3 黑白棋盘格

在这里插入图片描述
标定相机内参用的

4 标定板

一个矩形的,大点的(比如1m*1.5m)的标定板。
在这里插入图片描述
该功能包使用标定板的四个角点来作为目标物。

5 标定相机内参

相机内参标定的方法有很多
可以基于MATLAB标定
需要安装MATLAB来计算结果
准备20张以上的照片数据,各个角度和位置都要覆盖,拍摄的时候不要距离太近(3米左右)
然后使用
使用MATLAB中的cameraCalibrator工具,经过计算后可以得到如下结果,我们需要第1,2和11个数据
在这里插入图片描述
在功能包中也有一个相机标定的节点可以使用
配置cameraCalib.launch中对应的路径和参数,默认是把照片数据放在data/camera/photos下,然后在data/camera/in.txt中写入所有需要使用的照片名称
输入指令开始标定

roslaunch camera_lidar_calibration cameraCalib.launch

  
 
  • 1

标定结果中会保存在data/camera/result.txt中,包括重投影误差,内参矩阵和畸变纠正参数。

文章来源: blog.csdn.net,作者:月照银海似蛟龙,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_32761549/article/details/125642906

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。