RDK X5 视频、扫描,建模,为什么显示满屏距离标识,没有物体识别呢?正常建模应该是怎么样的

关于深度精度测试是否需要目标板

结论

分两种情况:

目的 是否需要棋盘格 说明
验证当前标定是否准确 :white_check_mark: 需要 用棋盘格做极线标定测试
重新标定相机 :white_check_mark: 需要 采集棋盘格图像生成新参数
日常测距使用 :cross_mark: 不需要 但需要确保标定参数正确

当前问题分析

你提到 0.5-4m 测距不准,结合之前持续的 top is not left image 错误,核心问题很可能是左右相机识别错误导致深度计算完全错误。

解决顺序:

  1. 先解决左右识别问题(极线标定)
  2. 再测试深度精度

步骤 1:用棋盘格验证极线对齐(必须做)

# 1. 准备棋盘格:11x8 角点,方格边长 6cm
# 2. 在 0.5m, 1m, 2m, 3m 距离分别测试

cd /opt/tros/humble/share/hobot_stereonet/config/

bash run_stereo.sh --epipolar_mode True \
  --chessboard_per_rows 11 \
  --chessboard_per_cols 8 \
  --chessboard_square_size 0.06 \
  --mipi_image_width 1280 \
  --mipi_image_height 1088 \
  --mipi_channel 2 \
  --mipi_channel2 0

判断标准:

极线对齐结果 说明 下一步
<= 1px = 95%+ 标定准确 :white_check_mark: 直接测试深度精度
<= 1px = 50%- 左右识别错误或标定不匹配 :cross_mark: 交换通道参数或重新标定
<= 2px = 99%+ 可接受 :white_check_mark: 直接测试深度精度

步骤 2:如果极线对齐差,重新标定

# 1. 采集 20+ 张棋盘格图像(不同距离、角度)
bash run_stereo.sh --calibration_mode True \
  --save_dir /home/sunrise/calib_images \
  --mipi_image_width 1280 \
  --mipi_image_height 1088 \
  --mipi_channel 2 \
  --mipi_channel2 0

# 2. 执行标定
bash run_stereo.sh --calibration_mode True \
  --chessboard_per_rows 11 \
  --chessboard_per_cols 8 \
  --chessboard_square_size 0.06 \
  --save_calib True \
  --calib_save_path /home/sunrise/new_sc132gs_calib.yaml

# 3. 使用新标定文件启动
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_544_448_96.launch.py \
  mipi_camera_calibration_file_path:=/home/sunrise/new_sc132gs_calib.yaml \
  mipi_image_width:=1280 \
  mipi_image_height:=1088 \
  mipi_channel:=2 \
  mipi_channel2:=0 \
  calib_method:=none

步骤 3:深度精度测试(不需要棋盘格)

标定验证通过后,用普通物体测试深度精度:

# 1. 启动 stereonet
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_544_448_96.launch.py ...

# 2. 在 0.5m, 1m, 2m, 3m, 4m 放置平面物体(墙面、纸箱等)
# 3. 用尺子测量实际距离
# 4. 对比深度图输出值

# 查看深度话题
ros2 topic echo /StereoNetNode/stereonet_depth

可接受误差范围:

距离 误差范围
0.5m ±2cm
1m ±3cm
2m ±5cm
3m ±8cm
4m ±10cm

深度精度优化参数

如果极线对齐正确但精度仍差,调整以下参数:

ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_544_448_96.launch.py \
  mipi_camera_calibration_file_path:=/home/sunrise/new_sc132gs_calib.yaml \
  mipi_image_width:=1280 \
  mipi_image_height:=1088 \
  mipi_channel:=2 \
  mipi_channel2:=0 \
  calib_method:=none \
  speckle_filter_enable:=1 \
  max_speckle_size:=100 \
  max_disp_diff:=1 \
  pcl_filter_enable:=1 \
  grid_size:=0.05 \
  render_max_disp:=96 \
  render_z_range:=5.0

常见精度问题原因

问题 原因 解决方法
整体偏大/偏小 基线距离参数错误 检查标定文件 baseline
跳变严重 场景纹理不足 增加环境纹理或启用滤波
边缘噪点多 极线对齐差 重新标定
近距离不准 超出标定范围 避免<30cm 使用

建议

立即执行:

  1. 准备棋盘格(11x8,6cm 方格)
  2. 运行极线标定测试(步骤 1)
  3. 根据结果决定是否需要重新标定

棋盘格获取:

参考帖子:

先解决极线对齐问题,再谈深度精度! 有测试结果请更新帖子。