相机与激光雷达标定:gazebo仿真livox_camera_lidar_calibration---相机内参标定

举报
月照银海似蛟龙 发表于 2022/07/29 23:06:40 2022/07/29
【摘要】 相机与激光雷达标定:gazebo仿真livox_camera_lidar_calibration---相机内参标定 前言采集相机标定内参的棋盘标定板图像相机内参标定配置进行相机内参标定 前言...

相机与激光雷达标定:gazebo仿真livox_camera_lidar_calibration---相机内参标定

前言

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

前一篇链接中在gazebo中搭建了ROS功能包(livox_camera_lidar_calibration)的仿真场景

本篇在gazebo中进行相机内参的标定

采集相机标定内参的棋盘标定板图像

要求:
要准备20张以上的照片数据,各个角度和位置都要覆盖

启动搭建的gazebo场景
在这里插入图片描述
通过rqt_image_view来保存获取的图像

rqt_image_view

  
 
  • 1

在这里插入图片描述
点击那个保存的图标就行了.
在livox_camera_lidar_calibration文件夹下,新建data/camera/photos文件夹,在data/camera下新建in.txt文件
在这里插入图片描述
把图片保存在photos下面就行了
在这里插入图片描述
然后移动棋盘标定板

在gazebo中有个可以直接移动的图标,就是那个十字箭头,然后选中棋盘标定板,出现3个轴,然后拖动鼠标就可以移动
在这里插入图片描述
我在各个位置拍了8张

然后不同角度的拍照,旋转棋盘标定板,改变一定角度,不要太大也.
gazebo也有个图片可以改变物体姿态,
在这里插入图片描述
然后在改变3个轴的姿态,再拍几张
重复上面的过程,拍了21张图片

相机内参标定配置

编辑in.txt文件,写入所有需要使用的照片名称
在这里插入图片描述

然后编辑cameraCalib.launch文件,将里面的配置弄好

<?xml version="1.0" encoding="UTF-8"?>
<launch>
    <param name="camera_in_path"        value="$(find camera_lidar_calibration)/data/camera/in.txt" />  <!-- the file to contain all the photos -->
    <param name="camera_folder_path"    value="$(find camera_lidar_calibration)/data/camera/photos/" />  <!-- the file to contain all the photos -->
    <param name="result_path"           value="$(find camera_lidar_calibration)/data/camera/result.txt" />  <!-- the file to save the intrinsic data -->
    
    <param name="row_number"            type="int" value="8" />  <!-- the number of block on the row -->
    <param name="col_number"            type="int" value="7" />  <!-- the number of block on the column -->
    <param name="width"                 type="int" value="20" />  <!-- the width of each block on the chessboard(mm) -->
    <param name="height"                type="int" value="20" />  <!-- the height of each block on the chessboard(mm)-->
    
    <node pkg="camera_lidar_calibration" name="cameraCalib" type="cameraCalib" output="screen"></node>

</launch>

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

需要改的是
图片名称路径和文件路径
行数和列数 与每个格的尺寸

进行相机内参标定

修改好后输入指令开始标定

roslaunch camera_lidar_calibration cameraCalib.launch

  
 
  • 1

其中有的图片运行会非常慢,或者找不到角点,经过调试发现
调用的节点的CPP中有这样一行

if (0 == findChessboardCorners(imageInput, board_size, image_points_buf)) {

  
 
  • 1

这的检测时间和条件是很高的.

我一开始采的很多图片就识别不了.因为opencv的那个函数就是那样子的.

对于这个问题,可以使用 camera_calibration 这个功能包,在线的采集标定图像,方便一些

最后求到相机内参是这样的:
在这里插入图片描述

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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