相机内参标定(Realsense D455/435内参标定以及手眼标定)
相机的内外参
内参数 与相机自身特性有关的参数 ,焦距 ,像素大小 外参数 , 相机的位置 ,旋转方向为什么要内参标定
理想情况下 ,镜头会将一个三维空间中的直线也映射成直线(即射影变换) ,但实际上 ,镜头无法这么完美 ,通过镜头映射之后 ,直线会变弯,所以需要相机的畸变参数来描述这种变形效果 。 理想情况下 ,相机对x方向和y方向的尺寸的缩小比例是一样的 ,但实际上,镜头如果不是完美的圆 ,传感器上的像素如果不是完美的紧密排列的正方形 ,都可能会导致这两个方向的缩小比例不一致 。内参中包含两个参数可以描述这两个方向的缩放比例,不仅可以将用像素数量来衡量的长度转换成三维空间中的用其它单位(比如米)来衡量的长度 ,也可以表示在x和y方向的尺度变换的不一致性; 理想情况下 ,镜头的光轴(就是通过镜头中心垂直于传感器平面的直线)应该是穿过图像的正中间的 ,但是 ,实际由于安装精度的问题 ,总是存在误差 ,这种误差需要用内参来描述;内参矩阵:
fx s x0 K = 0 fy y0 0 0 1fx, fy为焦距 ,一般情况下 ,两者相等 , x0,y0为主点坐标,s为坐标轴倾斜参数 ,理想情况下为0
外参数矩阵:包括旋转和平移矩阵相机的位姿估计
参考链接:
即像素坐标 Px 乘以深度 zc =相机内参K乘以相机坐标 Pc . 相关链接: https://zhuanlan.zhihu.com/p/144307108 https://www.cnblogs.com/singlex/p/pose_estimation_1.html内参标定和估计
相关链接:
Camera Calibration using OpenCV
https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-calibration-intrinsic.html
/home/jialiangfan/visp/build/example/calibration
/home/jialiangfan/visp/build/tutorial/grabber
mv /home/jialiangfan/visp/build/tutorial/grabber/chessboard-* /home/jialiangfan/visp/build/example/calibration
./calibrate-camera default-chessboard.cfg
通过ros_calibration获得较高精度的内参标定
rosdep install camera_calibration 普通相机的话 ,安装usb-cam工具,realsense也可配置 ,usbcam的配置方法 为https://blog.csdn.net/qq_27865227/article/details/120975769 realsense 或者安装 sudo apt-get install ros-kinetic-realsense2-camera ,然后运行 roslaunch realsense2_camera rs_camera.launch align_depth:=true usb-cam配置下的校对命令:~/ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.25 image:=/usb_cam/image_raw camera:=/usb_cam rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.028 image:=/usb_cam/image_raw标定好的Realsense D455参数
[[400.50715871 0. 313.03444875]
[ 0. 413.68114326 234.14594096]
[ 0. 0. 1. ]]opencv 标定Realsense D455参数
cameraMatrix : [392.716970864628, 0, 243.0185503073266;
0, 387.129884776694, 215.7363588792927;
0, 0, 1]
distCoeffs : [0.06146982267847866, -0.05119212933712309, -0.007642430456467396, -0.05887116845433386, 0.009214258584880468]从realsense本身api获取的结果
p[319.435 241.826] f[380.528 380.19]
ros_calibration 标定结果
390.989992 0.000000 291.088402
0.000000 386.367613 236.286866
0.000000 0.000000 1.000000distortion -0.030756 0.135162 -0.006918 -0.015546 0.000000
rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000projection
423.408600 0.000000 285.763055 0.000000
0.000000 418.590729 232.499668 0.000000
0.000000 0.000000 1.000000 0.000000外参数标定
python camera_calibration_show_extrinsics.py --calibration camera.xml --scale_focal 20
通过对若干个图形的姿态确立,初始坐标一般确定为棋盘左上角 ,反向求解出相机在初始坐标系下的姿态。
参考链接:https://blog.csdn.net/jiaoyangwm/article/details/97752238
realsense 可视化界面
命令行输入:realsense-viewer
rgb相机 帧率最高 60 , 画质424*240 ,帧率30 ,画质为640x480
深度相机 帧率最高90 , 画质比较低 , 画质会随着帧率的升高而降低Realsense机械臂手眼标定
技术介绍 https://blog.csdn.net/yaked/article/details/77161160 https://editor.csdn.net/md/?not_checkout=1&articleId=128649152 https://zhuanlan.zhihu.com/p/576861119手眼标定流程记录:
aruco_ros等功能包
easy_handeye功能包 Marker id: 6 ,大小: 5cm
改写 easy_hand_eye中的参数
技术教程 Franka+realsense: https://zhuanlan.zhihu.com/p/576861119 visp package: http://wiki.ros.org/visp_hand2eye_calibration Kinova hand-eye-calibration: https://blog.csdn.net/qq_39367282/article/details/89515338创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!