d455标定文件

D455标定文件

%YAML:1.0

#--------------------------------------------------------------------------------------------
# Camera Parameters (Need to be Adjusted)
#--------------------------------------------------------------------------------------------
Camera.type: "PinHole"

Camera.fx: 428.095886230469
Camera.fy: 427.559661865234
Camera.cx: 433.961669921875
Camera.cy: 239.139083862305

Camera.k1: -0.0564233511686325
Camera.k2: 0.0676868334412575
Camera.p1: 0.000179319584276527
Camera.p2: 0.000386114203138277

Camera.width: 848
Camera.height: 480

Camera.fps: 30.0

# IR projector baseline (d455: 95mm) times fx (aprox.)
Camera.bf: 40.669

# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1

# Close/Far threshold. Baseline times.
ThDepth: 50.0

# Deptmap values factor
DepthMapFactor: 1000.0

# Left Camera to IMU Transform
#Tbc: !!opencv-matrix
#  rows: 4
#  cols: 4
#  dt: f
#  data:
#    [0.999997,         0.00178305,       0.00186204,       0.0288179721683264,
#     -0.00177265,      0.999983,        -0.00557174,       0.00749534415081143,
#     -0.00187194,      0.00556842,       0.999983,         0.0157551020383835,
#     0.0,              0.0,              0.0,              1.0]
Tbc: !!opencv-matrix
  rows: 4
  cols: 4
  dt: f
  data:
    [0.999997,        -0.00177265,      -0.00187194,      -0.0287750978022814,
     0.00178305,       0.999983,         0.00556842,      -0.00763433100655675,
     0.00186204,      -0.00557174,       0.999983,        -0.0157667268067598,
     0.0,              0.0,              0.0,              1.0]

IMU.NoiseGyro: 2.8227829947665693e-03
IMU.NoiseAcc: 1.6324958258624640e-02
IMU.GyroWalk: 2.2798061029608936e-05
IMU.AccWalk: 1.8448325759171436e-04
IMU.Frequency: 400

#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------

# Number of features per image
ORBextractor.nFeatures: 1000

# Scale factor between levels in the scale pyramid 	
ORBextractor.scaleFactor: 1.2

# Number of levels in the scale pyramid	
ORBextractor.nLevels: 8

# Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast			
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7

#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize: 2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500

### D455相机的标定过程 #### 一、准备工作 在开始D455相机的标定之前,需要确保ROS环境已配置好,并安装了RealSense ROS驱动程序。如果尚未完成这些操作,请先按照官方文档进行设置[^1]。 #### 二、获取默认内参 通常情况下,Realsense系列相机(包括D455)会在启动时通过`/camera/color/camera_info`话题发布其默认的相机内参。可以使用以下命令查看: ```bash rostopic echo /camera/color/camera_info ``` 此方法适用于快速验证场景下的参数需求,但对于高精度应用来说,默认内参可能不够准确,因此建议进一步执行精确标定[^2]。 #### 三、采集标定数据 为了实现更精准的标定效果,需记录一组图像用于后续处理。以下是具体的操作流程: 1. **准备标定板** 使用标准的黑白相间棋盘格作为标定图案,推荐尺寸为A4纸大小以上,网格数量至少7×9以满足算法需求[^3]。 2. **录制Rosbag文件** 启动摄像头节点后,利用`rosbag record`工具保存所需的传感器数据流。对于D455双目相机而言,主要关注红外和彩色通道的数据: ```bash rosbag record -O mult_cam_d455 /infra_left/image_rect_raw /infra_right/image_rect_raw /color/image_raw ``` #### 四、执行标定 基于收集到的数据包,可采用多种方式完成实际标定工作: 1. **单目相机标定** 如果仅针对某一特定视角(如RGB色彩模块),则可以直接调用OpenCV中的函数实施单独校准;或者借助Calibration GUI界面简化交互体验。 2. **双目立体视觉标定** 鉴于D455本身具备两路独立IR投影器结构特点,在某些特殊场合下还需要同步考虑左右两侧成像单元之间的相对位置关系调整优化问题。此时应当参照专门设计好的脚本模板来导入先前存储下来的Bag档案并逐帧解析匹配特征点坐标信息进而求解最终变换矩阵表达形式。 #### 五、验证成果 最后一步便是检验新生成的一组修正系数能否有效改善原始输入序列中存在的畸变现象以及提升整体定位精度水平。可以在RVIZ可视化环境中加载更新后的TF框架定义文件重新渲染观察物体运动轨迹是否变得更加平滑稳定。 ```python import cv2 as cv from realsense_camera import * rs = RealsenseCamera() criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001) objp = np.zeros((6*8,3), np.float32) objp[:,:2] = np.mgrid[0:8,0:6].T.reshape(-1,2) # Arrays to store object points and image points from all the images. objpoints = [] # 3d point in real world space imgpoints = [] # 2d points in image plane. for i in range(10): ret, bgr_frame, depth_frame = rs.get_frame_stream() gray = cv.cvtColor(bgr_frame,cv.COLOR_BGR2GRAY) # Find the chess board corners ret, corners = cv.findChessboardCorners(gray,(8,6),None) if ret == True: objpoints.append(objp) corners2 = cv.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) imgpoints.append(corners2) ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(objpoints,imgpoints,gray.shape[::-1],None,None) print(mtx,dist) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值