d435i相机内参标定(项目上无法直接使用,记录一下)

1.查看内参

打开roscore和相机

输入:

rostopic echo /camera/color/camera_info //查看相机内参

从而得到相机内参

d435i相机内参标定(项目上无法直接使用,记录一下)_第1张图片  

d435i相机内参标定(项目上无法直接使用,记录一下)_第2张图片

 2、标定内参

这里使用了ros自带的标定工具

1、先下载标定工具

//安装包
rosdep install camera_calibration

此处可能会需要update  rosdep,如果更新成功就可以顺利安装标定工具,但是也可能遇到更新超时的情况。可以参考以下文章进行改良解决rosdep update失败问题 - 知乎

也可以使用sudo来进行安装(我没有试过),来源如下

ROS系统 摄像头标定camera calibration_ros摄像头标定_飞同学的博客-CSDN博客

sudo apt-get install ros-melodic-camera-calibration

D435i标定_d435标定_awhuter的博客-CSDN博客

2、启动相机,打开话题

//启动相机
roslaunch realsense2_camera rs_camera.launch
rostopic list
//发布的话题名为
/camera/color/camera_info

3、进行标定

11x9,这里使用的是字母"x",不能使用*,11x9是除去最外面的角点后内部的角点的行列数,对于分不清楚行列的,建议生成行列相等的标定板

square 0.03,指的是方格边长3cm

关于image源的选择,我后面使用的是/camera/depth/color/points,也就是点云的话题,但此处不能对点云进行一个内参标定,因为点云实际上是计算得到的,相机获取的是color和depth两种数据,理论上对他们分别进行内参标定就可以。(深度相机的内参是否需要标定,此处我还没有弄明白,明白了再更新)

关于camera源的选择,选的是color的源,不是depth源,原因也很简单,depth看不出角点…………,但是按照1的方法是可以查出depth源的内参的,这个我也不是很明白。

--no-service-check一定记得要加,不加的话camera的源就不对,打不开标定的面板。

rosrun camera_calibration cameracalibrator.py --size 11x9 --square 0.03 image:=/camera/color/image_raw camera:=/camera/color --no-service-check

标定的过程,不断变换位置直到calibrate可以使用。 然后就可以在终端获取内参。可以和1中查看的内参矩阵进行对比。(有一定的差别)

d435i相机内参标定(项目上无法直接使用,记录一下)_第3张图片

d435i相机内参标定(项目上无法直接使用,记录一下)_第4张图片

 

 3、内参矩阵的使用

写个python函数即可(单目相机无法反过来转换,下一次会使用imu标定等更工程的方法……明天再写吧我忘的差不多了)

d435i相机内参标定(项目上无法直接使用,记录一下)_第5张图片

 

你可能感兴趣的:(c++,linux,ubuntu)