Realsense D455/435内参标定以及手眼标定

慈云数据 2024-03-20 技术支持 68 0

相机的内外参

  1. 内参数 与相机自身特性有关的参数,焦距,像素大小
  2. 外参数, 相机的位置,旋转方向

为什么要内参标定

  • 理想情况下,镜头会将一个三维空间中的直线也映射成直线(即射影变换),但实际上,镜头无法这么完美,通过镜头映射之后,直线会变弯,所以需要相机的畸变参数来描述这种变形效果。
  • 理想情况下,相机对x方向和y方向的尺寸的缩小比例是一样的,但实际上,镜头如果不是完美的圆,传感器上的像素如果不是完美的紧密排列的正方形,都可能会导致这两个方向的缩小比例不一致。内参中包含两个参数可以描述这两个方向的缩放比例,不仅可以将用像素数量来衡量的长度转换成三维空间中的用其它单位(比如米)来衡量的长度,也可以表示在x和y方向的尺度变换的不一致性
  • 理想情况下,镜头的光轴(就是通过镜头中心垂直于传感器平面的直线)应该是穿过图像的正中间的,但是,实际由于安装精度的问题,总是存在误差,这种误差需要用内参来描述;

    内参矩阵:

    Realsense D455/435内参标定以及手眼标定
    (图片来源网络,侵删)
        fx    s    x0
    K =  0    fy   y0
         0    0    1
    

    fx, fy为焦距,一般情况下,两者相等, x0,y0为主点坐标,s为坐标轴倾斜参数,理想情况下为0

    外参数矩阵:包括旋转和平移矩阵

    Realsense D455/435内参标定以及手眼标定
    (图片来源网络,侵删)

    相机的位姿估计

    参考链接:

    即像素坐标 Px 乘以深度 zc =相机内参K乘以相机坐标 Pc .

    相关链接:

    1. https://zhuanlan.zhihu.com/p/144307108
    2. https://www.cnblogs.com/singlex/p/pose_estimation_1.html

    内参标定和估计

    相关链接:

    1. https://learnopencv.com/camera-calibration-using-opencv/

    2. https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-calibration-intrinsic.html

    3. /home/jialiangfan/visp/build/example/calibration

    4. /home/jialiangfan/visp/build/tutorial/grabber

    5. mv /home/jialiangfan/visp/build/tutorial/grabber/chessboard-* /home/jialiangfan/visp/build/example/calibration

    6. ./calibrate-camera default-chessboard.cfg

    通过ros_calibration获得较高精度的内参标定

    1. rosdep install camera_calibration
    2. 普通相机的话,安装usb-cam工具,realsense也可配置,usbcam的配置方法 为https://blog.csdn.net/qq_27865227/article/details/120975769
    3. realsense 或者安装 sudo apt-get install ros-kinetic-realsense2-camera,然后运行 roslaunch realsense2_camera rs_camera.launch align_depth:=true
    4. usb-cam配置下的校对命令:~/ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.25 image:=/usb_cam/image_raw camera:=/usb_cam
    5. 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.000000

    distortion -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.000000

    projection

    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机械臂手眼标定

    1. 技术介绍 https://blog.csdn.net/yaked/article/details/77161160
    2. https://editor.csdn.net/md/?not_checkout=1&articleId=128649152
    3. https://zhuanlan.zhihu.com/p/576861119

    手眼标定流程记录:

    1. aruco_ros等功能包

    2. easy_handeye功能包 Marker id: 6,大小: 5cm

    3. 改写 easy_hand_eye中的参数

    技术教程
    1. Franka+realsense: https://zhuanlan.zhihu.com/p/576861119
    2. visp package: http://wiki.ros.org/visp_hand2eye_calibration
    3. Kinova hand-eye-calibration: https://blog.csdn.net/qq_39367282/article/details/89515338
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon