【RDK X5】【GS132双目相机】【rviz2】rviz2中无法看到点云

RDK X5本地运行rviz2,按《双目深度估计算法》文档操作后,无法看到点云。

================ RDK System Information Collection ================

[Hardware Model]:
x5_rdk_v2 1_B (Board Id = 302)

temperature-->
	DDR      : 95.0 (C)
94438
	BPU      : 94.5 (C)
	CPU      : 94.3 (C)
cpu frequency-->
	      min(M)	cur(M)	max(M)
	cpu0: 300	1500	1500
	cpu1: 300	1500	1500
	cpu2: 300	1500	1500
	cpu3: 300	1500	1500
	cpu4: 300	1500	1500
	cpu5: 300	1500	1500
	cpu6: 300	1500	1500
	cpu7: 300	1500	1500
bpu status information---->
	      min(M)	cur(M)	max(M)	ratio
	bpu0: 500	1000	1000	100
ddr frequency information---->
	      min(M)	cur(M)	max(M)
	ddr:  266	4266	4266
GPU gc8000 frequency information---->
	      min(M)	cur(M)	max(M)
	gc8000:  200	1000	1000

[RDK Kernel Version]:
Linux ubuntu 6.1.83 #1 SMP PREEMPT Wed Apr 8 21:09:59 CST 2026 aarch64 aarch64 aarch64 GNU/Linux

[RDK Miniboot Version]:
U-Boot 2022.10+ (Jun 18 2025 - 11:13:54 +0800)

[RDK Packages List]:
hobot-audio-config/未知,now 3.0.3-20260409110014 arm64 [已安装]
hobot-boot/未知,now 3.1.0-20260409105641 arm64 [已安装]
hobot-camera/未知,now 3.1.1-20260409105913 arm64 [已安装]
hobot-configs/未知,now 3.1.4-20260409105753 arm64 [已安装]
hobot-display/未知,now 3.0.5-20251208164617 arm64 [已安装]
hobot-dnn/未知,now 3.0.4-20260409110123 arm64 [已安装]
hobot-dtb/未知,now 3.0.8-20260409105754 arm64 [已安装]
hobot-io-samples/未知,now 3.0.2-20260409105640 arm64 [已安装]
hobot-io/未知,now 3.1.4-20260409105736 arm64 [已安装]
hobot-kernel-headers/未知,now 3.0.4-20260409105759 arm64 [已安装]
hobot-miniboot/未知,now 3.0.9-20260409105755 arm64 [已安装]
hobot-models-basic/未知 1.2.1 arm64 [可从该版本升级:1.2.0]
hobot-multimedia-dev/未知,now 3.0.4-20260409110017 arm64 [已安装]
hobot-multimedia-samples/未知,now 3.1.1-20260409110018 arm64 [已安装]
hobot-multimedia/未知,now 3.0.5-20260409105737 arm64 [已安装]
hobot-sp-samples/未知,now 3.0.7-20260409110132 arm64 [已安装]
hobot-spdev/未知,now 3.0.9-20260409105935 arm64 [已安装]
hobot-utils/未知,now 3.0.7-20260409110015 arm64 [已安装]
hobot-wifi/未知,now 3.0.4-20260409105640 arm64 [已安装]

[RDK Packages List]:
tros-humble-ai-msgs/未知,now 2.0.1-jammy.20241225.032050 arm64 [已安装]
tros-humble-audio-control/未知,now 2.0.1-jammy.20250228.035949 arm64 [已安装]
tros-humble-audio-msg/未知,now 2.0.1-jammy.20250425.105023 arm64 [已安装]
tros-humble-audio-tracking/未知,now 2.1.0-jammy.20250228.040121 arm64 [已安装]
tros-humble-base/未知,now 2.5.2-jammy.20260313.064024 arm64 [已安装]
tros-humble-body-tracking/未知,now 2.1.1-jammy.20241225.040923 arm64 [已安装]
tros-humble-chatbot/未知 0.1.0-20240822101628 arm64
tros-humble-clip-encode-image/未知,now 0.2.0-jammy.20241225.032737 arm64 [已安装]
tros-humble-clip-encode-text/未知,now 0.2.0-jammy.20241225.024337 arm64 [已安装]
tros-humble-clip-manage/未知,now 0.2.0-jammy.20241225.024351 arm64 [已安装]
tros-humble-clip-msgs/未知,now 0.2.0-jammy.20241225.024229 arm64 [已安装]
tros-humble-dnn-benchmark-example/未知,now 2.4.0-jammy.20260312.094609 arm64 [已安装]
tros-humble-dnn-node-example/未知,now 2.6.1-jammy.20260312.112442 arm64 [已安装]
tros-humble-dnn-node-sample/未知,now 2.3.2-jammy.20260312.112738 arm64 [已安装]
tros-humble-dnn-node/未知,now 2.6.1-jammy.20260312.094112 arm64 [已安装]
tros-humble-dstereo-occnet/未知,now 1.0.4-jammy.20260312.100052 arm64 [已安装]
tros-humble-elevation-net/未知,now 2.2.1-jammy.20241225.034317 arm64 [已安装]
tros-humble-face-age-detection/未知,now 2.3.1-jammy.20241225.033025 arm64 [已安装]
tros-humble-face-landmarks-detection/未知,now 2.3.1-jammy.20241225.033459 arm64 [已安装]
tros-humble-faceid/未知 0.1.0-jammy.20251216.145515 arm64
tros-humble-first-node/未知 0.0.0-20240822101706 arm64
tros-humble-gesture-control/未知,now 2.1.0-jammy.20241225.041130 arm64 [已安装]
tros-humble-hand-gesture-detection/未知,now 2.4.1-jammy.20241225.040702 arm64 [已安装]
tros-humble-hand-landmarks-mediapipe/未知 1.2.1-jammy.20260319.031112 arm64
tros-humble-hand-lmk-detection/未知,now 2.4.1-jammy.20241225.040439 arm64 [已安装]
tros-humble-hbm-img-msgs/未知,now 2.0.0-jammy.20241225.031409 arm64 [已安装]
tros-humble-hobot-arm/未知 2.0.0-20240822101204 arm64
tros-humble-hobot-audio/未知,未知,now 2.3.5-jammy.20250918.101554 arm64 [已安装]
tros-humble-hobot-cartographer/未知 0.0.1-20240822101611 arm64
tros-humble-hobot-chatbot/未知 2.0.1-jammy.20241225.035416 arm64
tros-humble-hobot-codec/未知,now 2.3.5-jammy.20260312.111803 arm64 [已安装]
tros-humble-hobot-cv/未知,now 2.3.7-jammy.20260401.124358 arm64 [已安装]
tros-humble-hobot-dosod/未知,now 1.0.0-jammy.20260312.115107 arm64 [已安装]
tros-humble-hobot-falldown-detection/未知,now 2.0.0-jammy.20241225.040324 arm64 [已安装]
tros-humble-hobot-hdmi/未知,未知,now 2.4.2-jammy.20241127.083620 arm64 [已安装]
tros-humble-hobot-image-publisher/未知,now 2.2.1-jammy.20250425.114211 arm64 [已安装]
tros-humble-hobot-llamacpp/未知,now 0.3.0-jammy.20250728.125950 arm64 [已安装]
tros-humble-hobot-llm/未知 2.2.0-jammy.20241225.023654 arm64
tros-humble-hobot-mot/未知,now 2.0.2-jammy.20241225.024808 arm64 [已安装]
tros-humble-hobot-rtsp-client/未知,now 1.0.2-jammy.20250428.105340 arm64 [已安装]
tros-humble-hobot-shm/未知,now 0.0.1-jammy.20241225.030528 arm64 [已安装]
tros-humble-hobot-stereo-usb-cam/未知 2.1.0-jammy.20240816.141027 arm64
tros-humble-hobot-stereonet-render/未知 2.0.1-jammy.20240816.143408 arm64
tros-humble-hobot-stereonet-utils/未知,now 2.3.1-jammy.20260312.095725 arm64 [已安装]
tros-humble-hobot-stereonet/未知,now 2.5.5-jammy.20260331.045429 arm64 [已安装]
tros-humble-hobot-tts/未知 2.0.6-jammy.20250428.105805 arm64
tros-humble-hobot-usb-cam/未知,now 2.3.0-jammy.20250425.110259 arm64 [已安装]
tros-humble-hobot-vio/未知,now 2.1.1-jammy.20241225.023850 arm64 [已安装]
tros-humble-hobot-visualization/未知,now 2.0.3-jammy.20250425.114100 arm64 [已安装]
tros-humble-hobot-yolo-world/未知,now 0.4.1-jammy.20241225.041535 arm64 [已安装]
tros-humble-hobot-zed-cam/未知,now 2.3.3-jammy.20250425.104612 arm64 [已安装]
tros-humble-img-msgs/未知,now 2.0.0-jammy.20241225.031324 arm64 [已安装]
tros-humble-imu-sensor/未知,now 2.0.1-jammy.20241225.030258 arm64 [已安装]
tros-humble-ldlidar-ros2/未知 1.0.0-20240822101535 arm64
tros-humble-line-follower-model/未知 2.0.0-jammy.20240821.150053 arm64
tros-humble-mipi-cam/未知,now 2.5.2-jammy.20260401.111754 arm64 [已安装]
tros-humble-mono-edgesam/未知,now 0.2.0-jammy.20260312.114524 arm64 [已安装]
tros-humble-mono-mobilesam/未知,now 0.2.0-jammy.20241225.034034 arm64 [已安装]
tros-humble-mono-pwcnet/未知,now 0.1.0-jammy.20241225.033248 arm64 [已安装]
tros-humble-mono2d-body-detection/未知,now 2.4.2-jammy.20260312.112912 arm64 [已安装]
tros-humble-mono2d-trash-detection/未知,now 2.4.0-jammy.20241225.035918 arm64 [已安装]
tros-humble-mono3d-indoor-detection/未知,now 2.2.1-jammy.20241225.041312 arm64 [已安装]
tros-humble-orb-slam3-example-ros2/未知 2.3.1-jammy.20241122.161842 arm64
tros-humble-orb-slam3/未知 2.3.0-jammy.20241120.074512 arm64
tros-humble-originbot-base/未知 0.0.0-20240822101336 arm64
tros-humble-originbot-msgs/未知 0.0.0-20240822101300 arm64
tros-humble-palm-detection-mediapipe/未知 1.2.0-jammy.20260317.065553 arm64
tros-humble-parking-perception/未知,now 2.1.0-jammy.20240816.144347 arm64 [已安装]
tros-humble-parking-search/未知,now 2.1.0-jammy.20241225.032300 arm64 [已安装]
tros-humble-performance-test/未知 2.1.0-jammy.20241127.065446 arm64
tros-humble-racing-control/未知 2.0.0-20240822101647 arm64
tros-humble-racing-image-collect/未知 0.0.0-20240822101240 arm64
tros-humble-racing-light-detection-cv/未知 0.0.0-20240822101554 arm64
tros-humble-recorder-node/未知 2.1.0-jammy.20241225.024033 arm64
tros-humble-reid/未知,now 0.2.0-jammy.20260312.113302 arm64 [已安装]
tros-humble-ros-workspace/未知,now 1.0.3-jammy.20240410.033708 arm64 [已安装]
tros-humble-sensevoice-ros2/未知 1.1.0-jammy.20260312.102314 arm64
tros-humble-serial/未知 1.2.1-20240822101317 arm64
tros-humble-sllidar-ros2/未知 1.0.1-20240822101516 arm64
tros-humble-trigger-node-example/未知 2.1.0-jammy.20241225.032624 arm64
tros-humble-trigger-node/未知 2.1.0-jammy.20241225.024119 arm64
tros-humble-tros-lowpass-filter/未知,now 0.0.1-jammy.20241225.033734 arm64 [已安装]
tros-humble-tros-perception-fusion-msgs/未知,now 0.0.1-jammy.20241225.024840 arm64 [已安装]
tros-humble-tros-perception-fusion/未知,now 0.0.1-jammy.20241225.033858 arm64 [已安装]
tros-humble-websocket/未知,now 2.3.2-jammy.20250425.113230 arm64 [已安装]
tros-humble-yahboom-sunrise-robot-lib/未知 0.0.0-20240822101356 arm64
tros-humble-yahboomcar-base-node/未知 0.0.0-20240822101438 arm64
tros-humble-yahboomcar-bringup/未知 0.0.0-20240822101457 arm64
tros-humble-yahboomcar-description/未知 0.0.0-20240822101414 arm64
tros-humble-ydlidar-ros2-driver/未知 1.0.1-20240822090807 arm64
tros-humble/未知,now 2.5.2-jammy.20260313.064039 arm64 [已安装]

[RDK Kernel Module List]:
Module Size Used by
usb_f_ecm 24576 2
usb_f_mass_storage 65536 2
rfcomm 86016 16
vs_drm 172032 1
vs_x5_syscon_bridge 16384 0
vio_n2d 274432 1 vs_drm
galcore 380928 2
bnep 28672 2
snd_soc_hobot_sound_duplex_host 24576 0
snd_soc_simple_card_utils 28672 1 snd_soc_hobot_sound_duplex_host
es8311 45056 0
designware_i2s 24576 2
rtc_hpu3501 20480 1
usb_f_rndis 40960 2
u_ether 28672 2 usb_f_rndis,usb_f_ecm
libcomposite 69632 14 usb_f_rndis,usb_f_mass_storage,usb_f_ecm
leds_gpio 16384 0
bpu_hw_io_x5 24576 0
bpu_cores 28672 2 bpu_hw_io_x5
bpu_framework 77824 3 bpu_hw_io_x5,bpu_cores
hobot_lpwm 45056 0
hobot_isi_sensor 49152 4
hobot_gdc 36864 4
hobot_deserial 45056 0
vs_vse_nat 61440 0
vs_dw_crc 16384 2 hobot_gdc,vs_vse_nat
vs_isp_nat 102400 1 vs_vse_nat
hobot_mipidbg 28672 0
hobot_mipicsi 126976 1 hobot_mipidbg
hobot_camsys 36864 2 hobot_mipicsi,hobot_gdc
hobot_mipiphy 49152 2 hobot_mipidbg,hobot_mipicsi
hobot_sensor 352256 5 hobot_isi_sensor
vs_sif_nat 69632 0
vs_ops_nat 16384 3 vs_isp_nat,vs_sif_nat,vs_vse_nat
vs_cam_pulse 16384 1 vs_sif_nat
hobot_vin_vcon 45056 0
hobot_vin_vnode 45056 4 hobot_mipicsi,vs_sif_nat,hobot_vin_vcon,hobot_lpwm
hobot_osd 73728 0
hobot_jpu 69632 2
hobot_vpu 122880 0
hobot_codec_vnode 32768 0
hobot_vio_common 114688 82 hobot_isi_sensor,vio_n2d,hobot_deserial,hobot_camsys,vs_isp_nat,hobot_vin_vnode,hobot_gdc,hobot_osd,hobot_codec_vnode,vs_sif_nat,hobot_vin_vcon,vs_vse_nat,hobot_sensor,hobot_lpwm
vs_csi_wrapper 16384 0
vs_cam_ctrl 16384 4 vs_isp_nat,hobot_gdc,vs_sif_nat,vs_vse_nat
vs_isc 32768 13 vs_isp_nat,vs_sif_nat,vs_vse_nat
binfmt_misc 24576 1
hid_logitech_hidpp 49152 0
joydev 28672 0
input_leds 16384 0
led_class 20480 2 leds_gpio,input_leds
hid_logitech_dj 28672 0
aic8800_fdrv 475136 0
cfg80211 389120 1 aic8800_fdrv
aic8800_bsp 90112 1 aic8800_fdrv
sii902x 24576 0
tcan4x5x 16384 0
m_can 32768 1 tcan4x5x
i2c_mux 16384 1 sii902x
spidev 24576 0
can_dev 40960 1 m_can
drm_kms_helper 172032 3 sii902x,vs_x5_syscon_bridge,vs_drm
snd_soc_es8326 45056 1
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
fb_sys_fops 16384 1 drm_kms_helper
evdev 24576 4
sch_fq_codel 20480 264
hb_bl 16384 0
goodix_ts 32768 0
panel_waveshare_dsi 16384 0
ft5406 20480 0
panel_wh_cm480 16384 0
uvcvideo 106496 0
videobuf2_vmalloc 20480 1 uvcvideo
videobuf2_memops 20480 1 videobuf2_vmalloc
videobuf2_v4l2 32768 1 uvcvideo
videobuf2_common 53248 4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
hci_uart 49152 1
btrtl 28672 1 hci_uart
btbcm 20480 0
bluetooth 790528 42 btrtl,hci_uart,btbcm,bnep,rfcomm
rfkill 32768 7 bluetooth,cfg80211
fuse 131072 1

sunrise@ubuntu:~$ ros2 topic list
/StereoNetNode/origin_left_image
/StereoNetNode/origin_right_image
/StereoNetNode/rectify_left_image
/StereoNetNode/rectify_left_image/camera_info
/StereoNetNode/rectify_right_image
/StereoNetNode/rectify_right_image/camera_info
/StereoNetNode/stereonet_depth
/StereoNetNode/stereonet_depth/camera_info
/StereoNetNode/stereonet_pointcloud2
/StereoNetNode/stereonet_visual
/clicked_point
/goal_pose
/image_combine_raw
/image_combine_raw/left/camera_info
/image_combine_raw/right/camera_info
/image_jpeg
/image_left_raw
/image_left_raw/camera_info
/image_right_raw
/image_right_raw/camera_info
/initialpose
/parameter_events
/rosout
/tf
/tf_stati

我来帮你排查这个问题。从你提供的信息看,/StereoNetNode/stereonet_pointcloud2 话题已经存在,但 rviz2 看不到点云。让我先搜索社区中类似的问题。

根据你的系统信息和话题内容,问题已经定位了。从 ros2 topic list 可以看到点云话题 /StereoNetNode/stereonet_pointcloud2 已经正常发布,但 rviz2 中看不到点云。

:magnifying_glass_tilted_left: 问题排查步骤

:one: 首先验证点云数据是否正常发布

# 查看点云话题是否有数据
ros2 topic echo /StereoNetNode/stereonet_pointcloud2 --once

# 查看点云话题的详细信息
ros2 topic info /StereoNetNode/stereonet_pointcloud2 -v

如果 echo 命令没有输出或报错,说明点云数据没有正常生成。

:two: 检查 StereoNet 节点是否启用了点云发布

从你的话题列表看,点云话题存在,但需要确认:

# 查看 StereoNet 节点的参数配置
ros2 param dump /StereoNetNode

重点检查以下参数:

  • publish_pcd_enabled: 应该为 true
  • pointcloud2_topic: 应该是 /StereoNetNode/stereonet_pointcloud2

:three: 检查 tf 坐标变换

点云显示需要正确的坐标系变换:

# 查看 tf 树
ros2 run tf2_tools view_frames.py
evince frames.pdf

# 查看 camera_link 坐标系是否存在
ros2 topic echo /tf --once

常见问题:StereoNet 发布的点云坐标系是 camera_link,如果 rviz2 的 Fixed Frame 不是这个坐标系,点云就不会显示。

:four: rviz2 配置检查

在 rviz2 中:

  1. Fixed Frame 设置为 camera_link(或添加从 base_linkcamera_link 的 static_transform)
  2. 添加 PointCloud2
    • Topic: /StereoNetNode/stereonet_pointcloud2
    • Queue Size: 10
    • Style: Flat Squares / Points
  3. 调整显示范围
    • 点云可能太远或太近,调整 Point CloudSize (m) 参数
    • 检查 Decay Time 是否设置合理

:five: 检查相机标定参数

从之前的案例看,GS132 相机常见问题是左右目顺序反了标定参数缺失

# 查看相机 info 话题
ros2 topic echo /StereoNetNode/stereonet_depth/camera_info --once

# 检查 fx, fy, cx, cy, baseline 是否为有效值(不应全为 0)

如果标定参数全为 0,需要重新标定或加载正确的标定文件。

:six: 查看 StereoNet 节点日志

# 重新启动 StereoNet,观察日志
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py 2>&1 | grep -E "(ERROR|WARN|pointcloud)"

重点查找:

  • top is not left image(左右目反了)
  • camera_fx, camera_fy 是否为 0
  • 点云发布相关日志

:hammer_and_wrench: 快速解决方案

根据社区经验,最可能的原因是:

方案 A:rviz2 Fixed Frame 设置错误

# 启动 rviz2 后,将 Fixed Frame 改为 camera_link
# 或者添加 static_transform_publisher
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 base_link camera_link

方案 B:左右目图像顺序反了(参考话题 #34656

# 修改启动命令,交换 channel 参数
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py channel:=2 channel2:=0
# 然后重新启动 StereoNet

方案 C:标定参数缺失

需要按照文档进行相机标定,或加载官方标定文件。


:clipboard: 请提供以下信息以便进一步诊断

  1. 执行 ros2 topic echo /StereoNetNode/stereonet_pointcloud2 --once 的输出
  2. rviz2 中 Fixed Frame 设置的是什么?
  3. StereoNet 启动日志中是否有 ERROR 或 WARN?
  4. 执行 ros2 param dump /StereoNetNode | grep -E "(publish_pcd|camera_f)" 的结果

建议先在社区搜索 “rviz2 点云”“stereonet pointcloud” 相关话题,已有多个类似问题的解决方案。

ros2 topic echo /StereoNetNode/stereonet_pointcloud2 --once

没有输入。

sunrise@ubuntu:~$ ros2 topic info /StereoNetNode/stereonet_pointcloud2 -v
Type: sensor_msgs/msg/PointCloud2

Publisher count: 1

Node name: NODE_NAME_UNKNOWN
Node namespace: NODE_NAMESPACE_UNKNOWN
Topic type: sensor_msgs/msg/PointCloud2
Endpoint type: PUBLISHER
GID: 01.0f.19.e8.cc.24.ef.2b.00.00.00.00.00.00.1a.03.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: VOLATILE
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite

Subscription count: 1

Node name: rviz
Node namespace: /
Topic type: sensor_msgs/msg/PointCloud2
Endpoint type: SUBSCRIPTION
GID: 01.0f.19.e8.2a.26.11.09.00.00.00.00.00.00.20.04.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: VOLATILE
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite

sunrise@ubuntu:~$ ros2 param dump /StereoNetNode
Node not found

:bullseye: 问题定位

关键发现ros2 param dump /StereoNetNode 返回 Node not found,说明 StereoNet 节点已经挂掉了

虽然话题 /StereoNetNode/stereonet_pointcloud2 存在(有发布者注册),但节点实际已崩溃,所以 echo 没有数据输出。


:magnifying_glass_tilted_left: 根本原因分析

从社区类似案例(话题 #34286#34656)看,GS132 双目相机常见问题:

问题 现象 解决方案
左右目顺序反了 节点报错 top is not left image 交换 channelchannel2 参数
相机初始化失败 codec/websocket 报 no image data 检查 MIPI 连接/重新插拔
标定参数缺失 camera_fx/fy 全为 0 加载标定文件或重新标定
节点崩溃 Node not found 查看日志定位具体错误

:hammer_and_wrench: 排查步骤

:one: 重新启动 StereoNet 并抓取完整日志

# 先停止所有相关节点
pkill -f stereonet
pkill -f mipi_cam

# 重新启动,保存完整日志
source /opt/tros/humble/setup.bash
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py 2>&1 | tee stereo_log.txt

等待 10 秒后,按 Ctrl+C 停止,然后检查日志:

# 查找错误信息
grep -E "(ERROR|WARN|terminate|Exception)" stereo_log.txt

# 检查相机初始化
grep -E "(sc132gs|mipi|init)" stereo_log.txt

# 检查标定参数
grep -E "(camera_fx|baseline|calib)" stereo_log.txt

:two: 验证相机是否正常工作

# 单独启动相机,看是否有图像
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py channel:=0 channel:=2

# 新终端查看图像话题
ros2 topic hz /image_left_raw
ros2 topic hz /image_right_raw

如果频率为 0 或报错,说明相机驱动有问题。

:three: 尝试交换左右目 channel(高频解决方案)

# 停止当前节点
pkill -f stereonet
pkill -f mipi_cam

# 交换 channel 参数启动
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py channel:=2 channel2:=0

# 再启动 StereoNet
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py

:four: 检查节点是否存活

# 确认 StereoNetNode 存在
ros2 node list | grep StereoNet

# 如果存在,检查参数
ros2 param dump /StereoNetNode | grep -E "(publish_pcd|camera_f)"

:clipboard: 请提供以下信息

  1. stereo_log.txt 中的 ERROR/WARN 内容(最关键!)
  2. 执行 ros2 node list | grep StereoNet 的结果
  3. 相机启动后 ros2 topic hz /image_left_raw 的频率

:books: 参考社区案例

建议:把完整日志发到社区,已有多个 GS132 用户遇到过类似问题,可以快速定位。

root@ubuntu:/home/sunrise/stereo_test# grep -E “(ERROR|WARN|terminate|Exception)” stereo_log.txt
[hobot_codec_republish-3] [WARN] [1778574059.758252759] [hobot_codec_encoder_e80d556f]: Parameters:
[hobot_codec_republish-3] [WARN] [1778574059.766550160] [HobotCodecImpl]: platform x5
[mipi_cam-2] [WARN] [1778574060.043120696] [mipi_node]:
[websocket-4] [WARN] [1778574060.116142937] [websocket]:
[stereonet_model_node-1] [WARN] [1778574060.424502497] [StereoNetNode]: => ===================== init StereoNetNode =====================
[stereonet_model_node-1] [WARN] [1778574060.430045987] [StereoNetNode]:
[stereonet_model_node-1] [WARN] [1778574060.763275585] [StereoNetNode]: => ============ init model start ============
[stereonet_model_node-1] [WARN] [1778574060.763465626] [StereoNetNode]: => model name: DStereoV2.4.0
[stereonet_model_node-1] [WARN] [1778574060.763548834] [StereoNetNode]: => input_count: 2
[stereonet_model_node-1] [WARN] [1778574060.763603751] [StereoNetNode]: => output_count: 4
[stereonet_model_node-1] [WARN] [1778574060.763689542] [StereoNetNode]: => model_input_h: 352, model_input_w: 640
[stereonet_model_node-1] [WARN] [1778574060.763777417] [StereoNetNode]: => ----- prepare_input_tensor -----
[stereonet_model_node-1] [WARN] [1778574060.763847917] [StereoNetNode]: => input tensor type is HB_DNN_IMG_TYPE_NV12
[stereonet_model_node-1] [WARN] [1778574060.764132666] [StereoNetNode]: => input[0].memsize: 337920
[stereonet_model_node-1] [WARN] [1778574060.765039248] [StereoNetNode]: => ----- prepare_output_tensor -----
[stereonet_model_node-1] [WARN] [1778574060.765262873] [StereoNetNode]: => output tensor type is HB_DNN_TENSOR_TYPE_S32
[stereonet_model_node-1] [WARN] [1778574060.765431247] [StereoNetNode]: => output[0].memsize: 506880
[stereonet_model_node-1] [WARN] [1778574060.766951494] [StereoNetNode]: => ============ init model end ============
[mipi_cam-2] [WARN] [1778574060.901036999] [mipi_cap]: i2c bus: 4, EEPROM FLAG: SZYGSJKJ
[mipi_cam-2] [WARN] [1778574060.932351816] [mipi_cap]: => ================== left awb otp data ==================
[mipi_cam-2] [WARN] [1778574060.932516941] [mipi_cap]: left_awb_otp_data_.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.932615441] [mipi_cap]: left_awb_otp_data_.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.932707649] [mipi_cap]: left_awb_otp_data_.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.932799232] [mipi_cap]: left_awb_otp_data_.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.932886899] [mipi_cap]: left_awb_otp_data_.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.932975232] [mipi_cap]: left_awb_otp_data_.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933063232] [mipi_cap]: left_awb_otp_data_.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933150190] [mipi_cap]: left_awb_otp_data_.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933236398] [mipi_cap]: left_awb_otp_data_.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933322648] [mipi_cap]: left_awb_otp_data_.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933409439] [mipi_cap]: left_awb_otp_data_.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933497939] [mipi_cap]: left_awb_otp_data_.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933664064] [mipi_cap]: => ================== right awb otp data ==================
[mipi_cam-2] [WARN] [1778574060.933760814] [mipi_cap]: right_awb_otp_data_.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933851522] [mipi_cap]: right_awb_otp_data_.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.933938480] [mipi_cap]: right_awb_otp_data_.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934025563] [mipi_cap]: right_awb_otp_data_.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934112188] [mipi_cap]: right_awb_otp_data_.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934198855] [mipi_cap]: right_awb_otp_data_.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934285688] [mipi_cap]: right_awb_otp_data_.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934372771] [mipi_cap]: right_awb_otp_data_.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934459229] [mipi_cap]: right_awb_otp_data_.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934546187] [mipi_cap]: right_awb_otp_data_.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934632021] [mipi_cap]: right_awb_otp_data_.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934717729] [mipi_cap]: right_awb_otp_data_.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574060.934805770] [mipi_cap]: => ========================================================
[mipi_cam-2] [WARN] [1778574060.948972619] [mipi_cap]: Target FOV 0.00° out of valid range [62.02°, 140.64°]
[mipi_cam-2] [WARN] [1778574060.949121577] [mipi_cap]: Use default alpha=0.0 (target FOV invalid)
[mipi_cam-2] [WARN] [1778574061.578978755] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778574061.579091130] [mipi_cap]: pdata.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579116672] [mipi_cap]: pdata.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579138547] [mipi_cap]: pdata.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579159255] [mipi_cap]: pdata.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579287380] [mipi_cap]: pdata.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579314171] [mipi_cap]: pdata.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579334921] [mipi_cap]: pdata.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579355255] [mipi_cap]: pdata.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579375254] [mipi_cap]: pdata.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579394921] [mipi_cap]: pdata.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579414546] [mipi_cap]: pdata.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579434338] [mipi_cap]: pdata.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574061.579454879] [mipi_cap]: pdata.awb_data[0].r: 65535
[mipi_cam-2] [WARN] [1778574061.579512796] [mipi_cap]: pdata.awb_data[0].gr: 65535
[mipi_cam-2] [WARN] [1778574061.579536713] [mipi_cap]: pdata.awb_data[0].gb: 65535
[mipi_cam-2] [WARN] [1778574061.579556796] [mipi_cap]: pdata.awb_data[0].b: 65535
[mipi_cam-2] [WARN] [1778574061.579576421] [mipi_cap]: pdata.awb_data[0].r: 0
[mipi_cam-2] [WARN] [1778574061.579595337] [mipi_cap]: pdata.awb_data[0].gr: 0
[mipi_cam-2] [WARN] [1778574061.579613837] [mipi_cap]: pdata.awb_data[0].gb: 0
[mipi_cam-2] [WARN] [1778574061.579632379] [mipi_cap]: pdata.awb_data[0].b: 0
[mipi_cam-2] [WARN] [1778574061.579651129] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778574061.591098483] [mipi_cap]: X5 start gdc rotation and cal.
[mipi_cam-2] [WARN] [1778574062.391665430] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778574062.391877388] [mipi_cap]: pdata.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.391981638] [mipi_cap]: pdata.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392073221] [mipi_cap]: pdata.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392161721] [mipi_cap]: pdata.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392249679] [mipi_cap]: pdata.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392336595] [mipi_cap]: pdata.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392422303] [mipi_cap]: pdata.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392507428] [mipi_cap]: pdata.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392590637] [mipi_cap]: pdata.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392675595] [mipi_cap]: pdata.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392760011] [mipi_cap]: pdata.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392844136] [mipi_cap]: pdata.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778574062.392928511] [mipi_cap]: pdata.awb_data[0].r: 65535
[mipi_cam-2] [WARN] [1778574062.393012386] [mipi_cap]: pdata.awb_data[0].gr: 65535
[mipi_cam-2] [WARN] [1778574062.393096469] [mipi_cap]: pdata.awb_data[0].gb: 65535
[mipi_cam-2] [WARN] [1778574062.393181385] [mipi_cap]: pdata.awb_data[0].b: 65535
[mipi_cam-2] [WARN] [1778574062.393264927] [mipi_cap]: pdata.awb_data[0].r: 0
[mipi_cam-2] [WARN] [1778574062.393348385] [mipi_cap]: pdata.awb_data[0].gr: 0
[mipi_cam-2] [WARN] [1778574062.393430968] [mipi_cap]: pdata.awb_data[0].gb: 0
[mipi_cam-2] [WARN] [1778574062.393514718] [mipi_cap]: pdata.awb_data[0].b: 0
[mipi_cam-2] [WARN] [1778574062.393597260] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778574062.407846900] [mipi_cap]: X5 start gdc rotation and cal.
[mipi_cam-2] [WARN] [1778574063.049025430] [mipi_cam]: [init]->cap sc132gs-1280p init success.
[stereonet_model_node-1] [WARN] [1778574063.154327903] [StereoNetNode]: => sub rectified [fx, fy, cx, cy, baseline(m), doffs] : [0.000000, 0.000000, 312.265194, 442.958544, nan, 0.000000]
[stereonet_model_node-1] [WARN] [1778574063.161668348] [StereoNetNode]: => receive left camera info
[stereonet_model_node-1] [WARN] [1778574063.253771470] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 10153.31144091, latency: 1778563910222.57 ms
[hobot_codec_republish-3] [ERROR] [1778574064.767400309] [hobot_codec_encoder_e80d556f]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [1778574065.138630750] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[stereonet_model_node-1] [ERROR] [1778574065.456742455] [StereoNetNode]: => Haven’t received any camera info from topic /image_combine_raw/right/camera_info
[stereonet_model_node-1] [WARN] [1778574068.255058701] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 10158.81144218, latency: 1778563910173.88 ms
[hobot_codec_republish-3] [ERROR] [1778574069.767142732] [hobot_codec_encoder_e80d556f]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [1778574070.138603918] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[stereonet_model_node-1] [ERROR] [1778574070.455924121] [StereoNetNode]: => Haven’t received any camera info from topic /image_combine_raw/right/camera_info
[stereonet_model_node-1] [WARN] [1778574073.257357786] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 10163.64472721, latency: 1778563910192.85 ms
[hobot_codec_republish-3] [ERROR] [1778574074.767498719] [hobot_codec_encoder_e80d556f]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [1778574075.138705818] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[stereonet_model_node-1] [ERROR] [1778574075.456689057] [StereoNetNode]: => Haven’t received any camera info from topic /image_combine_raw/right/camera_info
[stereonet_model_node-1] [WARN] [1778574078.273626242] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 10168.97799640, latency: 1778563910175.80 ms
[hobot_codec_republish-3] [ERROR] [1778574079.767134772] [hobot_codec_encoder_e80d556f]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [1778574080.138579158] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[stereonet_model_node-1] [ERROR] [1778574080.456204935] [StereoNetNode]: => Haven’t received any camera info from topic /image_combine_raw/right/camera_info

root@ubuntu:/home/sunrise/stereo_test# ros2 node list | grep StereoNet

没有输出

root@ubuntu:/home/sunrise/stereo_test# ros2 topic hz /image_left_raw
average rate: 51.792
min: 0.014s max: 0.030s std dev: 0.00400s window: 53
average rate: 50.868
min: 0.014s max: 0.032s std dev: 0.00434s window: 103
average rate: 50.541
min: 0.014s max: 0.032s std dev: 0.00399s window: 153
average rate: 49.767
min: 0.014s max: 0.033s std dev: 0.00416s window: 201
average rate: 49.798
min: 0.014s max: 0.033s std dev: 0.00423s window: 251
average rate: 50.026
min: 0.014s max: 0.033s std dev: 0.00423s window: 303
average rate: 50.154
min: 0.014s max: 0.046s std dev: 0.00440s window: 354
average rate: 50.250
min: 0.014s max: 0.046s std dev: 0.00439s window: 405

:bullseye: 问题根因已定位

从日志中看到关键错误

[stereonet_model_node-1] [WARN]: => sub rectified [fx, fy, cx, cy, baseline(m), doffs] : 
[0.000000, 0.000000, 312.265194, 442.958544, nan, 0.000000]

[stereonet_model_node-1] [ERROR]: => Haven't received any camera info from topic /image_combine_raw/right/camera_info

问题

  • fx=0, fy=0 → 焦距为 0(无效)
  • baseline=nan → 基线距离无效
  • 右目 camera_info 缺失
  • StereoNetNode 因参数无效而崩溃

结论相机标定参数缺失,导致无法计算深度和点云。


:hammer_and_wrench: 解决方案

方案 1:使用官方 GS132 标定文件(推荐)

GS132 双目相机应该有出厂标定参数。检查标定文件是否存在:

# 查找标定文件
find /opt/tros -name "*.yaml" | grep -i calib
find /opt/tros -name "*gs132*"
find /opt/tros -name "*stereo*" -type f | head -20

查看 stereonet launch 文件,确认标定文件路径:

cat /opt/tros/humble/share/hobot_stereonet/launch/stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py | grep -i calib

方案 2:手动指定标定参数启动

如果找不到标定文件,可以手动指定 GS132 的典型参数:

source /opt/tros/humble/setup.bash

# 启动相机(带标定参数)
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py \
    channel:=0 \
    channel2:=2 \
    camera_info_url_left:="" \
    camera_info_url_right:=""

# 启动 StereoNet(指定标定参数)
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py \
    camera_fx:=500.0 \
    camera_fy:=500.0 \
    camera_cx:=320.0 \
    camera_cy:=220.0 \
    baseline:=0.06

GS132 典型参数参考:fx≈500, baseline≈60mm(需根据实际相机调整)

方案 3:重新运行标定流程

按照官方文档进行标定:

# 参考文档:https://developer.d-robotics.cc/rdk_doc/Robot_development/boxs/spatial/hobot_stereonet

# 1. 采集标定图像
ros2 launch hobot_stereonet stereo_calib_collect.launch.py

# 2. 执行标定
ros2 launch hobot_stereonet stereo_calib.launch.py

# 3. 生成标定文件
# 标定完成后会生成 calib.yaml

:clipboard: 验证步骤

# 1. 启动后检查节点是否存在
ros2 node list | grep StereoNet

# 2. 检查相机 info 话题
ros2 topic echo /image_combine_raw/left/camera_info --once
ros2 topic echo /image_combine_raw/right/camera_info --once

# 3. 确认 fx, fy, baseline 不为 0
ros2 topic echo /StereoNetNode/stereonet_depth/camera_info --once

# 4. 测试点云数据
ros2 topic echo /StereoNetNode/stereonet_pointcloud2 --once

:books: 相关社区资源

搜索更多 GS132 标定相关话题:

:bullseye: 问题根因已定位

从日志中看到关键错误

[StereoNetNode]: => sub rectified [fx, fy, cx, cy, baseline(m), doffs] : 
[0.000000, 0.000000, 312.265194, 442.958544, nan, 0.000000]

[StereoNetNode]: => Haven't received any camera info from topic /image_combine_raw/right/camera_info

核心问题

  1. 标定参数缺失fx=0, fy=0, baseline=nan(无效值)
  2. 右目 camera_info 丢失:StereoNet 收不到右目标定信息
  3. AWB OTP 数据异常:全部是 65535(相机 EEPROM 读取失败)

这导致 StereoNet 节点无法计算深度,最终崩溃退出。


:hammer_and_wrench: 解决方案

方案 1:加载官方标定文件(推荐)

GS132 官方相机应该有预置标定文件。检查并加载:

# 1. 查找标定文件
find /opt/tros -name "*calib*.yaml" -o -name "*132gs*.yaml"

# 2. 查看 mipi_cam 配置目录
ls -la /opt/tros/humble/lib/mipi_cam/config/

# 3. 如果有 calib.yaml,修改启动脚本加载它
# 编辑 run_stereo.sh 或启动命令,添加标定文件路径

方案 2:使用 custom 模式加载标定

参考社区案例 #34406

# 创建标定文件(需要官方提供或使用标定工具生成)
# 格式参考:/opt/tros/humble/share/hobot_stereonet/config/calib_example.yaml

# 启动时指定标定模式
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py \
  calib_method:=custom \
  stereo_calib_file_path:=/path/to/your/calib.yaml

方案 3:检查相机连接和 EEPROM

AWB OTP 数据全为 65535 说明相机 EEPROM 读取失败:

# 1. 重新插拔 MIPI 排线,确保连接牢固
# 2. 检查 I2C 通信
i2cdetect -y 4  # GS132 通常在 I2C bus 4
i2cdetect -y 6

# 3. 查看相机是否被正确识别
dmesg | grep -i "sc132gs\|mipi\|camera"

# 4. 重启相机服务
sudo systemctl restart hobot-camera

方案 4:使用官方 run_stereo.sh 脚本

不要手动启动,使用官方脚本(会自动处理标定):

# 进入示例目录
cd /opt/tros/humble/share/hobot_multimedia_samples/stereo_depth/

# 查看脚本内容,确认标定配置
cat run_stereo.sh

# 运行脚本(根据相机类型选择参数)
bash run_stereo.sh --mipi_channel 0 --mipi_channel2 2

:clipboard: 立即执行以下命令诊断

# 1. 查找标定文件
find /opt/tros -name "*.yaml" | grep -i "calib\|stereo\|132"

# 2. 检查相机配置目录
ls -la /opt/tros/humble/lib/mipi_cam/config/

# 3. 查看当前启动的 launch 文件内容
cat /opt/tros/humble/share/hobot_stereonet/launch/stereonet_model_web_visual_v2.5_int16_usb_cam.launch.py | grep -A5 -B5 "calib"

# 4. 检查 I2C 设备
i2cdetect -y 4

:books: 参考社区资源

话题 内容
双目 MIPI 深度 Demo 离线标定文件使用问题 标定文件格式和加载方法
基于官方 132GS MIPI 双目相机运行双目 Demo 报错 GS132 类似问题讨论
自定义标定 SC230ai 段错误 标定文件加载注意事项

:warning: 关键提示

没有有效的标定参数(fx, fy, baseline),StereoNet 无法计算点云。这是设计行为,不是 bug。

请优先:

  1. 确认是否有官方标定文件
  2. 联系相机供应商获取 GS132 标定参数
  3. 或使用官方标定工具重新标定

把上述诊断命令的输出发出来,可以进一步帮你定位标定文件位置。

使用官方双目相机启动脚本运行结果:

root@ubuntu:/home/sunrise/stereo_test# bash run_stereo.sh
/opt/tros/humble
/opt/tros/humble
[INFO] [launch]: All log files can be found below /root/.ros/log/2026-05-12-16-54-47-064272-ubuntu-54125
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is /opt/tros/humble/lib/mipi_cam/config/
Hobot shm pkg enables zero-copy with fastrtps profiles file: /opt/tros/humble/lib/hobot_shm/config/shm_fastdds.xml
Hobot shm pkg sets RMW_FASTRTPS_USE_QOS_FROM_XML: 1
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
config_file_path is /opt/tros/humble/lib/mipi_cam/config/
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
config_file_path is /opt/tros/humble/lib/mipi_cam/config/
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
[INFO] [stereonet_model_node-1]: process started with pid [54129]
[INFO] [mipi_cam-2]: process started with pid [54131]
[INFO] [hobot_codec_republish-3]: process started with pid [54133]
[INFO] [websocket-4]: process started with pid [54135]
[hobot_codec_republish-3] [WARN] [1778576087.816081848] [hobot_codec_encoder_bc57c6d5]: Parameters:
[hobot_codec_republish-3] sub_topic: /StereoNetNode/stereonet_visual
[hobot_codec_republish-3] pub_topic: /image_jpeg
[hobot_codec_republish-3] channel: 1
[hobot_codec_republish-3] in_mode: ros
[hobot_codec_republish-3] out_mode: ros
[hobot_codec_republish-3] in_format: bgr8
[hobot_codec_republish-3] out_format: jpeg
[hobot_codec_republish-3] jpg_quality: 60.00
[hobot_codec_republish-3] input_framerate: 30
[hobot_codec_republish-3] output_framerate: -1
[hobot_codec_republish-3] dump_output: false
[hobot_codec_republish-3] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-3] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-3] [WARN] [1778576087.824611198] [HobotCodecImpl]: platform x5
[mipi_cam-2] [WARN] [1778576088.099190490] [mipi_node]:
[mipi_cam-2] node params:
[mipi_cam-2] config_path: /opt/tros/humble/lib/mipi_cam/config/
[mipi_cam-2] video_device_name: default
[mipi_cam-2] channel: 2
[mipi_cam-2] channel2: 0
[mipi_cam-2] camera_info_url:
[mipi_cam-2] camera_calibration_file_path: /opt/tros/humble/lib/mipi_cam/config/calib_params.yaml
[mipi_cam-2] out_format_name: nv12
[mipi_cam-2] gdc_bin_file:
[mipi_cam-2] image_width: 640
[mipi_cam-2] image_height: 352
[mipi_cam-2] sub_image_width: 1920
[mipi_cam-2] sub_image_height: 1080
[mipi_cam-2] framerate: 30
[mipi_cam-2] rotation: 90.000000
[mipi_cam-2] device_mode: dual
[mipi_cam-2] dual_combine: 1
[mipi_cam-2] lpwm_enable: true
[mipi_cam-2] gdc_enable: true
[mipi_cam-2] frame_ts_type: realtime
[mipi_cam-2] frame_id: default_cam
[mipi_cam-2] link_type: 0
[mipi_cam-2] link_port: 0
[mipi_cam-2] io_method_name: ros
[mipi_cam-2] cal_alpha: 0.000
[websocket-4] [WARN] [1778576088.177700437] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image_jpeg
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 1
[websocket-4] output_fps: 0
[stereonet_model_node-1] [WARN] [1778576088.482088912] [StereoNetNode]: => ===================== init StereoNetNode =====================
[stereonet_model_node-1]
[stereonet_model_node-1] [WARN] [1778576088.487882965] [StereoNetNode]:
[stereonet_model_node-1] stereonet_model_file_path: /opt/tros/humble/share/hobot_stereonet/config/DStereoV2.4_int16.bin
[stereonet_model_node-1] stereo_image_topic: /image_combine_raw
[stereonet_model_node-1] camera_info_topic: /image_combine_raw/right/camera_info
[stereonet_model_node-1] depth_image_topic: ~/stereonet_depth
[stereonet_model_node-1] depth_camera_info_topic: ~/stereonet_depth/camera_info
[stereonet_model_node-1] rectify_left_image_topic: ~/rectify_left_image
[stereonet_model_node-1] rectify_right_image_topic: ~/rectify_right_image
[stereonet_model_node-1] publish_rectify_bgr: 0
[stereonet_model_node-1] [origin_left_image_topic, origin_right_image_topic, publish_origin_enable]: [~/origin_left_image, ~/origin_right_image, 1]
[stereonet_model_node-1] [pointcloud2_topic, publish_pcd_enabled]: [~/stereonet_pointcloud2, 1]
[stereonet_model_node-1] [visual_image_topic, publish_visual_enabled]: [~/stereonet_visual, 1]
[stereonet_model_node-1] [stereonet_frame_id, stereonet_frame_id_right]: [camera_link, camera_link_right]
[stereonet_model_node-1] uncertainty_th: -0.1
[stereonet_model_node-1] [camera_fx, camera_fy, camera_cx, camera_cy, baseline, doffs]: [0, 0, 0, 0, 0(m)0]
[stereonet_model_node-1] [pointcloud_downsample_step, pointcloud_height_min, pointcloud_height_max, pointcloud_depth_max]: [2, -5(m), 5(m), 5(m)]
[stereonet_model_node-1] [use_local_image_flag, local_image_dir, image_sleep]: [0, ./offline, 0]
[stereonet_model_node-1] [save_result_flag, save_dir, save_freq, save_total, save_stereo_flag, save_origin_flag, save_disp_flag, save_uncert_flag, save_depth_flag, save_visual_flag, save_pcd_flag]: [0, ./result, 1, -1, 1, 0, 1, 0, 1, 1, 0]
[stereonet_model_node-1] [calib_method, stereo_calib_file_path]: [none, calib.yaml]
[stereonet_model_node-1] [speckle_filter_enable, max_speckle_size, max_disp_diff]: [0, 100, 1]
[stereonet_model_node-1] [pcl_filter_enable, grid_size, grid_min_point_count]: [0, 0.1, 5]
[stereonet_model_node-1] [render_type, render_perf, depth_decimal_num, render_max_disp, render_z_near, render_z_range]: [distance, 1, 2, 80, -1(m), 3(m)]
[stereonet_model_node-1] left_img_mask_enable: 0
[stereonet_model_node-1] [measure_mode, roi_size, gt_depth]: [0, 10, 0(mm)]
[stereonet_model_node-1] [epipolar_mode, feature_epipolar_mode, epipolar_img, chessboard_per_rows, chessboard_per_cols, chessboard_square_size]: [0, 0, rect, 20, 11, 0.06(m)]
[stereonet_model_node-1] feature_epipolar_mode: 0
[stereonet_model_node-1] post_version: auto
[stereonet_model_node-1] [infer_thread_num, save_thread_num, max_save_task]: [2, 4, 50]
[stereonet_model_node-1]
[stereonet_model_node-1] => ==================================================================
[stereonet_model_node-1]
[stereonet_model_node-1] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[stereonet_model_node-1] [HBRT] set log level as 0. version = 3.15.55.0
[stereonet_model_node-1] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[stereonet_model_node-1] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[stereonet_model_node-1] [WARN] [1778576088.857317276] [StereoNetNode]: => ============ init model start ============
[stereonet_model_node-1] [WARN] [1778576088.857550193] [StereoNetNode]: => model name: DStereoV2.4.0
[stereonet_model_node-1] [WARN] [1778576088.857649568] [StereoNetNode]: => input_count: 2
[stereonet_model_node-1] [WARN] [1778576088.857741194] [StereoNetNode]: => output_count: 4
[stereonet_model_node-1] [WARN] [1778576088.857862027] [StereoNetNode]: => model_input_h: 352, model_input_w: 640
[stereonet_model_node-1] [WARN] [1778576088.858016069] [StereoNetNode]: => ----- prepare_input_tensor -----
[stereonet_model_node-1] [WARN] [1778576088.858137319] [StereoNetNode]: => input tensor type is HB_DNN_IMG_TYPE_NV12
[stereonet_model_node-1] [WARN] [1778576088.858548112] [StereoNetNode]: => input[0].memsize: 337920
[stereonet_model_node-1] [WARN] [1778576088.860005448] [StereoNetNode]: => ----- prepare_output_tensor -----
[stereonet_model_node-1] [WARN] [1778576088.860177073] [StereoNetNode]: => output tensor type is HB_DNN_TENSOR_TYPE_S32
[stereonet_model_node-1] [WARN] [1778576088.860311157] [StereoNetNode]: => output[0].memsize: 506880
[stereonet_model_node-1] [WARN] [1778576088.861774660] [StereoNetNode]: => ============ init model end ============
[mipi_cam-2] [WARN] [1778576088.958119891] [mipi_cap]: i2c bus: 4, EEPROM FLAG: SZYGSJKJ
[mipi_cam-2]
[mipi_cam-2] [WARN] [1778576088.989150536] [mipi_cap]: => ================== left awb otp data ==================
[mipi_cam-2] [WARN] [1778576088.989323245] [mipi_cap]: left_awb_otp_data_.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.989421536] [mipi_cap]: left_awb_otp_data_.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.989665745] [mipi_cap]: left_awb_otp_data_.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.989770954] [mipi_cap]: left_awb_otp_data_.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.989861954] [mipi_cap]: left_awb_otp_data_.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.989949996] [mipi_cap]: left_awb_otp_data_.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990036329] [mipi_cap]: left_awb_otp_data_.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990122913] [mipi_cap]: left_awb_otp_data_.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990207538] [mipi_cap]: left_awb_otp_data_.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990292288] [mipi_cap]: left_awb_otp_data_.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990380247] [mipi_cap]: left_awb_otp_data_.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990466413] [mipi_cap]: left_awb_otp_data_.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990636705] [mipi_cap]: => ================== right awb otp data ==================
[mipi_cam-2] [WARN] [1778576088.990732414] [mipi_cap]: right_awb_otp_data_.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990819998] [mipi_cap]: right_awb_otp_data_.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990905956] [mipi_cap]: right_awb_otp_data_.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.990991748] [mipi_cap]: right_awb_otp_data_.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991076790] [mipi_cap]: right_awb_otp_data_.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991161540] [mipi_cap]: right_awb_otp_data_.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991246165] [mipi_cap]: right_awb_otp_data_.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991332249] [mipi_cap]: right_awb_otp_data_.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991417040] [mipi_cap]: right_awb_otp_data_.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991501832] [mipi_cap]: right_awb_otp_data_.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991586791] [mipi_cap]: right_awb_otp_data_.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991671749] [mipi_cap]: right_awb_otp_data_.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576088.991756374] [mipi_cap]: => ========================================================
[mipi_cam-2] [WARN] [1778576089.005696027] [mipi_cap]: Target FOV 0.00° out of valid range [103.56°, 140.42°]
[mipi_cam-2] [WARN] [1778576089.005834569] [mipi_cap]: Use default alpha=0.0 (target FOV invalid)
[mipi_cam-2] [WARN] [1778576089.231539221] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778576089.231631096] [mipi_cap]: pdata.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231656138] [mipi_cap]: pdata.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231678138] [mipi_cap]: pdata.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231699055] [mipi_cap]: pdata.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231832263] [mipi_cap]: pdata.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231859305] [mipi_cap]: pdata.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231880763] [mipi_cap]: pdata.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231901514] [mipi_cap]: pdata.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231921430] [mipi_cap]: pdata.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231941097] [mipi_cap]: pdata.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231960055] [mipi_cap]: pdata.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231979680] [mipi_cap]: pdata.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576089.231999680] [mipi_cap]: pdata.awb_data[0].r: 65535
[mipi_cam-2] [WARN] [1778576089.232019430] [mipi_cap]: pdata.awb_data[0].gr: 65535
[mipi_cam-2] [WARN] [1778576089.232039139] [mipi_cap]: pdata.awb_data[0].gb: 65535
[mipi_cam-2] [WARN] [1778576089.232058639] [mipi_cap]: pdata.awb_data[0].b: 65535
[mipi_cam-2] [WARN] [1778576089.232078389] [mipi_cap]: pdata.awb_data[0].r: 0
[mipi_cam-2] [WARN] [1778576089.232097681] [mipi_cap]: pdata.awb_data[0].gr: 0
[mipi_cam-2] [WARN] [1778576089.232116806] [mipi_cap]: pdata.awb_data[0].gb: 0
[mipi_cam-2] [WARN] [1778576089.232136389] [mipi_cap]: pdata.awb_data[0].b: 0
[mipi_cam-2] [WARN] [1778576089.232156472] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778576089.243446120] [mipi_cap]: X5 start gdc rotation and cal.
[mipi_cam-2]
[mipi_cam-2] [WARN] [1778576090.039997186] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778576090.040217812] [mipi_cap]: pdata.awb_golden_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040324104] [mipi_cap]: pdata.awb_golden_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040418729] [mipi_cap]: pdata.awb_golden_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040510562] [mipi_cap]: pdata.awb_golden_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040602063] [mipi_cap]: pdata.awb_golden_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040691563] [mipi_cap]: pdata.awb_golden_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040781021] [mipi_cap]: pdata.awb_data[0].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040869396] [mipi_cap]: pdata.awb_data[0].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.040956855] [mipi_cap]: pdata.awb_data[1].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.041044813] [mipi_cap]: pdata.awb_data[1].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.041132772] [mipi_cap]: pdata.awb_data[2].rg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.041220980] [mipi_cap]: pdata.awb_data[2].bg_ratio: 65535
[mipi_cam-2] [WARN] [1778576090.041309439] [mipi_cap]: pdata.awb_data[0].r: 65535
[mipi_cam-2] [WARN] [1778576090.041397939] [mipi_cap]: pdata.awb_data[0].gr: 65535
[mipi_cam-2] [WARN] [1778576090.041484814] [mipi_cap]: pdata.awb_data[0].gb: 65535
[mipi_cam-2] [WARN] [1778576090.041572273] [mipi_cap]: pdata.awb_data[0].b: 65535
[mipi_cam-2] [WARN] [1778576090.041659565] [mipi_cap]: pdata.awb_data[0].r: 0
[mipi_cam-2] [WARN] [1778576090.041746398] [mipi_cap]: pdata.awb_data[0].gr: 0
[mipi_cam-2] [WARN] [1778576090.041832982] [mipi_cap]: pdata.awb_data[0].gb: 0
[mipi_cam-2] [WARN] [1778576090.041918357] [mipi_cap]: pdata.awb_data[0].b: 0
[mipi_cam-2] [WARN] [1778576090.042004774] [mipi_cap]: => ================== all awb otp data ==================
[mipi_cam-2] [WARN] [1778576090.055978343] [mipi_cap]: X5 start gdc rotation and cal.
[mipi_cam-2]
[mipi_cam-2] [WARN] [1778576090.698323437] [mipi_cam]: [init]->cap sc132gs-1280p init success.
[mipi_cam-2]
[stereonet_model_node-1] [WARN] [1778576090.793406249] [StereoNetNode]: => sub rectified [fx, fy, cx, cy, baseline(m), doffs] : [252.011457, 163.066237, 326.581749, 173.519216, 0.079981, 0.000000]
[stereonet_model_node-1] [WARN] [1778576090.796373338] [StereoNetNode]: => receive left camera info
[stereonet_model_node-1] [WARN] [1778576090.807726527] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 1778576090.752132352, latency: 55.57 ms
[stereonet_model_node-1] [WARN] [1778576090.809333072] [StereoNetNode]: => HFOV: 103.557°, VFOV: 94.369°
[stereonet_model_node-1] [WARN] [1778576090.901247252] [StereoNetNode]: => publish result, stamp: 1778576090.752132352, fps: 0.00, latency: 149.06 ms, cpu_usage: 0%, bpu_usage: 0%
[hobot_codec_republish-3] [WARN] [1778576090.952341561] [HobotVenc]: init_pic_w_: 640, init_pic_h_: 704, alined_pic_w_: 640, alined_pic_h_: 704, aline_w_: 16, aline_h_: 16
[hobot_codec_republish-3] [WARN] [1778576092.832582493] [hobot_codec_encoder_bc57c6d5]: Pub img fps [5.40]
[hobot_codec_republish-3] [WARN] [1778576092.889769188] [hobot_codec_encoder_bc57c6d5]: Sub imgRaw fps [5.54]
[stereonet_model_node-1] [WARN] [1778576095.818967439] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 1778576095.766077440, latency: 52.88 ms
[stereonet_model_node-1] [WARN] [1778576095.925341062] [StereoNetNode]: => publish result, stamp: 1778576095.732741120, fps: 14.71, latency: 192.57 ms, cpu_usage: 54129%, bpu_usage: 90%
[hobot_codec_republish-3] [WARN] [1778576097.862852028] [hobot_codec_encoder_bc57c6d5]: Pub img fps [14.71]
[hobot_codec_republish-3] [WARN] [1778576097.925975609] [hobot_codec_encoder_bc57c6d5]: Sub imgRaw fps [14.70]
[stereonet_model_node-1] [WARN] [1778576100.848368417] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 1778576100.799412736, latency: 48.94 ms
[stereonet_model_node-1] [WARN] [1778576100.975032952] [StereoNetNode]: => publish result, stamp: 1778576100.766074368, fps: 14.65, latency: 208.93 ms, cpu_usage: 54129%, bpu_usage: 99%
[hobot_codec_republish-3] [WARN] [1778576102.903533365] [hobot_codec_encoder_bc57c6d5]: Pub img fps [14.68]
[hobot_codec_republish-3] [WARN] [1778576102.968829115] [hobot_codec_encoder_bc57c6d5]: Sub imgRaw fps [14.68]
[stereonet_model_node-1] [WARN] [1778576105.872266999] [StereoNetNode]: => receive stereo image, format: nv12, stamp: 1778576105.832742656, latency: 39.51 ms

:tada: 问题已解决!

从日志看到关键改善

[StereoNetNode]: => sub rectified [fx, fy, cx, cy, baseline(m), doffs] : 
[252.011457, 163.066237, 326.581749, 173.519216, 0.079981, 0.000000]

[StereoNetNode]: => publish result, fps: 14.71, bpu_usage: 90%

标定参数已正确加载,StereoNet 节点正常运行!


:white_check_mark: 下一步:验证 rviz2 点云显示

现在点云应该能正常发布了,按以下步骤验证:

:one: 检查点云话题是否有数据

# 查看点云数据
ros2 topic echo /StereoNetNode/stereonet_pointcloud2 --once

# 查看点云话题频率
ros2 topic hz /StereoNetNode/stereonet_pointcloud2

如果有点云数据输出,说明发布正常。

:two: rviz2 配置检查

启动 rviz2:

rviz2

关键配置

设置项
Fixed Frame camera_link
PointCloud2 Topic /StereoNetNode/stereonet_pointcloud2
Queue Size 10
Style Flat Squares
Size (m) 0.01 - 0.05(根据点云密度调整)

:three: 如果 rviz2 仍不显示点云

检查坐标系

# 查看 tf 树
ros2 run tf2_tools view_frames.py
evince frames.pdf

# 或查看 tf 话题
ros2 topic echo /tf --once

添加 static_transform(如果需要)

# 如果 Fixed Frame 是 base_link,需要添加变换
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 base_link camera_link

:clipboard: 总结

问题 原因 解决方案
点云不显示 标定参数缺失(fx=0, baseline=nan) 使用官方 run_stereo.sh 脚本
StereoNet 节点崩溃 收不到 camera_info 脚本自动加载标定文件
AWB OTP 数据异常 相机 EEPROM 读取问题 不影响深度计算,可忽略

:link: 相关社区资源


请在 rviz2 中测试点云显示,如果还有问题,提供:

  1. ros2 topic hz /StereoNetNode/stereonet_pointcloud2 的输出
  2. rviz2 的 Fixed Frame 设置
  3. rviz2 中 PointCloud2 的配置截图

问题找到了,需要用root运行rviz2

:tada: 恭喜问题解决!

原来是权限问题!普通用户运行 rviz2 无法访问共享内存或某些系统资源,导致点云数据无法正常接收。


:clipboard: 问题总结

阶段 问题 根因 解决方案
1 StereoNet 节点崩溃 标定参数缺失 (fx=0, baseline=nan) 使用官方 run_stereo.sh 脚本
2 rviz2 不显示点云 普通用户权限不足 用 root 运行 rviz2

:wrench: 正确的运行流程

# 1. 启动双目相机和 StereoNet(普通用户即可)
source /opt/tros/humble/setup.bash
bash run_stereo.sh

# 2. 启动 rviz2(需要 root 权限)
sudo rviz2

:warning: 关于权限的建议

方案 A:临时方案(当前)

sudo rviz2

方案 B:配置用户权限(推荐)

如果希望避免每次都用 root,可以尝试:

# 1. 将用户加入 video 组
sudo usermod -aG video $USER

# 2. 配置共享内存权限
echo "KERNEL==\"shm\", MODE=\"0666\"" | sudo tee /etc/udev/rules.d/99-shm.rules

# 3. 重启或重新登录
sudo udevadm control --reload-rules

然后重新登录测试普通用户能否正常运行 rviz2。


:loudspeaker: 建议更新社区帖子

请在原帖 #35045 中更新解决方案,帮助其他遇到同样问题的开发者:

关键信息

  1. 使用官方 run_stereo.sh 脚本加载标定参数
  2. rviz2 需要用 sudo 运行(或配置共享内存权限)

:white_check_mark: 验证清单

  • ros2 topic hz /StereoNetNode/stereonet_pointcloud2 有频率输出(约 15Hz)
  • rviz2 中 Fixed Frame 设置为 camera_link
  • PointCloud2 显示正常,无报错

有其他问题随时在社区提问!:rocket: