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

根据你的日志和已尝试的方案,问题比通道接反更复杂。让我分析关键信息:

核心问题定位

你的日志中有两个关键警告被忽略了:

[WARN] [mipi_cap]: Target FOV 0.00° out of valid range [86.84°, 143.17°]
[WARN] [mipi_cap]: Use default alpha=0.0 (target FOV invalid)

以及 stereonet 节点初始化时的参数:

[camera_fx, camera_fy, camera_cx, camera_cy, baseline, doffs]: [0, 0, 0, 0, 0(m)0]

这说明:相机内参完全没有正确加载!


问题根因

1. 标定文件路径问题

你的启动命令中:

mipi_camera_calibration_file_path:=/opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml

但日志显示:

config_file_path is  /opt/tros/humble/lib/mipi_cam/config/

注意:路径末尾缺少了文件名! 这导致系统使用了默认的空参数(全 0)。

2. FOV 为 0 的原因

因为内参全是 0,计算出的视场角(FOV)也是 0,超出了有效范围 [86.84°, 143.17°],系统只能使用默认值 alpha=0.0,导致极线校正失败。


解决方案

步骤 1:检查标定文件是否存在

# 确认标定文件存在
ls -la /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml

# 查看文件内容(确认不是空文件)
cat /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml

如果文件不存在,需要从相机厂商获取或使用官方默认文件。

步骤 2:修正启动命令

关键修改:确保路径完整且正确

source /opt/tros/humble/setup.bash
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_544_448_96.launch.py \
  mipi_camera_calibration_file_path:=/opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml \
  mipi_image_width:=1280 \
  mipi_image_height:=640 \
  mipi_image_framerate:=10.0 \
  mipi_gdc_enable:=True \
  mipi_rotation:=0.0 \
  mipi_cal_rotation:=0.0 \
  mipi_channel:=2 \
  mipi_channel2:=0 \
  calib_method:=none \
  save_result_flag:=True \
  save_dir:=/home/sunrise/stereonet_result_baseline \
  save_freq:=1 \
  save_total:=1 \
  save_stereo_flag:=True \
  save_origin_flag:=False \
  save_disp_flag:=True \
  save_uncert_flag:=False \
  save_depth_flag:=True \
  save_visual_flag:=True \
  save_pcd_flag:=True

步骤 3:验证内参是否加载成功

启动后,重点检查日志中是否还有以下信息:

:white_check_mark: 正确的标志:

[WARN] [StereoNetNode]: => sub rectified [fx, fy, cx, cy, baseline(m), doffs] : [287.429561, 473.413395, 285.964228, 223.091902, 0.079239, 0.000000]

错误的标志(你当前的情况):

[camera_fx, camera_fy, camera_cx, camera_cy, baseline, doffs]: [0, 0, 0, 0, 0(m)0]
Target FOV 0.00° out of valid range

步骤 4:如果标定文件确实有问题

参考社区教程重新标定:[132GS MIPI 双目相机][RDK X5][如何自行标定相机]

快速标定流程:

# 1. 采集棋盘格图像
bash run_cam.sh --calibration_mode true

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

# 3. 使用新标定文件启动
ros2 launch hobot_stereonet ... \
  mipi_camera_calibration_file_path:=/home/sunrise/my_calibration.yaml

关于"满屏距离标识,没有物体识别"

这是正常现象!你运行的是深度测距程序(hobot_stereonet),不是物体识别程序。

  • 深度测距:输出每个像素的距离值(就是你看到的满屏数字)
  • 物体识别:需要运行 YOLO 等检测模型(如 hobot_object_detection)

如果你需要同时做深度 + 识别,需要:

  1. 先修复深度测距的标定问题
  2. 再启动物体检测节点
  3. 进行数据融合

下一步行动

请按以下顺序操作:

  1. 检查标定文件是否存在且有效
  2. 修正启动命令中的路径
  3. 重新启动并确认内参加载成功(日志中 fx/fy 不为 0)
  4. 测试深度精度

如果仍有问题,请提供:

  • cat /opt/tros/humble/lib/mipi_cam/config/SC132gs_dual_calibration.yaml 的内容
  • 修正后的完整启动日志

相关参考帖子: