针对 GS130WI 双目相机标定 问题,由于 GS130WI 与 GS130W 在相机传感器部分相同(均为 SC132GS),标定方法可参考 GS130W/SC132GS 的流程。
核心结论
GS130WI 标定分为两部分:
- 相机内参 + 外参标定(双目立体标定)
- IMU 标定(如使用 VIO 需要)
目前官方没有提供 GS130WI 专用的标定工具,需要开发者自行完成标定并生成配置文件。
标定步骤
步骤 1:获取原始图像
首先需要确保相机能正常出流,并获取左右目原始图像用于标定:
# 启动 MIPI 相机节点(双路输出)
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py
# 或使用示例脚本获取图像
cd /app/pydev_demo/03_mipi_camera_sample
python3 mipi_camera.py
保存左右目图像到本地目录,用于后续标定。
步骤 2:使用标定工具
方案 A:使用 ROS2 标定工具(推荐)
# 安装标定工具
sudo apt install ros-humble-camera-calibration
# 启动标定节点(需要修改为订阅 GS130W 的图像话题)
ros2 run camera_calibration cameracalibrator.py \
--size 8x6 \
--square 0.025 \
image:=/mipi_cam/left/image_raw \
camera:=/mipi_cam/left
# 对右目相机重复上述步骤
方案 B:使用 OpenCV 离线标定
import cv2
import numpy as np
import glob
# 准备标定板图像
images = glob.glob('calibration_images/left/*.jpg')
# 标定参数
checkerboard = (8, 6) # 内角点数量
square_size = 0.025 # 方格边长(米)
# 执行标定
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
objp = np.zeros((checkerboard[0]*checkerboard[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:checkerboard[0], 0:checkerboard[1]].T.reshape(-1, 2) * square_size
# ... 执行标定流程,获取内参矩阵和畸变系数
步骤 3:生成标定配置文件
标定完成后,需要生成 hobot_stereonet 所需的 YAML 配置文件,格式参考:
# gc4663_calibration.yaml 或自定义文件名
left_camera:
camera_matrix:
rows: 3
cols: 3
data: [fx, 0, cx, 0, fy, cy, 0, 0, 1]
distortion_coeffs:
rows: 1
cols: 5
data: [k1, k2, p1, p2, k3]
right_camera:
camera_matrix:
rows: 3
cols: 3
data: [fx, 0, cx, 0, fy, cy, 0, 0, 1]
distortion_coeffs:
rows: 1
cols: 5
data: [k1, k2, p1, p2, k3]
stereo:
rotation_matrix:
rows: 3
cols: 3
data: [R11, R12, R13, R21, R22, R23, R31, R32, R33]
projection_matrix_left:
rows: 3
cols: 4
data: [P11, P12, P13, P14, P21, P22, P23, P24, P31, P32, P33, P34]
projection_matrix_right:
rows: 3
cols: 4
data: [P11, P12, P13, P14, P21, P22, P23, P24, P31, P32, P33, P34]
步骤 4:加载标定参数
在运行双目深度算法时加载自定义标定文件:
# 修改 launch 文件或添加参数
ros2 launch hobot_stereonet stereonet.launch.py \
calibration_file:=/path/to/your/gs130wi_calibration.yaml
关键注意事项
| 项目 | 说明 |
|---|---|
| 标定板 | 建议使用 8×6 或 9×6 棋盘格,方格边长 2-3cm |
| 图像数量 | 至少 20 张不同角度、距离的标定板图像 |
| 距离范围 | 标定距离应覆盖实际使用范围(建议 0.5m - 3m) |
| IMU 标定 | 如需使用 VIO,还需标定 IMU 与相机的外参(较复杂) |
| 配置文件位置 | 通常放在 /app/data/calibration/ 或自定义路径 |
相关社区资源
- 132GS MIPI 双目相机如何自行标定 - 详细标定流程讨论
- 双目 MIPI 深度 Demo 离线标定文件使用 - 标定文件格式说明
- 为自定义双目摄像头增加校准参数 - 配置文件集成方法
重要提醒
由于 GS130WI 官方暂无 VIO SLAM 适配计划,如果您标定的目的是用于 VIO:
- 需要自行集成 IMU 数据(确认 IMU 型号和驱动)
- 需要标定 相机-IMU 外参(建议使用 Kalibr 等工具)
- 需要修改
hobot_vio源码适配 GS130WI 数据流
如仅需双目深度/纯视觉 SLAM,完成相机标定即可使用。
建议将您的标定过程和结果反馈到社区,帮助其他开发者避坑!