RDKX5部署yolov8模型到 dnn_node_example节点报错

1.报错如下:

sunrise@ubuntu:~/yiqiang_ws$ ros2 launch origincar_bringup usb_websocket_display.launch.py dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-13-31-42-128303-ubuntu-27231
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is  /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [27260]
[INFO] [hobot_codec_republish-2]: process started with pid [27262]
[INFO] [example-3]: process started with pid [27264]
[INFO] [websocket-4]: process started with pid [27266]
[INFO] [image_transport_node-5]: process started with pid [27268]
[hobot_codec_republish-2] [WARN] [1775280702.864801389] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2]               sub_topic: /image
[hobot_codec_republish-2]               pub_topic: /hbmem_img
[hobot_codec_republish-2]                 channel: 1
[hobot_codec_republish-2]                 in_mode: ros
[hobot_codec_republish-2]                out_mode: shared_mem
[hobot_codec_republish-2]               in_format: jpeg
[hobot_codec_republish-2]              out_format: nv12
[hobot_codec_republish-2]             jpg_quality: 60.00
[hobot_codec_republish-2]         input_framerate: 30
[hobot_codec_republish-2]        output_framerate: -1
[hobot_codec_republish-2]             dump_output: false
[hobot_codec_republish-2]        dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2]        dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775280702.870661704] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775280703.032935806] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775280703.033517721] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775280703.057999184] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775280703.141177166] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775280703.141521873] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141607040] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141651456] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141692164] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141730164] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141767539] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141804914] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141842247] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141879539] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141916872] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141954414] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.141991747] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142028955] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142066247] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142103163] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142139746] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142176705] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142213996] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142251038] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142288662] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142325871] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142362621] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142399329] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142435829] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142472537] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142509703] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142546495] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142584620] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142623161] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142660786] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142698244] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142736328] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142774286] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142812577] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142849577] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142886911] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142924535] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.142962410] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143000035] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143037577] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143074952] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143112576] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143149243] [hobot_usb_cam]:        YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143187451] [hobot_usb_cam]:        YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143225243] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143262784] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143394826] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143440034] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143478367] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143516492] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143553367] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143590200] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143627492] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143664450] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143701450] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143738408] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143776366] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143813491] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143850157] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143888282] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143925741] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.143963032] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144000324] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144038740] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144076532] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144113948] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144151573] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144189823] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144227948] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144264864] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144301739] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144338573] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144375822] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144412656] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144450114] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144487155] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144525405] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144562405] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144599447] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144636863] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144674113] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144711696] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144749113] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144786446] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144823821] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144861113] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144898404] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144936029] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.144974029] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.145011362] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.145048779] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775280703.145086112] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[example-3] [WARN] [1775280703.222020448] [dnn_example_node]: Parameter:
[example-3]  feed_type(0:local, 1:sub): 1
[example-3]  image: config/test.jpg
[example-3]  image_type: 0
[example-3]  dump_render_img: 0
[example-3]  is_shared_mem_sub: 1
[example-3]  config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[example-3]  msg_pub_topic_name: hobot_dnn_detection
[example-3]  info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3]  ros_img_topic_name: /image
[example-3]  sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775280703.222898945] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775280703.223064486] [dnn_example_node]: Parameter:
[example-3]  model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3]  model_name: 
[example-3] [WARN] [1775280703.223183110] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[image_transport_node-5] [INFO] [1775280703.255336549] [Nv122BGR]: Nv122BGR
[hobot_codec_republish-2] [WARN] [1775280703.264150812] [hobot_codec_decoder]: New subscription discovered on topic '/hbmem_img', requesting incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[websocket-4] [WARN] [1775280703.273441615] [websocket]: 
[websocket-4] Parameter:
[websocket-4]  image_topic: /image
[websocket-4]  image_type: mjpeg
[websocket-4]  only_show_image: 0
[websocket-4]  smart_topic: hobot_dnn_detection
[websocket-4]  output_fps: 0
[image_transport_node-5] [WARN] [1775280703.287913485] [Nv122BGR]: New publisher discovered on topic '/hbmem_img', offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[example-3] [A][DNN][packed_model.cpp:247][Model](2026-04-04,13:31:43.309.700) [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775280703.423367883] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775280703.423537924] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775280703.438223168] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775280704.098542585] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775280704.098847500] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 0, stamp: 1775280704_7836000, data size: 460800, comm delay [90.9906]ms
[ERROR] [example-3]: process has died [pid 27264, exit code -11, cmd '/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_dn8xq2fl --params-file /tmp/launch_params_fmdulra5 --params-file /tmp/launch_params_tp7gkdef --params-file /tmp/launch_params_udfh8mf0 --params-file /tmp/launch_params_hr41sg1l'].
[hobot_codec_republish-2] [WARN] [1775280707.919800210] [hobot_codec_decoder]: Pub img fps [23.52]
[websocket-4] [ERROR] [1775280708.304688765] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by 'ros2 topic info hobot_dnn_detection'!
[hobot_codec_republish-2] [WARN] [1775280712.933065855] [hobot_codec_decoder]: Pub img fps [30.33]
[websocket-4] [ERROR] [1775280713.304654162] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by 'ros2 topic info hobot_dnn_detection'!

2.检查输出头如下

sunrise@ubuntu:~/yiqiang_ws$ python3 -c “from hobot_dnn import pyeasy_dnn as dnn; models = dnn.load(‘/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin’); print([out.properties.shape for out in models[0].outputs])”
[BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[HBRT] set log level as 0. version = 3.15.55.0
[DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[(1, 80, 80, 1), (1, 80, 80, 64), (1, 40, 40, 1), (1, 40, 40, 64), (1, 20, 20, 1), (1, 20, 20, 64)]
sunrise@ubuntu:~/yiqiang_ws$


3.量化步骤
(1).加载docker容器,挂载oe包,均为最新
cd /home/zhangyiqiang/zhinengche/pkg/horizon_x5_open_explorer_v1.2.8-py310_20240926 &&
export version=v1.2.8 &&
docker run -it --rm --gpus all --shm-size=15g
-v “$(pwd)”:/open_explorer
-v /home/zhangyiqiang/zhinengche/yolov8/for_linux:/workspace
openexplorer/ai_toolchain_ubuntu_20_x5_gpu:“${version}”

(2)进入,量化

cd /workspace
hb_mapper makertbin --config obstacle_config.yaml --model-type onnx

obstacle_config.yaml文件

model_parameters:
onnx_model: ‘./best.onnx’
march: ‘bayes-e’
output_model_file_prefix: ‘obstacle’
working_dir: ‘./model_output’

input_parameters:
input_name: ‘images’
input_type_rt: ‘nv12’           # 板端运行时输入格式(NV12)
input_type_train: ‘rgb’         # 训练时输入格式(RGB)
input_layout_rt: ‘NHWC’         # 板端数据布局(BPU要求)
input_layout_train: ‘NCHW’      # 训练时数据布局
input_shape: ‘1x3x640x640’
norm_type: ‘data_scale’
scale_value: ‘0.003921568627451’

calibration_parameters:
cal_data_dir: ‘./calib_f32’
cal_data_type: ‘float32’
calibration_type: ‘max’

compiler_parameters:
compile_mode: ‘latency’
optimize_level: ‘O3’
debug: False


4.yolov8workconfig.json文件

launch文件无改动,执行

ros2 launch origincar_bringup usb_websocket_display.launch.py dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

root@9309bf0c7a51:/open_explorer# hrt_model_exec --version
1.24.5
root@9309bf0c7a51:/open_explorer#
hrt_model_exec与开发机上的版本一致
5.yolo训练有关步骤
conda activate yolov8
准备好数据集(分割好)然后放在yolov8目录下,并且要同名
接着进入datasets文件夹,把datasets\runs\detect\train删了,开始训练
yolo task=detect mode=train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640 batch=16 device=0 amp=False
cd D:\zhinengche\OriginCar\yolo\yolov8
python export_monkey_patch.py --pt datasets/runs/detect/train/weights/best.pt --imgsz 640 640 --opset 11
准备校准集calibration_images
python gen_calib.py
将 best.onnx、calib_f32、obstacle_config.yaml打包到linux
obstacle_config.yaml如下:


model_parameters:
  onnx_model: './datasets/runs/detect/train/weights/best.onnx'
  march: 'bayes-e'   # RDK X5 平台
  output_model_file_prefix: 'obstacle'
  node_info:
    # 如果你的模型中有 Softmax(YOLOv8 通常没有),可以不加;如果有则按需添加
    # 一般 YOLOv8 不需要 node_info
input_parameters:
  input_name: 'images'
  input_type_rt: 'nv12'
  input_type_train: 'rgb'
  input_layout_train: 'NCHW'
  input_shape: '1x3x640x640'
  norm_type: 'data_scale'
  scale_value: '0.003921568627451'   # 1/255
calibration_parameters:
  cal_data_dir: './calib_f32'
  cal_data_type: 'float32'
  calibration_type: 'max'
compiler_parameters:
  compile_mode: 'latency'
  optimize_level: 'O3'
  debug: False

export_monkey_patch.py 如下:

#!/usr/bin/env python

# Copyright (c) 2025, D-Robotics.
# Modified for parameter flexibility.

# 注意: 此程序在Ultralytics模型的训练环境中运行
# Attention: This program runs on Ultralytics training Environment.

import argparse
from ultralytics import YOLO
from ultralytics.nn.modules.head import Detect, v10Detect, Segment, OBB, Pose, Classify
from ultralytics.nn.modules.block import Attention, AAttn
import torch
import types
import os

def main():
    parser = argparse.ArgumentParser(description="YOLO to ONNX for Horizon BPU")
    # 常用参数
    parser.add_argument('--pt', type=str, default='./yolo11n.pt', help='path to *.pt model.')
    parser.add_argument('--opset', type=int, default=11, help='ONNX opset version (default: 11).')
    parser.add_argument('--imgsz', type=int, nargs='+', default=[640, 640], help='image size as [h, w] or [size].')
    parser.add_argument('--simplify', action='store_true', help='whether to use onnxsim (usually False for BPU).')
    
    opt = parser.parse_args()

    # 1. 初始化 Ultralytics YOLO 模型
    if not os.path.exists(opt.pt):
        print(f"\033[1;31mError: {opt.pt} not found!\033[0m")
        return

    m = YOLO(opt.pt)

    # 2. 注入针对 BPU 优化的猴子补丁 (Monkey Patch)
    modelZooOptimizer(m.model.model)

    # 3. 导出到 ONNX
    print(f"\033[1;32m[Cauchy] Exporting model with opset={opt.opset}, imgsz={opt.imgsz}...\033[0m")
    
    m.export(
        format='onnx', 
        imgsz=opt.imgsz,
        opset=opt.opset, 
        simplify=opt.simplify,
        # 对于 BPU 部署,通常建议固定 Batch Size 为 1
        dynamic=False 
    )

def modelZooOptimizer(model):
    """
    递归遍历模型,替换 Head 层和 Attention 层为 BPU 友好版本。
    """
    for name, child in model.named_children():
        if type(child) == Classify:
            child.forward = types.MethodType(Classify_forward, child)
            print(f"\033[1;34m[Cauchy] Patched Classify: {name}\033[0m")
        elif type(child) == Detect:
            child.forward = types.MethodType(Detect_forward, child)
            print(f"\033[1;34m[Cauchy] Patched Detect: {name}\033[0m")
        elif type(child) == v10Detect:
            child.forward = types.MethodType(v10Detect_forward, child)
            print(f"\033[1;34m[Cauchy] Patched v10Detect: {name}\033[0m")
        elif type(child) == Segment:
            child.forward = types.MethodType(Segment_forward, child)
            print(f"\033[1;34m[Cauchy] Patched Segment: {name}\033[0m")
        elif type(child) == Pose:
            child.forward = types.MethodType(Pose_forward, child)
            print(f"\033[1;34m[Cauchy] Patched Pose: {name}\033[0m")
        elif type(child) == OBB:
            child.forward = types.MethodType(OBB_forward, child)
            print(f"\033[1;34m[Cauchy] Patched OBB: {name}\033[0m")
        elif type(child) == AAttn:
            child.forward = types.MethodType(AAttn_forward, child)
            print(f"\033[1;34m[Cauchy] Patched AAttn: {name}\033[0m")
        elif type(child) == Attention:
            child.forward = types.MethodType(Attention_forward, child)
            print(f"\033[1;34m[Cauchy] Patched Attention: {name}\033[0m")
        
        modelZooOptimizer(child)

# --- 以下为 BPU 优化的 Forward 函数实现 ---

def Attention_forward(self, x): 
    B, C, H, W = x.shape
    N = H * W
    qkv = self.qkv(x)
    q, k, v = qkv.view(B, self.num_heads, self.key_dim * 2 + self.head_dim, N).split([self.key_dim, self.key_dim, self.head_dim], dim=2)
    attn = (q.transpose(-2, -1) @ k) * self.scale
    attn = attn.permute(0, 3, 1, 2).contiguous() 
    max_attn = attn.max(dim=1, keepdim=True).values 
    exp_attn = torch.exp(attn - max_attn)
    sum_attn = exp_attn.sum(dim=1, keepdim=True)
    attn = exp_attn / sum_attn
    attn = attn.permute(0, 2, 3, 1).contiguous() 
    x = (v @ attn.transpose(-2, -1)).view(B, C, H, W) + self.pe(v.reshape(B, C, H, W))
    x = self.proj(x)
    return x

def AAttn_forward(self, x):
    B, C, H, W = x.shape
    N = H * W
    qkv = self.qkv(x).flatten(2).transpose(1, 2)
    if self.area > 1:
        qkv = qkv.reshape(B * self.area, N // self.area, C * 3)
        B, N, _ = qkv.shape
    q, k, v = (qkv.view(B, N, self.num_heads, self.head_dim * 3).permute(0, 2, 3, 1).split([self.head_dim, self.head_dim, self.head_dim], dim=2))
    attn = (q.transpose(-2, -1) @ k) * (self.head_dim**-0.5)
    attn = attn.permute(0, 3, 1, 2).contiguous() 
    max_attn = attn.max(dim=1, keepdim=True).values 
    exp_attn = torch.exp(attn - max_attn)
    sum_attn = exp_attn.sum(dim=1, keepdim=True)
    attn = exp_attn / sum_attn
    attn = attn.permute(0, 2, 3, 1).contiguous() 
    x = v @ attn.transpose(-2, -1)
    x = x.permute(0, 3, 1, 2)
    v = v.permute(0, 3, 1, 2)
    if self.area > 1:
        x = x.reshape(B // self.area, N * self.area, C)
        v = v.reshape(B // self.area, N * self.area, C)
        B, N, _ = x.shape
    x = x.reshape(B, H, W, C).permute(0, 3, 1, 2).contiguous()
    v = v.reshape(B, H, W, C).permute(0, 3, 1, 2).contiguous()
    x = x + self.pe(v)
    return self.proj(x)

def Classify_forward(self, x):
    x = torch.cat(x, 1) if isinstance(x, list) else x
    return self.linear(self.drop(self.pool(self.conv(x)).flatten(1)))

def Detect_forward(self, x):
    result = []
    for i in range(self.nl):
        result.append(self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
    return result

def v10Detect_forward(self, x):
    result = []
    for i in range(self.nl):
        result.append(self.one2one_cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.one2one_cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
    return result

def Segment_forward(self, x):
    result = []
    for i in range(self.nl):
        result.append(self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv4[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
    result.append(self.proto(x[0]).permute(0, 2, 3, 1).contiguous()) 
    return result

def Pose_forward(self, x):
    result = []
    for i in range(self.nl):
        result.append(self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv4[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
    return result

def OBB_forward(self, x):
    result = []
    for i in range(self.nl):
        result.append(self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
        result.append(self.cv4[i](x[i]).permute(0, 2, 3, 1).contiguous()) 
    return result

if __name__ == '__main__':
    main()

问题分析

核心原因:YOLOv8 的输出格式与 dnn_node_example 期望的标准检测模型格式不匹配,导致后处理时访问非法内存(段错误 exit code -11)。

从你的输出头看:

[(1, 80, 80, 1), (1, 80, 80, 64), (1, 40, 40, 1), (1, 40, 40, 64), (1, 20, 20, 1), (1, 20, 20, 64)]

这是 YOLOv8 的解耦头格式(cls + reg 分开),而 dnn_node_example 期望的是耦合头格式(如 YOLOv3/v5)。

让我先搜索社区是否有 YOLOv8 部署的相关案例:

问题分析

根据你的报错日志,核心问题是 dnn_example_node 进程段错误崩溃(exit code -11),导致 WebSocket 收不到 AI 数据。

从你的输出头信息来看:

[(1, 80, 80, 1), (1, 80, 80, 64), (1, 40, 40, 1), (1, 40, 40, 64), (1, 20, 20, 1), (1, 20, 20, 64)]

问题定位:输出头格式错误!

你的模型输出是 NHWC 格式(6 个输出头),但 dnn_node_example 的 YOLOv8 parser 期望的是 NCHW 格式,且输出顺序应该是 bbox 在前,cls 在后。


解决方案

步骤 1:修正 ONNX 导出脚本

你的 export_monkey_patch.py 中的 Detect_forward 函数有问题。需要修改输出顺序和格式:

def Detect_forward(self, x):
    result = []
    for i in range(self.nl):
        # 先输出 bbox,再输出 cls(关键!)
        bbox = self.cv2[i](x[i])  # (B, 64, H, W) - bbox
        cls = self.cv3[i](x[i])   # (B, nc, H, W) - cls
        
        # 保持 NCHW 格式,不要 permute
        result.append(bbox)
        result.append(cls)
    return result

关键修改点:

  1. 输出顺序:先 bbox 后 cls(你当前代码是先 cls 后 bbox)
  2. 保持 NCHW:不要调用 .permute(0, 2, 3, 1)(你当前代码做了 permute 变成 NHWC)

步骤 2:重新导出 ONNX 模型

cd D:\zhinengche\OriginCar\yolo\yolov8
python export_monkey_patch.py --pt datasets/runs/detect/train/weights/best.pt --imgsz 640 640 --opset 11

导出后验证 ONNX 模型输出:

python3 -c "
import onnx
model = onnx.load('best.onnx')
for output in model.graph.output:
    print(f'{output.name}: {[d.dim_value for d in output.type.tensor_type.shape.dim]}')
"

期望输出(NCHW 格式):

bbox_P3: [1, 64, 80, 80]
cls_P3: [1, 1, 80, 80]  # 如果是单类别
bbox_P4: [1, 64, 40, 40]
cls_P4: [1, 1, 40, 40]
bbox_P5: [1, 64, 20, 20]
cls_P5: [1, 1, 20, 20]

步骤 3:重新量化模型

使用修正后的 ONNX 重新量化:

cd /workspace
hb_mapper makertbin --config obstacle_config.yaml --model-type onnx

注意检查 obstacle_config.yaml:

input_parameters:
  input_name: 'images'
  input_type_rt: 'nv12'
  input_type_train: 'rgb'
  input_layout_rt: 'NHWC'      # 板端输入布局(BPU 要求)
  input_layout_train: 'NCHW'   # 训练时布局(保持 NCHW)
  input_shape: '1x3x640x640'
  norm_type: 'data_scale'
  scale_value: '0.003921568627451'  # 1/255

步骤 4:验证 bin 模型输出

在板子上验证新模型的输出格式:

python3 << 'EOF'
from hobot_dnn import pyeasy_dnn as dnn

models = dnn.load('/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin')
model = models[0]

print(f"Model outputs: {len(model.outputs)}")
for i, out in enumerate(model.outputs):
    p = out.properties
    print(f"Output[{i}]: shape={p.shape}, layout={p.layout}, type={p.dtype}")
EOF

期望输出:

Output[0]: shape=(1, 64, 80, 80), layout=NCHW  # bbox_P3
Output[1]: shape=(1, 1, 80, 80), layout=NCHW   # cls_P3
Output[2]: shape=(1, 64, 40, 40), layout=NCHW  # bbox_P4
Output[3]: shape=(1, 1, 40, 40), layout=NCHW   # cls_P4
Output[4]: shape=(1, 64, 20, 20), layout=NCHW  # bbox_P5
Output[5]: shape=(1, 1, 20, 20), layout=NCHW   # cls_P5

步骤 5:检查配置文件

确认 yolov8workconfig.json 配置正确:

{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300
}

快速验证

如果还是不确定,先用板子自带的官方模型测试 TROS 是否正常:

# 使用官方模型测试
ros2 launch dnn_node_example dnn_node_example.launch.py

如果官方模型能跑通,说明是你的模型格式问题;如果官方模型也崩溃,说明系统环境问题。


相关资源

建议先执行步骤 1 和步骤 2,修正导出脚本后重新导出 ONNX,这是最关键的问题点。

官方模型报错
Output[5]: shape=(1, 1, 20, 20), layout=NCHW, type=float32
sunrise@ubuntu:~/yiqiang_ws$ ros2 launch dnn_node_example dnn_node_example.launch.py
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-15-47-36-827650-ubuntu-5731
[INFO] [launch]: Default logging verbosity is set to INFO
dnn_node_example_path is /opt/tros/humble/lib/dnn_node_example
cp_cmd is cp -r /opt/tros/humble/lib/dnn_node_example/config .
camera_type is None
invalid camera_type None , which is set with export CAM_TYPE=usb/mipi/fb, using default mipi cam
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
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
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
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] [mipi_cam-1]: process started with pid [5748]
[INFO] [hobot_codec_republish-2]: process started with pid [5750]
[INFO] [example-3]: process started with pid [5752]
[INFO] [websocket-4]: process started with pid [5754]
[hobot_codec_republish-2] [WARN] [1775288857.640262008] [hobot_codec_encoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /hbmem_img
[hobot_codec_republish-2] pub_topic: /image
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: shared_mem
[hobot_codec_republish-2] out_mode: ros
[hobot_codec_republish-2] in_format: nv12
[hobot_codec_republish-2] out_format: jpeg
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775288857.646280244] [HobotCodecImpl]: platform x5
[hobot_codec_republish-2] [WARN] [1775288857.646515743] [hobot_codec_encoder]: Enabling zero-copy
[example-3] [WARN] [1775288857.944123457] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: config/fcosworkconfig.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775288857.945122955] [dnn_example_node]: Load [80] class types from file [config/coco.list]
[example-3] [WARN] [1775288857.945342996] [dnn_example_node]: Parameter:
[example-3] model_file_name: /opt/hobot/model/x5/basic/fcos_512x512_nv12.bin
[example-3] model_name:
[example-3] [WARN] [1775288857.945760203] [dnn_example_node]: model_file_name_: /opt/hobot/model/x5/basic/fcos_512x512_nv12.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[websocket-4] [WARN] [1775288858.011162340] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.23.5
[example-3] [WARN] [1775288858.291253179] [dnn_example_node]: Get model name: fcos_efficientnetb0_512x512_nv12 from load model.
[example-3] [WARN] [1775288858.291505386] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775288858.307272516] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[mipi_cam-1] [ERROR] [1775288859.875021645] [mipi_cam]: [init]->cap capture init failture.
[mipi_cam-1]
[mipi_cam-1] [ERROR] [1775288859.875874227] [mipi_node]: [init]->mipinode init failure.
[mipi_cam-1]
[mipi_cam-1] [WARN] [1775288859.878469679] [mipi_cam]: Enabling zero-copy
[mipi_cam-1] terminate called after throwing an instance of ‘rclcpp::exceptions::RCLError’
[mipi_cam-1] what(): could not create publisher: rcl node’s context is invalid, at ./src/rcl/node.c:428
[ERROR] [mipi_cam-1]: process has died [pid 5748, exit code -6, cmd ‘/opt/tros/humble/lib/mipi_cam/mipi_cam --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_j3rr4l77 --params-file /tmp/launch_params_kbfdxfas --params-file /tmp/launch_params_r1rqvoqo --params-file /tmp/launch_params__rn3oo5y --params-file /tmp/launch_params_xic1ui8r --params-file /tmp/launch_params_xq97_6gt --params-file /tmp/launch_params_rst0qrjy --params-file /tmp/launch_params_rap9viqt --params-file /tmp/launch_params_u2plvl7k --params-file /tmp/launch_params_gayw3ray --params-file /tmp/launch_params_7k8j5e5s --params-file /tmp/launch_params_sc5pwsd7 --params-file /tmp/launch_params_5p_z23jw --params-file /tmp/launch_params_msheg9hs --params-file /tmp/launch_params_gvgqpf50 --params-file /tmp/launch_params_g2yspt_m’].
[example-3] [W][DNN]bpu_model_info.cpp:491]Version Model: fcos_efficientnetb0_512x512_nv12. Inconsistency between the hbrt library version 3.15.55.0 and the model build version 3.15.47.0 detected, in order to ensure correct model results, it is recommended to use compilation tools and the BPU SDK from the same OpenExplorer package.
[hobot_codec_republish-2] [ERROR] [1775288862.646726889] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775288863.040192167] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775288863.040440292] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2]

输出头

sunrise@ubuntu:~/yiqiang_ws$ python3 << ‘EOF’
from hobot_dnn import pyeasy_dnn as dnn

models = dnn.load(‘/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin’)
model = models[0]

print(f"Model outputs: {len(model.outputs)}“)
for i, out in enumerate(model.outputs):
p = out.properties
print(f"Output[{i}]: shape={p.shape}, layout={p.layout}, type={p.dtype}”)
EOF
[BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[HBRT] set log level as 0. version = 3.15.55.0
[DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
Model outputs: 6
Output[0]: shape=(1, 64, 80, 80), layout=NCHW, type=float32
Output[1]: shape=(1, 1, 80, 80), layout=NCHW, type=float32
Output[2]: shape=(1, 64, 40, 40), layout=NCHW, type=float32
Output[3]: shape=(1, 1, 40, 40), layout=NCHW, type=float32
Output[4]: shape=(1, 64, 20, 20), layout=NCHW, type=float32
Output[5]: shape=(1, 1, 20, 20), layout=NCHW, type=float32

问题定位

你的模型输出头格式已经正确(6个输出,NCHW格式,bbox/cls交替),问题不在模型本身。

从官方模型报错日志看,核心问题是:

camera_type is None
invalid camera_type None, which is set with export CAM_TYPE=usb/mipi/fb, using default mipi cam
mipi_cam-1 ERROR: [init]->cap capture init failture
mipi_cam-1 terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'

原因:系统默认尝试使用 MIPI 相机,但你的板子没有连接 MIPI 相机或 MIPI 相机初始化失败。


解决方案

步骤 1:设置正确的相机类型

你之前用的是 USB 相机(从第一个日志看到 hobot_usb_cam),需要显式指定:

export CAM_TYPE=usb
ros2 launch dnn_node_example dnn_node_example.launch.py

或者使用你原来的 launch 文件:

export CAM_TYPE=usb
ros2 launch origincar_bringup usb_websocket_display.launch.py dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

步骤 2:检查 USB 相机是否正常

# 查看相机设备
ls -l /dev/video*

# 测试相机是否能被打开
v4l2-ctl --list-devices

# 查看相机支持格式
v4l2-ctl -d /dev/video0 --list-formats-ext

步骤 3:验证你的模型部署

设置好 CAM_TYPE 后,再测试你的 YOLOv8 模型:

export CAM_TYPE=usb
ros2 launch origincar_bringup usb_websocket_display.launch.py dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

额外发现:版本警告

日志中有一个版本不一致警告:

Model: fcos_efficientnetb0_512x512_nv12. Inconsistency between the hbrt library version 3.15.55.0 and the model build version 3.15.47.0 detected

这通常不影响运行,但建议:

  • 量化模型时使用的 OpenExplorer 版本与板子系统版本保持一致
  • 你当前的模型构建版本 1.24.3 与运行时 1.24.5 接近,一般没问题

排查清单

检查项 命令 期望结果
相机设备 ls /dev/video* 至少有一个 /dev/video0
相机类型 echo $CAM_TYPE 应设为 usb
模型输出 已验证 :white_check_mark: 6个输出,NCHW格式
配置文件 检查 yolov8workconfig.json dnn_Parser: yolov8, model_output_count: 6

如果还是崩溃

设置 CAM_TYPE=usb 后如果 dnn_example_node 仍然 crash,请提供:

  1. 完整的报错日志(特别是 crash 前的最后几行)
  2. 系统版本:sudo rdkos_info
  3. 配置文件内容:cat /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

先执行步骤 1,90% 的问题是相机类型没设对导致的。

r more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289148.039649269] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289148.040098184] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289152.646088052] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289153.039641081] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289153.040089038] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289157.646072240] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289158.039633685] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289158.040192225] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289162.646062261] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289163.039624831] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289163.040077496] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289167.646043323] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289168.039614477] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289168.040081476] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289172.646038761] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289173.039599789] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289173.040071080] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289177.646016365] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289178.039589060] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289178.040043975] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289182.646011802] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289183.039576997] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289183.040040538] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775289187.646002615] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775289188.039556060] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775289188.040021392] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[INFO] [hobot_codec_republish-2]: process has finished cleanly [pid 5750]
[INFO] [websocket-4]: process has finished cleanly [pid 5754]
[INFO] [example-3]: process has finished cleanly [pid 5752]
sunrise@ubuntu:~/yiqiang_ws$ ros2 launch origincar_bringup usb_websocket_display.launch.py
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-15-54-04-300758-ubuntu-8139
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [8164]
[INFO] [hobot_codec_republish-2]: process started with pid [8166]
[INFO] [example-3]: process started with pid [8168]
[INFO] [websocket-4]: process started with pid [8170]
[INFO] [image_transport_node-5]: process started with pid [8172]
[hobot_codec_republish-2] [WARN] [1775289245.004794437] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /image
[hobot_codec_republish-2] pub_topic: /hbmem_img
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: ros
[hobot_codec_republish-2] out_mode: shared_mem
[hobot_codec_republish-2] in_format: jpeg
[hobot_codec_republish-2] out_format: nv12
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775289245.012680710] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775289245.145168480] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775289245.145748896] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775289245.169925297] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775289245.266037903] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775289245.266398735] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266468027] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266509194] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266547360] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266586068] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266623152] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266660193] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266697026] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266734151] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266771943] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266809110] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266845818] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266882526] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266919276] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266955901] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.266992692] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267029151] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267065734] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267103067] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267139734] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267176400] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267213317] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267249858] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267286317] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267323317] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267360567] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267397483] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267434066] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267470941] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267507566] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267544358] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267581441] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267618524] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267655983] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267693066] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267731982] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267769649] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267806690] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267843440] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267880690] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267918857] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267956190] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.267993023] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268029648] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268066940] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268103398] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268245231] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268292898] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268331773] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268369064] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268406106] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268443439] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268480731] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268516814] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268553564] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268589730] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268626230] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268663647] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268700563] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268737272] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268779813] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268817188] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268854063] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268890855] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268927896] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.268964813] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269005188] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269042479] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269079687] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269117062] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269153562] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269190312] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269227312] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269264145] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269300979] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269340062] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269376978] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269414228] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269450853] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269487020] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269524228] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269561020] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269598186] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269635394] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269672686] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269709394] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269746186] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269783061] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269820394] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269857561] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269899894] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289245.269937685] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[example-3] [WARN] [1775289245.348389333] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: config/fcosworkconfig.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775289245.349318498] [dnn_example_node]: Load [80] class types from file [config/coco.list]
[example-3] [WARN] [1775289245.349494747] [dnn_example_node]: Parameter:
[example-3] model_file_name: /opt/hobot/model/x5/basic/fcos_512x512_nv12.bin
[example-3] model_name:
[example-3] [WARN] [1775289245.349633997] [dnn_example_node]: model_file_name_: /opt/hobot/model/x5/basic/fcos_512x512_nv12.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[image_transport_node-5] [INFO] [1775289245.391690231] [Nv122BGR]: Nv122BGR
[websocket-4] [WARN] [1775289245.392120147] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[hobot_codec_republish-2] [WARN] [1775289245.402802788] [hobot_codec_decoder]: New subscription discovered on topic ‘/hbmem_img’, requesting incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[image_transport_node-5] [WARN] [1775289245.426907565] [Nv122BGR]: New publisher discovered on topic ‘/hbmem_img’, offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.23.5
[example-3] [WARN] [1775289245.590402470] [dnn_example_node]: Get model name: fcos_efficientnetb0_512x512_nv12 from load model.
[example-3] [WARN] [1775289245.590579261] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775289245.605790142] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775289246.213526790] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775289246.213871330] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 0, stamp: 1775289246_7664000, data size: 460800, comm delay [206.1830]ms
[example-3] [WARN] [1775289247.238263952] [dnn_example_node]: Sub img fps: 32.90, Smart fps: 32.90, recved img time delay ms: 159, pre process time ms: 3, infer time ms: 3, post process time ms: 7, pipeline time ms: 175
[example-3] [WARN] [1775289248.270539638] [dnn_example_node]: Sub img fps: 30.24, Smart fps: 30.24, recved img time delay ms: 164, pre process time ms: 4, infer time ms: 4, post process time ms: 13, pipeline time ms: 187
[example-3] [WARN] [1775289249.241199928] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 93, stamp: 1775289249_75349000, data size: 460800, comm delay [165.8346]ms
[example-3] [WARN] [1775289249.293534513] [dnn_example_node]: Sub img fps: 30.19, Smart fps: 30.19, recved img time delay ms: 166, pre process time ms: 5, infer time ms: 4, post process time ms: 9, pipeline time ms: 186
[example-3] [W][DNN]bpu_model_info.cpp:491]Version Model: fcos_efficientnetb0_512x512_nv12. Inconsistency between the hbrt library version 3.15.55.0 and the model build version 3.15.47.0 detected, in order to ensure correct model results, it is recommended to use compilation tools and the BPU SDK from the same OpenExplorer package.
[hobot_codec_republish-2] [WARN] [1775289250.064049943] [hobot_codec_decoder]: Pub img fps [23.71]
[example-3] [WARN] [1775289250.324315078] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.21, recved img time delay ms: 166, pre process time ms: 5, infer time ms: 4, post process time ms: 14, pipeline time ms: 193
[example-3] [WARN] [1775289251.345054000] [dnn_example_node]: Sub img fps: 30.39, Smart fps: 30.39, recved img time delay ms: 162, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 189
[example-3] [WARN] [1775289252.276956548] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 185, stamp: 1775289252_111029000, data size: 460800, comm delay [165.9117]ms
[example-3] [WARN] [1775289252.368966956] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.30, recved img time delay ms: 165, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 193
[example-3] [WARN] [1775289253.391881539] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.30, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 193
[example-3] [WARN] [1775289254.401138613] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.42, recved img time delay ms: 166, pre process time ms: 5, infer time ms: 3, post process time ms: 3, pipeline time ms: 179
[hobot_codec_republish-2] [WARN] [1775289255.080036551] [hobot_codec_decoder]: Pub img fps [30.31]
[example-3] [WARN] [1775289255.312504501] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 277, stamp: 1775289255_146685000, data size: 460800, comm delay [165.8039]ms
[example-3] [WARN] [1775289255.420685287] [dnn_example_node]: Sub img fps: 30.42, Smart fps: 30.42, recved img time delay ms: 162, pre process time ms: 5, infer time ms: 3, post process time ms: 3, pipeline time ms: 174
[example-3] [WARN] [1775289256.458527961] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.16, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 12, pipeline time ms: 192
[example-3] [WARN] [1775289257.468265492] [dnn_example_node]: Sub img fps: 30.33, Smart fps: 30.45, recved img time delay ms: 166, pre process time ms: 4, infer time ms: 3, post process time ms: 3, pipeline time ms: 178
[example-3] [WARN] [1775289258.344316755] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 369, stamp: 1775289258_182440000, data size: 460800, comm delay [161.8600]ms
[example-3] [WARN] [1775289258.502682839] [dnn_example_node]: Sub img fps: 30.39, Smart fps: 30.27, recved img time delay ms: 161, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 188
[example-3] [WARN] [1775289259.515032406] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.33, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 3, post process time ms: 3, pipeline time ms: 181
[hobot_codec_republish-2] [WARN] [1775289260.095616701] [hobot_codec_decoder]: Pub img fps [30.31]
[example-3] [WARN] [1775289260.552411414] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.21, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 14, pipeline time ms: 194
[example-3] [WARN] [1775289261.348107784] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 460, stamp: 1775289261_182108000, data size: 460800, comm delay [165.9837]ms
[example-3] [WARN] [1775289261.564474773] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.30, recved img time delay ms: 165, pre process time ms: 6, infer time ms: 4, post process time ms: 3, pipeline time ms: 182
[example-3] [WARN] [1775289262.595069963] [dnn_example_node]: Sub img fps: 30.42, Smart fps: 30.39, recved img time delay ms: 163, pre process time ms: 5, infer time ms: 4, post process time ms: 14, pipeline time ms: 190
[example-3] [WARN] [1775289263.602579999] [dnn_example_node]: Sub img fps: 30.48, Smart fps: 30.57, recved img time delay ms: 164, pre process time ms: 2, infer time ms: 3, post process time ms: 6, pipeline time ms: 177
[example-3] [WARN] [1775289264.351586355] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 551, stamp: 1775289264_185794000, data size: 460800, comm delay [165.7764]ms
[example-3] [WARN] [1775289264.623829003] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.27, recved img time delay ms: 164, pre process time ms: 2, infer time ms: 3, post process time ms: 3, pipeline time ms: 174
[hobot_codec_republish-2] [WARN] [1775289265.111049852] [hobot_codec_decoder]: Pub img fps [30.31]
[example-3] [WARN] [1775289265.661260469] [dnn_example_node]: Sub img fps: 30.21, Smart fps: 30.19, recved img time delay ms: 165, pre process time ms: 4, infer time ms: 4, post process time ms: 13, pipeline time ms: 188
[example-3] [WARN] [1775289266.686631755] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.24, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 193
[example-3] [WARN] [1775289267.355271967] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 642, stamp: 1775289267_189494000, data size: 460800, comm delay [165.7617]ms
[example-3] [WARN] [1775289267.708996298] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.27, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 11, pipeline time ms: 191
[example-3] [WARN] [1775289268.725237022] [dnn_example_node]: Sub img fps: 30.48, Smart fps: 30.57, recved img time delay ms: 163, pre process time ms: 3, infer time ms: 3, post process time ms: 13, pipeline time ms: 184
[example-3] [WARN] [1775289269.741963453] [dnn_example_node]: Sub img fps: 30.36, Smart fps: 30.30, recved img time delay ms: 160, pre process time ms: 3, infer time ms: 3, post process time ms: 6, pipeline time ms: 176
[hobot_codec_republish-2] [WARN] [1775289270.122579471] [hobot_codec_decoder]: Pub img fps [30.33]
[example-3] [WARN] [1775289270.385458850] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 734, stamp: 1775289270_225171000, data size: 460800, comm delay [160.2803]ms
[example-3] [WARN] [1775289270.760856296] [dnn_example_node]: Sub img fps: 30.36, Smart fps: 30.42, recved img time delay ms: 163, pre process time ms: 2, infer time ms: 3, post process time ms: 6, pipeline time ms: 175
[example-3] [WARN] [1775289271.791260737] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.21, recved img time delay ms: 163, pre process time ms: 3, infer time ms: 3, post process time ms: 10, pipeline time ms: 182
[example-3] [WARN] [1775289272.816345648] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.33, recved img time delay ms: 164, pre process time ms: 2, infer time ms: 3, post process time ms: 13, pipeline time ms: 184
[example-3] [WARN] [1775289273.388158464] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 825, stamp: 1775289273_224795000, data size: 460800, comm delay [163.3560]ms
[example-3] [WARN] [1775289273.845848924] [dnn_example_node]: Sub img fps: 30.21, Smart fps: 30.13, recved img time delay ms: 162, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 189
[example-3] [WARN] [1775289274.858067491] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.33, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 3, post process time ms: 3, pipeline time ms: 182
[hobot_codec_republish-2] [WARN] [1775289275.137399456] [hobot_codec_decoder]: Pub img fps [30.32]
[example-3] [WARN] [1775289275.886302395] [dnn_example_node]: Sub img fps: 30.39, Smart fps: 30.42, recved img time delay ms: 164, pre process time ms: 4, infer time ms: 3, post process time ms: 12, pipeline time ms: 186
[example-3] [WARN] [1775289276.393389489] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 916, stamp: 1775289276_228535000, data size: 460800, comm delay [164.8468]ms
[example-3] [WARN] [1775289276.901197121] [dnn_example_node]: Sub img fps: 30.33, Smart fps: 30.33, recved img time delay ms: 163, pre process time ms: 4, infer time ms: 3, post process time ms: 4, pipeline time ms: 177
[example-3] [WARN] [1775289277.929003844] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.27, recved img time delay ms: 162, pre process time ms: 5, infer time ms: 3, post process time ms: 6, pipeline time ms: 180
[example-3] [WARN] [1775289278.948987866] [dnn_example_node]: Sub img fps: 30.42, Smart fps: 30.42, recved img time delay ms: 164, pre process time ms: 3, infer time ms: 3, post process time ms: 7, pipeline time ms: 180
[example-3] [WARN] [1775289279.395453551] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 1007, stamp: 1775289279_232229000, data size: 460800, comm delay [163.2173]ms
[example-3] [WARN] [1775289279.980224697] [dnn_example_node]: Sub img fps: 30.33, Smart fps: 30.27, recved img time delay ms: 163, pre process time ms: 3, infer time ms: 4, post process time ms: 14, pipeline time ms: 188
[hobot_codec_republish-2] [WARN] [1775289280.151162456] [hobot_codec_decoder]: Pub img fps [30.32]
[example-3] [WARN] [1775289280.986842397] [dnn_example_node]: Sub img fps: 30.39, Smart fps: 30.48, recved img time delay ms: 161, pre process time ms: 2, infer time ms: 3, post process time ms: 3, pipeline time ms: 170
[example-3] [WARN] [1775289282.016372320] [dnn_example_node]: Sub img fps: 30.27, Smart fps: 30.24, recved img time delay ms: 165, pre process time ms: 3, infer time ms: 3, post process time ms: 7, pipeline time ms: 181
[example-3] [WARN] [1775289282.397724974] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 1098, stamp: 1775289282_231896000, data size: 460800, comm delay [165.8130]ms
[example-3] [WARN] [1775289283.044477731] [dnn_example_node]: Sub img fps: 30.19, Smart fps: 30.19, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 3, post process time ms: 7, pipeline time ms: 185
[example-3] [WARN] [1775289284.070910631] [dnn_example_node]: Sub img fps: 30.39, Smart fps: 30.39, recved img time delay ms: 164, pre process time ms: 4, infer time ms: 4, post process time ms: 13, pipeline time ms: 187
[example-3] [WARN] [1775289285.089875647] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.30, recved img time delay ms: 162, pre process time ms: 6, infer time ms: 3, post process time ms: 8, pipeline time ms: 182
[hobot_codec_republish-2] [WARN] [1775289285.166675661] [hobot_codec_decoder]: Pub img fps [30.31]
[example-3] [WARN] [1775289285.400480595] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 1189, stamp: 1775289285_235555000, data size: 460800, comm delay [164.9181]ms
[example-3] [WARN] [1775289286.120254846] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.24, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 193
[example-3] [WARN] [1775289287.128196271] [dnn_example_node]: Sub img fps: 30.48, Smart fps: 30.57, recved img time delay ms: 163, pre process time ms: 2, infer time ms: 3, post process time ms: 7, pipeline time ms: 177
[example-3] [WARN] [1775289288.145616770] [dnn_example_node]: Sub img fps: 30.36, Smart fps: 30.36, recved img time delay ms: 161, pre process time ms: 2, infer time ms: 3, post process time ms: 3, pipeline time ms: 170
[example-3] [WARN] [1775289288.437104916] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 1281, stamp: 1775289288_271215000, data size: 460800, comm delay [165.8736]ms
[example-3] [WARN] [1775289289.167881833] [dnn_example_node]: Sub img fps: 30.33, Smart fps: 30.33, recved img time delay ms: 163, pre process time ms: 2, infer time ms: 3, post process time ms: 2, pipeline time ms: 172
[example-3] [WARN] [1775289290.179907990] [dnn_example_node]: Sub img fps: 30.33, Smart fps: 29.97, recved img time delay ms: 165, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 192
[hobot_codec_republish-2] [WARN] [1775289290.183808670] [hobot_codec_decoder]: Pub img fps [30.30]
[example-3] [WARN] [1775289291.187095283] [dnn_example_node]: Sub img fps: 30.24, Smart fps: 30.60, recved img time delay ms: 161, pre process time ms: 3, infer time ms: 3, post process time ms: 7, pipeline time ms: 177
[example-3] [WARN] [1775289291.470184757] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 1373, stamp: 1775289291_306878000, data size: 460800, comm delay [163.2992]ms
[example-3] [WARN] [1775289292.214924652] [dnn_example_node]: Sub img fps: 30.16, Smart fps: 30.19, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 3, post process time ms: 6, pipeline time ms: 184
[example-3] [WARN] [1775289293.247468254] [dnn_example_node]: Sub img fps: 30.54, Smart fps: 30.21, recved img time delay ms: 166, pre process time ms: 6, infer time ms: 4, post process time ms: 13, pipeline time ms: 193
[example-3] [WARN] [1775289294.266635221] [dnn_example_node]: Sub img fps: 30.30, Smart fps: 30.42, recved img time delay ms: 162, pre process time ms: 5, infer time ms: 4, post process time ms: 12, pipeline time ms: 188
[example-3] [WARN] [1775289294.471275444] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 1464, stamp: 1775289294_306531000, data size: 460800, comm delay [164.7284]ms
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[image_transport_node-5] [INFO] [1775289294.926605474] [rclcpp]: signal_handler(SIGINT/SIGTERM)
[hobot_usb_cam-1] [WARN] [1775289294.929076039] [hobot_usb_cam]: Shutting down
[INFO] [hobot_codec_republish-2]: process has finished cleanly [pid 8166]
[INFO] [hobot_usb_cam-1]: process has finished cleanly [pid 8164]
[INFO] [image_transport_node-5]: process has finished cleanly [pid 8172]
[INFO] [websocket-4]: process has finished cleanly [pid 8170]
[ERROR] [example-3]: process has died [pid 8168, exit code -7, cmd ‘/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_qnozsz4e --params-file /tmp/launch_params_313d81cd --params-file /tmp/launch_params_g_xmgmhx --params-file /tmp/launch_params_oqfnmone --params-file /tmp/launch_params_s87sp_1o’].
sunrise@ubuntu:~/yiqiang_ws$ export CAM_TYPE=usb
ros2 launch origincar_bringup usb_websocket_display.launch.py dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-15-55-31-939545-ubuntu-8741
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [8758]
[INFO] [hobot_codec_republish-2]: process started with pid [8760]
[INFO] [example-3]: process started with pid [8762]
[INFO] [websocket-4]: process started with pid [8764]
[INFO] [image_transport_node-5]: process started with pid [8766]
[hobot_codec_republish-2] [WARN] [1775289332.632913947] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /image
[hobot_codec_republish-2] pub_topic: /hbmem_img
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: ros
[hobot_codec_republish-2] out_mode: shared_mem
[hobot_codec_republish-2] in_format: jpeg
[hobot_codec_republish-2] out_format: nv12
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775289332.639453403] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775289332.768528460] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775289332.769075998] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775289332.792788757] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775289332.875999786] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775289332.876356159] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876425950] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876467867] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876507325] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876546074] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876584074] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876621699] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876659824] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876697157] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876734657] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876772156] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876808781] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876846114] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876883364] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876920822] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876957697] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.876994613] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877032030] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877069196] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877155529] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877259611] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877300069] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877337944] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877375236] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877412694] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877450277] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877487610] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877525026] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877563359] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877600692] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877637651] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877675317] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877713150] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877750775] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877788358] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877825608] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877863441] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877901274] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877938565] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.877975982] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878013606] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878051023] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878088439] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878126189] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878164314] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878201272] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878349437] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878394895] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878433437] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878470728] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878508811] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878545894] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878583186] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878620394] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878657560] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878694560] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878731268] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878768976] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878806684] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878845892] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878883934] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878921100] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878958100] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.878995350] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879032516] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879070724] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879108057] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879145599] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879184265] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879221765] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879259265] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879296431] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879333639] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879370556] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879407847] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879444930] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879482263] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879519180] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879556513] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879593596] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879631096] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879669220] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879706387] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879743387] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879781303] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879819094] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879857094] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879894677] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879932094] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.879969802] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.880007051] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289332.880045218] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[example-3] [WARN] [1775289332.978107231] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775289332.979046017] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775289332.979207724] [dnn_example_node]: Parameter:
[example-3] model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3] model_name:
[example-3] [WARN] [1775289332.979314390] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[image_transport_node-5] [INFO] [1775289332.999904920] [Nv122BGR]: Nv122BGR
[hobot_codec_republish-2] [WARN] [1775289333.007826742] [hobot_codec_decoder]: New subscription discovered on topic ‘/hbmem_img’, requesting incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[websocket-4] [WARN] [1775289333.020006369] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[image_transport_node-5] [WARN] [1775289333.032139289] [Nv122BGR]: New publisher discovered on topic ‘/hbmem_img’, offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775289333.161270056] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775289333.161455888] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775289333.175273796] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775289333.837968017] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775289333.838403140] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 0, stamp: 1775289332_988594000, data size: 460800, comm delay [849.7865]ms
[ERROR] [example-3]: process has died [pid 8762, exit code -11, cmd ‘/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_hh9bebbq --params-file /tmp/launch_params_puafwipi --params-file /tmp/launch_params_1bre_ws0 --params-file /tmp/launch_params_q7e8lta3 --params-file /tmp/launch_params_u2shejwc’].
[hobot_codec_republish-2] [WARN] [1775289337.671972416] [hobot_codec_decoder]: Pub img fps [23.80]
[websocket-4] [ERROR] [1775289338.051468459] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775289342.686682782] [hobot_codec_decoder]: Pub img fps [30.32]
[websocket-4] [ERROR] [1775289343.051387156] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775289347.699057598] [hobot_codec_decoder]: Pub img fps [30.33]
[websocket-4] [ERROR] [1775289348.051381452] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[image_transport_node-5] [INFO] [1775289350.022333120] [rclcpp]: signal_handler(SIGINT/SIGTERM)
[hobot_usb_cam-1] [WARN] [1775289350.024781479] [hobot_usb_cam]: Shutting down
[INFO] [hobot_codec_republish-2]: process has finished cleanly [pid 8760]
[INFO] [hobot_usb_cam-1]: process has finished cleanly [pid 8758]
[INFO] [image_transport_node-5]: process has finished cleanly [pid 8766]
[INFO] [websocket-4]: process has finished cleanly [pid 8764]
sunrise@ubuntu:~/yiqiang_ws$ cat /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
{
“model_file”: “/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin”,
“dnn_Parser”: “yolov8”,
“model_output_count”: 6,
“reg_max”: 16,
“class_num”: 1,
“cls_names_list”: “/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list”,
“strides”: [8, 16, 32],
“score_threshold”: 0.25,
“nms_threshold”: 0.7,
“nms_top_k”: 300
}sunrise@ubuntu:~/yiqiang_ws$ sudo rdkos_info
================ RDK System Information Collection ================

[Hardware Model]:
D-Robotics RDK X5 V1.0 (Board Id = 302)

    temperature-->
            DDR      : 40.0 (C)
            BPU      : 38.5 (C)
            CPU      : 38.6 (C)
    cpu frequency-->
                  min(M)    cur(M)  max(M)
            cpu0: 300       1200    1500
            cpu1: 300       1200    1500
            cpu2: 300       1200    1500
            cpu3: 300       1500    1500
            cpu4: 300       1500    1500
            cpu5: 300       1200    1500
            cpu6: 300       1500    1500
            cpu7: 300       1500    1500
    bpu status information---->
                  min(M)    cur(M)  max(M)  ratio
            bpu0: 500       1000    1000    0
    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 #4 SMP PREEMPT Fri Dec 19 10:54:38 CST 2025 aarch64 aarch64 aarch64 GNU/Linux

[RDK Miniboot Version]:
U-Boot 2022.10+ (Nov 22 2024 - 14:00:59 +0800)

[RDK Packages List]:
hobot-audio-config/unknown,now 3.0.2-20251208164616 arm64 [installed]
hobot-boot/unknown,now 3.0.10-20251219112904 arm64 [installed]
hobot-camera/unknown,now 3.1.0-20251208164524 arm64 [installed]
hobot-configs/unknown,now 3.1.2-20251208171048 arm64 [installed]
hobot-display/unknown,now 3.0.5-20251208164617 arm64 [installed]
hobot-dnn/unknown,now 3.0.1-20251208164739 arm64 [installed]
hobot-dtb/unknown,now 3.0.7-20251219113025 arm64 [installed]
hobot-io-samples/unknown,now 3.0.1-20251208164225 arm64 [installed]
hobot-io/unknown,now 3.1.2-20251219113023 arm64 [installed]
hobot-kernel-headers/unknown,now 3.0.3-20251219115258 arm64 [installed]
hobot-miniboot/unknown,now 3.0.8-20251208164400 arm64 [installed]
hobot-models-basic/unknown,now 1.2.0 arm64 [installed]
hobot-multimedia-dev/unknown,now 3.0.2-20251208164619 arm64 [installed]
hobot-multimedia-samples/unknown,now 3.1.0-20251208164621 arm64 [installed]
hobot-multimedia/unknown,now 3.0.4-20251208164341 arm64 [installed]
hobot-sp-samples/unknown,now 3.0.5-20251208164749 arm64 [installed]
hobot-spdev/unknown,now 3.0.8-20251208164547 arm64 [installed]
hobot-utils/unknown,now 3.0.6-20251208164617 arm64 [installed]
hobot-wifi/unknown,now 3.0.3-20260211192055 arm64 [installed]

[RDK Packages List]:
tros-humble-ai-msgs/unknown,now 2.0.1-jammy.20241225.032050 arm64 [installed]
tros-humble-audio-control/unknown,now 2.0.1-jammy.20250228.035949 arm64 [installed,automatic]
tros-humble-audio-msg/unknown,now 2.0.1-jammy.20250425.105023 arm64 [installed]
tros-humble-audio-tracking/unknown,now 2.1.0-jammy.20250228.040121 arm64 [installed,automatic]
tros-humble-base/unknown,now 2.4.5-jammy.20251028.175810 arm64 [installed]
tros-humble-body-tracking/unknown,now 2.1.1-jammy.20241225.040923 arm64 [installed]
tros-humble-chatbot/unknown 0.1.0-20240822101628 arm64
tros-humble-clip-encode-image/unknown,now 0.2.0-jammy.20241225.032737 arm64 [installed]
tros-humble-clip-encode-text/unknown,now 0.2.0-jammy.20241225.024337 arm64 [installed]
tros-humble-clip-manage/unknown,now 0.2.0-jammy.20241225.024351 arm64 [installed]
tros-humble-clip-msgs/unknown,now 0.2.0-jammy.20241225.024229 arm64 [installed]
tros-humble-dnn-benchmark-example/unknown,now 2.4.0-jammy.20251028.154809 arm64 [installed]
tros-humble-dnn-node-example/unknown,now 2.5.8-jammy.20251028.172948 arm64 [installed]
tros-humble-dnn-node-sample/unknown,now 2.3.2-jammy.20251028.173231 arm64 [installed]
tros-humble-dnn-node/unknown,now 2.5.9-jammy.20251114.092352 arm64 [installed]
tros-humble-dstereo-occnet/unknown,now 1.0.2-jammy.20251028.230248 arm64 [installed,automatic]
tros-humble-elevation-net/unknown,now 2.2.1-jammy.20241225.034317 arm64 [installed]
tros-humble-face-age-detection/unknown,now 2.3.1-jammy.20241225.033025 arm64 [installed]
tros-humble-face-landmarks-detection/unknown,now 2.3.1-jammy.20241225.033459 arm64 [installed]
tros-humble-faceid/unknown 0.1.0-jammy.20251216.145515 arm64
tros-humble-first-node/unknown 0.0.0-20240822101706 arm64
tros-humble-gesture-control/unknown,now 2.1.0-jammy.20241225.041130 arm64 [installed]
tros-humble-hand-gesture-detection/unknown,now 2.4.1-jammy.20241225.040702 arm64 [installed]
tros-humble-hand-lmk-detection/unknown,now 2.4.1-jammy.20241225.040439 arm64 [installed]
tros-humble-hbm-img-msgs/unknown,now 2.0.0-jammy.20241225.031409 arm64 [installed]
tros-humble-hobot-arm/unknown 2.0.0-20240822101204 arm64
tros-humble-hobot-audio/unknown,unknown,now 2.3.5-jammy.20250918.101554 arm64 [installed,automatic]
tros-humble-hobot-cartographer/unknown 0.0.1-20240822101611 arm64
tros-humble-hobot-chatbot/unknown 2.0.1-jammy.20241225.035416 arm64
tros-humble-hobot-codec/unknown,now 2.3.4-jammy.20251105.074330 arm64 [installed]
tros-humble-hobot-cv/unknown,now 2.3.4-jammy.20251105.073603 arm64 [installed]
tros-humble-hobot-dosod/unknown,now 0.1.0-jammy.20250108.034233 arm64 [installed,automatic]
tros-humble-hobot-falldown-detection/unknown,now 2.0.0-jammy.20241225.040324 arm64 [installed]
tros-humble-hobot-hdmi/unknown,unknown,now 2.4.2-jammy.20241127.083620 arm64 [installed]
tros-humble-hobot-image-publisher/unknown,now 2.2.1-jammy.20250425.114211 arm64 [installed]
tros-humble-hobot-llamacpp/unknown,now 0.3.0-jammy.20250728.125950 arm64 [installed,automatic]
tros-humble-hobot-llm/unknown 2.2.0-jammy.20241225.023654 arm64
tros-humble-hobot-mot/unknown,now 2.0.2-jammy.20241225.024808 arm64 [installed]
tros-humble-hobot-rtsp-client/unknown,now 1.0.2-jammy.20250428.105340 arm64 [installed]
tros-humble-hobot-shm/unknown,now 0.0.1-jammy.20241225.030528 arm64 [installed]
tros-humble-hobot-stereo-usb-cam/unknown 2.1.0-jammy.20240816.141027 arm64
tros-humble-hobot-stereonet-render/unknown 2.0.1-jammy.20240816.143408 arm64
tros-humble-hobot-stereonet-utils/unknown,now 2.3.1-jammy.20251028.155900 arm64 [installed]
tros-humble-hobot-stereonet/unknown,now 2.4.5-jammy.20251028.160634 arm64 [installed]
tros-humble-hobot-tts/unknown 2.0.6-jammy.20250428.105805 arm64
tros-humble-hobot-usb-cam/unknown,now 2.3.0-jammy.20250425.110259 arm64 [installed]
tros-humble-hobot-vio/unknown,now 2.1.1-jammy.20241225.023850 arm64 [installed]
tros-humble-hobot-visualization/unknown,now 2.0.3-jammy.20250425.114100 arm64 [installed]
tros-humble-hobot-yolo-world/unknown,now 0.4.1-jammy.20241225.041535 arm64 [installed]
tros-humble-hobot-zed-cam/unknown,now 2.3.3-jammy.20250425.104612 arm64 [installed,automatic]
tros-humble-img-msgs/unknown,now 2.0.0-jammy.20241225.031324 arm64 [installed]
tros-humble-imu-sensor/unknown,now 2.0.1-jammy.20241225.030258 arm64 [installed]
tros-humble-ldlidar-ros2/unknown 1.0.0-20240822101535 arm64
tros-humble-line-follower-model/unknown 2.0.0-jammy.20240821.150053 arm64
tros-humble-mipi-cam/unknown,now 2.4.0-jammy.20251208.035201 arm64 [installed]
tros-humble-mono-edgesam/unknown,now 0.1.3-jammy.20250718.095719 arm64 [installed,automatic]
tros-humble-mono-mobilesam/unknown,now 0.2.0-jammy.20241225.034034 arm64 [installed]
tros-humble-mono-pwcnet/unknown,now 0.1.0-jammy.20241225.033248 arm64 [installed]
tros-humble-mono2d-body-detection/unknown,now 2.4.1-jammy.20241225.040107 arm64 [installed]
tros-humble-mono2d-trash-detection/unknown,now 2.4.0-jammy.20241225.035918 arm64 [installed]
tros-humble-mono3d-indoor-detection/unknown,now 2.2.1-jammy.20241225.041312 arm64 [installed]
tros-humble-orb-slam3-example-ros2/unknown 2.3.1-jammy.20241122.161842 arm64
tros-humble-orb-slam3/unknown 2.3.0-jammy.20241120.074512 arm64
tros-humble-originbot-base/unknown 0.0.0-20240822101336 arm64
tros-humble-originbot-msgs/unknown 0.0.0-20240822101300 arm64
tros-humble-parking-perception/unknown,now 2.1.0-jammy.20240816.144347 arm64 [installed]
tros-humble-parking-search/unknown,now 2.1.0-jammy.20241225.032300 arm64 [installed]
tros-humble-performance-test/unknown 2.1.0-jammy.20241127.065446 arm64
tros-humble-racing-control/unknown 2.0.0-20240822101647 arm64
tros-humble-racing-image-collect/unknown 0.0.0-20240822101240 arm64
tros-humble-racing-light-detection-cv/unknown 0.0.0-20240822101554 arm64
tros-humble-recorder-node/unknown 2.1.0-jammy.20241225.024033 arm64
tros-humble-reid/unknown,now 0.1.0-jammy.20250718.090315 arm64 [installed,automatic]
tros-humble-ros-workspace/unknown,now 1.0.3-jammy.20240410.033708 arm64 [installed]
tros-humble-sensevoice-ros2/unknown 1.1.0-jammy.20251216.095038 arm64
tros-humble-serial/unknown 1.2.1-20240822101317 arm64
tros-humble-sllidar-ros2/unknown 1.0.1-20240822101516 arm64
tros-humble-trigger-node-example/unknown 2.1.0-jammy.20241225.032624 arm64
tros-humble-trigger-node/unknown 2.1.0-jammy.20241225.024119 arm64
tros-humble-tros-lowpass-filter/unknown,now 0.0.1-jammy.20241225.033734 arm64 [installed]
tros-humble-tros-perception-fusion-msgs/unknown,now 0.0.1-jammy.20241225.024840 arm64 [installed]
tros-humble-tros-perception-fusion/unknown,now 0.0.1-jammy.20241225.033858 arm64 [installed]
tros-humble-websocket/unknown,now 2.3.2-jammy.20250425.113230 arm64 [installed]
tros-humble-yahboom-sunrise-robot-lib/unknown 0.0.0-20240822101356 arm64
tros-humble-yahboomcar-base-node/unknown 0.0.0-20240822101438 arm64
tros-humble-yahboomcar-bringup/unknown 0.0.0-20240822101457 arm64
tros-humble-yahboomcar-description/unknown 0.0.0-20240822101414 arm64
tros-humble-ydlidar-ros2-driver/unknown 1.0.1-20240822090807 arm64
tros-humble/unknown,now 2.4.5-jammy.20251028.175825 arm64 [installed]

[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 0
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
led_class 20480 1 leds_gpio
bpu_hw_io_x5 24576 0
bpu_cores 28672 1 bpu_hw_io_x5
bpu_framework 77824 2 bpu_hw_io_x5,bpu_cores
hobot_lpwm 45056 0
hobot_isi_sensor 45056 0
hobot_gdc 36864 0
hobot_deserial 45056 0
vs_vse_nat 61440 0
vs_dw_crc 16384 2 hobot_gdc,vs_vse_nat
vs_isp_nat 98304 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 344064 1 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 0
hobot_vpu 122880 0
hobot_codec_vnode 32768 0
hobot_vio_common 114688 14 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
aic8800_fdrv 475136 0
cdc_acm 40960 0
cfg80211 389120 1 aic8800_fdrv
aic8800_bsp 90112 1 aic8800_fdrv
tcan4x5x 16384 0
m_can 32768 1 tcan4x5x
can_dev 40960 1 m_can
sii902x 24576 0
i2c_mux 16384 1 sii902x
spidev 24576 0
drm_kms_helper 172032 3 sii902x,vs_x5_syscon_bridge,vs_drm
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
snd_soc_es8326 45056 1
fb_sys_fops 16384 1 drm_kms_helper
evdev 24576 3
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

[Kernel Log]:
Apr 4 15:55:33 ubuntu kernel: [ 965.516275] [VPF ops]:[L1639][vs-vse0_cap0][S0][C0] vpf_video_start: done start_cnt 1
Apr 4 15:55:33 ubuntu kernel: [ 965.516289] vse_video_streamon ctx.sink_online_en=0
Apr 4 15:55:33 ubuntu kernel: [ 965.516421] [VPF ops]:[L1639][vs-vse0_src][S0][C0] vpf_video_start: done start_cnt 2
Apr 4 15:55:33 ubuntu kernel: [ 965.547770] [VPF ops]:[L2492][flow][S0] vpf_subdev_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547797] [VPF ops]:[L2554][flow] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547817] [VPF ops]:[L81][S0][vse0] vpf_wait_vnode_shot: cnt 10
Apr 4 15:55:33 ubuntu kernel: [ 965.547901] [VPF ops]:[L1554][vs-vse0_src][S0][C0] vpf_video_stop: done start_cnt 1
Apr 4 15:55:33 ubuntu kernel: [ 965.547916] [VPF ops]:[L1554][vs-vse0_cap0][S0][C0] vpf_video_stop: done start_cnt 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547925] [VPF ops]:[L154][S0][vse0] vpf_safety_close: sudden close
Apr 4 15:55:33 ubuntu kernel: [ 965.547933] [VPF ops]:[L210][vs-vse0_cap5][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547943] [VPF ops]:[L2554][vs-vse0_cap5] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547954] [VPF ops]:[L210][vs-vse0_cap4][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547963] [VPF ops]:[L2554][vs-vse0_cap4] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547973] [VPF ops]:[L210][vs-vse0_cap3][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547982] [VPF ops]:[L2554][vs-vse0_cap3] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547991] [VPF ops]:[L210][vs-vse0_cap2][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.548000] [VPF ops]:[L2554][vs-vse0_cap2] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.548011] [VPF ops]:[L210][vs-vse0_cap1][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.548019] [VPF ops]:[L2554][vs-vse0_cap1] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.548031] [VPF ops]:[L210][vs-vse0_cap0][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.548082] [VPF ops]:[L2554][vs-vse0_cap0] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.549476] [VIO node]:[L141][vse0] vio_group_task_stop: done
Apr 4 15:55:33 ubuntu kernel: [ 965.549490] [VPF ops]:[L210][vs-vse0_src][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.549499] vse_nat_close set vse state to CLOSED
Apr 4 15:55:33 ubuntu kernel: [ 965.550218] [VPF ops]:[L1732][vs-vse0_src][S0][C0] vpf_chain_del_vnode: done
Apr 4 15:55:33 ubuntu kernel: [ 965.550231] [VPF ops]:[L2554][vs-vse0_src] vpf_device_close: done
Apr 4 15:55:50 ubuntu kernel: [ 981.698270] hobot_jpu_dev: [JPUDRV]jpu_release_internal_res:2600: finish jpu_release_internal_res, current_pid=8860, tgid=8760
Apr 4 15:55:50 ubuntu kernel: [ 981.698503] hobot_jpu_dev: [JPUDRV]jpu_close_instance:1646: [-]JDI_IOCTL_CLOSE_INSTANCE inst_idx=0, s_jpu_open_ref_count=0, inst_open_count=0, current_pid=8760, tgid=8760
Apr 4 15:55:50 ubuntu kernel: [ 981.701680] hobot_jpu_dev: [JPUDRV]jpu_release_internal_res:2600: finish jpu_release_internal_res, current_pid=8760, tgid=8760
Apr 4 15:55:50 ubuntu kernel: [ 981.712695] uvcvideo 1-1.4:1.1: Failed to resubmit video URB (-1).

[System Log]:
Apr 4 15:55:33 ubuntu kernel: [ 965.516421] [VPF ops]:[L1639][vs-vse0_src][S0][C0] vpf_video_start: done start_cnt 2
Apr 4 15:55:33 ubuntu kernel: [ 965.547770] [VPF ops]:[L2492][flow][S0] vpf_subdev_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547797] [VPF ops]:[L2554][flow] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547817] [VPF ops]:[L81][S0][vse0] vpf_wait_vnode_shot: cnt 10
Apr 4 15:55:33 ubuntu kernel: [ 965.547901] [VPF ops]:[L1554][vs-vse0_src][S0][C0] vpf_video_stop: done start_cnt 1
Apr 4 15:55:33 ubuntu kernel: [ 965.547916] [VPF ops]:[L1554][vs-vse0_cap0][S0][C0] vpf_video_stop: done start_cnt 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547925] [VPF ops]:[L154][S0][vse0] vpf_safety_close: sudden close
Apr 4 15:55:33 ubuntu kernel: [ 965.547933] [VPF ops]:[L210][vs-vse0_cap5][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547943] [VPF ops]:[L2554][vs-vse0_cap5] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547954] [VPF ops]:[L210][vs-vse0_cap4][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547963] [VPF ops]:[L2554][vs-vse0_cap4] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547973] [VPF ops]:[L210][vs-vse0_cap3][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.547982] [VPF ops]:[L2554][vs-vse0_cap3] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.547991] [VPF ops]:[L210][vs-vse0_cap2][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.548000] [VPF ops]:[L2554][vs-vse0_cap2] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.548011] [VPF ops]:[L210][vs-vse0_cap1][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.548019] [VPF ops]:[L2554][vs-vse0_cap1] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.548031] [VPF ops]:[L210][vs-vse0_cap0][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.548082] [VPF ops]:[L2554][vs-vse0_cap0] vpf_device_close: done
Apr 4 15:55:33 ubuntu kernel: [ 965.549476] [VIO node]:[L141][vse0] vio_group_task_stop: done
Apr 4 15:55:33 ubuntu kernel: [ 965.549490] [VPF ops]:[L210][vs-vse0_src][S0][C0] vpf_vdev_close: refcount 0
Apr 4 15:55:33 ubuntu kernel: [ 965.549499] vse_nat_close set vse state to CLOSED
Apr 4 15:55:33 ubuntu kernel: [ 965.550218] [VPF ops]:[L1732][vs-vse0_src][S0][C0] vpf_chain_del_vnode: done
Apr 4 15:55:33 ubuntu kernel: [ 965.550231] [VPF ops]:[L2554][vs-vse0_src] vpf_device_close: done
Apr 4 15:55:50 ubuntu kernel: [ 981.698270] hobot_jpu_dev: [JPUDRV]jpu_release_internal_res:2600: finish jpu_release_internal_res, current_pid=8860, tgid=8760
Apr 4 15:55:50 ubuntu kernel: [ 981.698503] hobot_jpu_dev: [JPUDRV]jpu_close_instance:1646: [-]JDI_IOCTL_CLOSE_INSTANCE inst_idx=0, s_jpu_open_ref_count=0, inst_open_count=0, current_pid=8760, tgid=8760
Apr 4 15:55:50 ubuntu kernel: [ 981.701680] hobot_jpu_dev: [JPUDRV]jpu_release_internal_res:2600: finish jpu_release_internal_res, current_pid=8760, tgid=8760
Apr 4 15:55:50 ubuntu kernel: [ 981.712695] uvcvideo 1-1.4:1.1: Failed to resubmit video URB (-1).
Apr 4 15:56:14 ubuntu ntpd[972]: 185.125.190.56 local addr 192.168.10.100 →
Apr 4 15:56:45 ubuntu ntpd[972]: 108.59.2.24 local addr 192.168.10.100 →

[Journal Log]:
4月 04 15:56:51 ubuntu sudo[9147]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
4月 04 15:56:51 ubuntu sudo[9147]: sunrise : TTY=pts/0 ; PWD=/home/sunrise/yiqiang_ws ; USER=root ; COMMAND=/usr/bin/rdkos_info
4月 04 15:56:45 ubuntu ntpd[972]: 108.59.2.24 local addr 192.168.10.100 →
4月 04 15:56:14 ubuntu ntpd[972]: 185.125.190.56 local addr 192.168.10.100 →
4月 04 15:55:50 ubuntu kernel: uvcvideo 1-1.4:1.1: Failed to resubmit video URB (-1).
4月 04 15:55:50 ubuntu kernel: hobot_jpu_dev: [JPUDRV]jpu_release_internal_res:2600: finish jpu_release_internal_res, current_pid=8760, tgid=8760
4月 04 15:55:50 ubuntu kernel: hobot_jpu_dev: [JPUDRV]jpu_close_instance:1646: [-]JDI_IOCTL_CLOSE_INSTANCE inst_idx=0, s_jpu_open_ref_count=0, inst_open_count=0, current_pid=8760, tgid=8760
4月 04 15:55:50 ubuntu kernel: hobot_jpu_dev: [JPUDRV]jpu_release_internal_res:2600: finish jpu_release_internal_res, current_pid=8860, tgid=8760
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_src] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L1732][vs-vse0_src][S0][C0] vpf_chain_del_vnode: done
4月 04 15:55:33 ubuntu kernel: vse_nat_close set vse state to CLOSED
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_src][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VIO node]:[L141][vse0] vio_group_task_stop: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_cap0] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_cap0][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_cap1] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_cap1][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_cap2] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_cap2][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_cap3] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_cap3][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_cap4] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_cap4][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][vs-vse0_cap5] vpf_device_close: done
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L210][vs-vse0_cap5][S0][C0] vpf_vdev_close: refcount 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L154][S0][vse0] vpf_safety_close: sudden close
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L1554][vs-vse0_cap0][S0][C0] vpf_video_stop: done start_cnt 0
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L1554][vs-vse0_src][S0][C0] vpf_video_stop: done start_cnt 1
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L81][S0][vse0] vpf_wait_vnode_shot: cnt 10
4月 04 15:55:33 ubuntu kernel: [VPF ops]:[L2554][flow] vpf_device_close: done

sunrise@ubuntu:~/yiqiang_ws$

问题定位

从日志分析,官方模型能正常运行,但你的自定义 YOLOv8 模型 crash(exit code -11)。

关键发现:输入尺寸不匹配!

项目 期望值 实际值
模型训练输入 640×640 640×480
配置文件 未指定 默认使用相机输出

你的模型是在 640×640 上训练和量化的,但相机输出是 640×480,BPU 内部 resize 可能导致后处理计算错误。


解决方案

步骤 1:检查 label 文件格式

cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list

期望内容(单类别):

obstacle

如果有问题,修正为纯文本,每行一个类别名。


步骤 2:修改配置文件,指定输入尺寸

编辑 yolov8workconfig.json,添加输入尺寸配置:

{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 640
}

步骤 3:使用测试图片验证(绕过相机尺寸问题)

先用本地图片测试,确认模型本身没问题:

# 准备一张 640x640 的测试图
cp /opt/tros/humble/lib/dnn_node_example/config/test.jpg /home/sunrise/yiqiang_ws/src/origincar/models/test_640.jpg

# 修改配置文件使用本地图片
cd /home/sunrise/yiqiang_ws
ros2 launch dnn_node_example dnn_node_example.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

如果本地图片能跑通,说明是相机尺寸问题。


步骤 4:解决相机尺寸问题(二选一)

方案 A:调整相机输出为 640×640

# 检查相机支持的分辨率
v4l2-ctl -d /dev/video0 --list-formats-ext

# 修改 launch 文件或设置相机参数为 640x640

方案 B:重新量化模型,使用 640×480 输入

修改 obstacle_config.yaml:

input_parameters:
  input_name: 'images'
  input_type_rt: 'nv12'
  input_type_train: 'rgb'
  input_layout_rt: 'NHWC'
  input_layout_train: 'NCHW'
  input_shape: '1x3x640x480'  # 改为 640x480
  norm_type: 'data_scale'
  scale_value: '0.003921568627451'

然后重新量化:

hb_mapper makertbin --config obstacle_config.yaml --model-type onnx

步骤 5:调试模式获取详细错误

# 启用核心转储
ulimit -c unlimited

# 设置环境变量获取更详细日志
export ROS_LOG_LEVEL=debug
export HBRT_LOG_LEVEL=0

# 运行并查看 crash 前的最后日志
ros2 launch origincar_bringup usb_websocket_display.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json \
  2>&1 | tee crash_log.txt

快速验证清单

# 1. 检查 label 文件
cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list

# 2. 检查相机分辨率
v4l2-ctl -d /dev/video0 --list-formats-ext | grep -A5 "640x480\|640x640"

# 3. 验证模型输出(已确认正确)
python3 -c "from hobot_dnn import pyeasy_dnn as dnn; m=dnn.load('/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin'); print(len(m[0].outputs))"

# 4. 测试官方模型(确认系统正常)
export CAM_TYPE=usb
ros2 launch origincar_bringup usb_websocket_display.launch.py

最可能的原因

输入尺寸不匹配导致后处理 crash。优先尝试:

  1. :white_check_mark: 在配置文件中添加 "input_width": 640, "input_height": 640
  2. :white_check_mark: 或者重新量化模型使用 640×480 输入
  3. :white_check_mark: 检查 label 文件格式

先执行步骤 2,修改配置文件后重试,这是最快的验证方式。

加入之后依旧报错
sunrise@ubuntu:~/yiqiang_ws$ ros2 launch dnn_node_example dnn_node_example.launch.py
dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-16-03-03-024986-ubuntu-10567
[INFO] [launch]: Default logging verbosity is set to INFO
dnn_node_example_path is /opt/tros/humble/lib/dnn_node_example
cp_cmd is cp -r /opt/tros/humble/lib/dnn_node_example/config .
camera_type is usb
using usb cam
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
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [10584]
[INFO] [hobot_codec_republish-2]: process started with pid [10586]
[INFO] [example-3]: process started with pid [10588]
[INFO] [websocket-4]: process started with pid [10590]
[hobot_codec_republish-2] [WARN] [1775289783.729235217] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /image
[hobot_codec_republish-2] pub_topic: /hbmem_img
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: ros
[hobot_codec_republish-2] out_mode: shared_mem
[hobot_codec_republish-2] in_format: jpeg
[hobot_codec_republish-2] out_format: nv12
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775289783.735094409] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775289783.867202313] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775289783.867743307] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775289783.890299001] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775289783.902440298] [hobot_usb_cam]: Try to open device [/dev/video0]
[hobot_usb_cam-1] [WARN] [1775289783.986033431] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775289783.986387219] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986454718] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986495968] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986534509] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986572300] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986609008] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986646425] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986683883] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986722132] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986760257] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986797090] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986834298] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986871214] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986908505] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986944963] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.986981713] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987018504] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987055087] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987091670] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987128628] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987165170] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987201711] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987237961] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987274544] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987311668] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987349709] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987387084] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987424709] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987461667] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987498583] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987534999] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987572457] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987609915] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987648248] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987685248] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987722289] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987759330] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987796705] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987833413] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987870371] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987907537] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987944829] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.987982245] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988019328] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988056077] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988189909] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988236076] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988274742] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988312158] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988349991] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988386949] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988423282] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988461032] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988497740] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988534489] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988571114] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988607530] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988645238] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988682280] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988719446] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988756112] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988793362] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988830070] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988867069] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988903694] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988941069] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.988977860] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989014818] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989051859] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989088692] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989125109] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989161108] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989197650] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989234357] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989271565] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989308898] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989345856] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989382314] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989418772] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989455355] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989492772] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989530188] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989567271] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989604896] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989641853] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989679311] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989716311] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989753519] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989790435] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989827102] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989863643] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.989901226] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775289783.998333101] [hobot_usb_cam]: Open & Init device /dev/video0 success.
[example-3] [WARN] [1775289784.066238015] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775289784.067080298] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775289784.067225630] [dnn_example_node]: Parameter:
[example-3] model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3] model_name:
[example-3] [WARN] [1775289784.067318213] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[websocket-4] [WARN] [1775289784.104331265] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775289784.248420928] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775289784.248586343] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775289784.262182418] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775289784.944109824] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775289784.944453571] [dnn_example_node]: Recved img encoding: nv12, h: 456, w: 800, step: 800, index: 0, stamp: 1775289783_978105000, data size: 547200, comm delay [966.3250]ms
[ERROR] [example-3]: process has died [pid 10588, exit code -11, cmd ‘/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_adzxcdzc --params-file /tmp/launch_params_3u8zdekk --params-file /tmp/launch_params_ap4wo9qu --params-file /tmp/launch_params_xn5hd3wc --params-file /tmp/launch_params_vzona1wk’].
[hobot_codec_republish-2] [WARN] [1775289788.793572485] [hobot_codec_decoder]: Pub img fps [23.88]
[websocket-4] [ERROR] [1775289789.134951115] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775289793.805185314] [hobot_codec_decoder]: Pub img fps [30.33]
[websocket-4] [ERROR] [1775289794.134947719] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775289798.820483177] [hobot_codec_decoder]: Pub img fps [30.32]

问题定位

从最新日志看到关键信息:

Recved img encoding: nv12, h: 456, w: 800, step: 800

相机输出是 800×456,但你的模型是 640×640 训练量化的! 分辨率不匹配导致后处理 crash。


解决方案(按优先级)

方案 A:先用本地图片验证模型(最快)

绕过相机分辨率问题,确认模型本身是否正常:

# 1. 复制官方测试图
cp /opt/tros/humble/lib/dnn_node_example/config/test.jpg /home/sunrise/yiqiang_ws/src/origincar/models/

# 2. 修改配置文件,使用本地图片测试
cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 640,
  "feed_type": 0,
  "image": "/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg"
}
EOF

# 3. 运行测试(不启动相机)
cd /home/sunrise/yiqiang_ws
ros2 launch dnn_node_example dnn_node_example.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

如果本地图片能跑通 → 模型没问题,是相机分辨率问题 → 执行方案 B

如果本地图片也 crash → 模型本身有问题 → 执行方案 C


方案 B:调整相机分辨率到 640×640

# 1. 检查相机是否支持 640x640
v4l2-ctl -d /dev/video0 --list-formats-ext | grep -A2 "640x640"

# 2. 如果不支持 640x640,检查是否支持 640x480
v4l2-ctl -d /dev/video0 --list-formats-ext | grep -A2 "640x480"

# 3. 强制设置相机分辨率(修改 launch 文件或添加参数)
# 在 usb_websocket_display.launch.py 中找到相机节点,添加:
# <param name="width" value="640"/>
# <param name="height" value="480"/>

方案 C:重新量化模型,匹配相机分辨率

如果相机无法输出 640×640,重新量化模型:

# 1. 修改量化配置文件
cat > obstacle_config.yaml << 'EOF'
model_parameters:
  onnx_model: './best.onnx'
  march: 'bayes-e'
  output_model_file_prefix: 'obstacle'
  working_dir: './model_output'

input_parameters:
  input_name: 'images'
  input_type_rt: 'nv12'
  input_type_train: 'rgb'
  input_layout_rt: 'NHWC'
  input_layout_train: 'NCHW'
  input_shape: '1x3x640x480'  # 改为 640x480 或 800x456
  norm_type: 'data_scale'
  scale_value: '0.003921568627451'

calibration_parameters:
  cal_data_dir: './calib_f32'
  cal_data_type: 'float32'
  calibration_type: 'max'

compiler_parameters:
  compile_mode: 'latency'
  optimize_level: 'O3'
  debug: False
EOF

# 2. 重新量化
hb_mapper makertbin --config obstacle_config.yaml --model-type onnx

# 3. 复制新模型到板子
scp model_output/obstacle.bin sunrise@<板子IP>:/home/sunrise/yiqiang_ws/src/origincar/models/

# 4. 更新配置文件中的模型路径和输入尺寸

快速诊断命令

# 1. 查看相机支持的分辨率
v4l2-ctl -d /dev/video0 --list-formats-ext | grep -E "Size:|640"

# 2. 查看 label 文件内容
cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list

# 3. 验证模型输出头(已确认正确)
python3 -c "from hobot_dnn import pyeasy_dnn as dnn; m=dnn.load('/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin'); print(f'Outputs: {len(m[0].outputs)}')"

建议执行顺序

  1. :white_check_mark: 先执行方案 A(本地图片测试)- 5 分钟
  2. :white_check_mark: 根据结果决定执行方案 B 或 C

请先执行方案 A,把运行结果贴出来,这样可以快速定位是模型问题还是分辨率问题。

步骤一:报错

sunrise@ubuntu:~/yiqiang_ws$ ros2 launch dnn_node_example dnn_node_example.launch.py
dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-16-17-47-139821-ubuntu-18960
[INFO] [launch]: Default logging verbosity is set to INFO
dnn_node_example_path is /opt/tros/humble/lib/dnn_node_example
cp_cmd is cp -r /opt/tros/humble/lib/dnn_node_example/config .
camera_type is usb
using usb cam
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
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [18978]
[INFO] [hobot_codec_republish-2]: process started with pid [18980]
[INFO] [example-3]: process started with pid [18982]
[INFO] [websocket-4]: process started with pid [18984]
[hobot_codec_republish-2] [WARN] [1775290667.820676983] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /image
[hobot_codec_republish-2] pub_topic: /hbmem_img
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: ros
[hobot_codec_republish-2] out_mode: shared_mem
[hobot_codec_republish-2] in_format: jpeg
[hobot_codec_republish-2] out_format: nv12
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775290667.826051881] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775290667.961167764] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775290667.961784762] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775290667.984865435] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775290667.996839103] [hobot_usb_cam]: Try to open device [/dev/video0]
[hobot_usb_cam-1] [WARN] [1775290668.096035814] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775290668.096408021] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096500729] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096548229] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096590687] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096629937] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096668354] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096707228] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096745812] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096784353] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096822145] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096860436] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096898395] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096936311] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.096974394] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097012602] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097050811] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097088811] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097126977] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097164935] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097202977] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097240935] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097278768] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097317101] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097354768] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097392935] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097430226] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097467684] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097505642] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097542892] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097582142] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097620684] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097659559] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097698058] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097735892] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097774058] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097813100] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097851641] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097889766] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097928099] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.097966474] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098004516] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098042391] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098080266] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098118807] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098156765] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098311390] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098359473] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098398806] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098436639] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098474514] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098511806] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098550181] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098587556] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098624889] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098662514] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098700555] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098739097] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098776680] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098814846] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098852930] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098892388] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098930179] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.098967846] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099005804] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099043137] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099080679] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099118720] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099157929] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099195554] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099233345] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099270970] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099308886] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099346386] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099385636] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099423386] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099461303] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099498677] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099535511] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099572927] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099611177] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099648760] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099686302] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099724718] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099762343] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099799885] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099837676] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099875468] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099913343] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099950884] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.099988843] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.100026467] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.100063509] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775290668.108552397] [hobot_usb_cam]: Open & Init device /dev/video0 success.
[example-3] [WARN] [1775290668.142812866] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775290668.143666738] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775290668.143820780] [dnn_example_node]: Parameter:
[example-3] model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3] model_name:
[example-3] [WARN] [1775290668.143926613] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[websocket-4] [WARN] [1775290668.192647992] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775290668.352024877] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775290668.352187043] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775290668.365871580] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775290669.025482088] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775290669.025874212] [dnn_example_node]: Recved img encoding: nv12, h: 456, w: 800, step: 800, index: 0, stamp: 1775290667_950917000, data size: 547200, comm delay [1074.9335]ms
[ERROR] [example-3]: process has died [pid 18982, exit code -11, cmd ‘/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_q1qkxju8 --params-file /tmp/launch_params_5jl4k11l --params-file /tmp/launch_params_k0gpsqs8 --params-file /tmp/launch_params_zkcc0u3o --params-file /tmp/launch_params_ffij9wn3’].
[hobot_codec_republish-2] [WARN] [1775290672.890743810] [hobot_codec_decoder]: Pub img fps [24.04]
[websocket-4] [ERROR] [1775290673.225366276] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775290677.906314054] [hobot_codec_decoder]: Pub img fps [30.31]
[websocket-4] [ERROR] [1775290678.225425904] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!

方案c报错:
2026-04-04 15:40:24,640 INFO input_type_train : rgb
2026-04-04 15:40:24,640 INFO input_layout_train : NCHW
2026-04-04 15:40:24,640 INFO norm_type : data_scale
2026-04-04 15:40:24,640 INFO input_shape : 1x3x640x640
2026-04-04 15:40:24,640 INFO scale_value : 0.003921568627451,
2026-04-04 15:40:24,640 INFO cal_data_dir : /workspace/calib_f32
2026-04-04 15:40:24,640 INFO cal_data_type : float32
2026-04-04 15:40:24,640 INFO ---------input info : images end -------
2026-04-04 15:40:24,640 INFO ------------------------------------------
2026-04-04 15:40:24,640 INFO ############# calibration_parameters info #############
2026-04-04 15:40:24,640 INFO preprocess_on : False
2026-04-04 15:40:24,640 INFO calibration_type: : max
2026-04-04 15:40:24,640 INFO per_channel : False
2026-04-04 15:40:24,640 INFO ############# compiler_parameters info #############
2026-04-04 15:40:24,641 INFO debug : False
2026-04-04 15:40:24,641 INFO compile_mode : latency
2026-04-04 15:40:24,641 INFO hbdk_pass_through_params: --O3 --core-num 1 --fast
2026-04-04 15:40:24,641 INFO input-source : {‘images’: ‘pyramid’, ‘_default_value’: ‘ddr’}
2026-04-04 15:40:24,645 INFO Convert to runtime bin file successfully!
2026-04-04 15:40:24,647 INFO End Model Convert
root@25f57fc21c9b:/workspace# hb_mapper makertbin --config obstacle_config.yaml --model-type onnx
2026-04-04 16:11:58,719 INFO log will be stored in /workspace/hb_mapper_makertbin.log
2026-04-04 16:11:58,719 INFO Start hb_mapper…
2026-04-04 16:11:58,720 INFO hbdk version 3.49.15
2026-04-04 16:11:58,720 INFO horizon_nn version 1.1.0
2026-04-04 16:11:58,720 INFO hb_mapper version 1.24.3
2026-04-04 16:11:58,720 INFO Start Model Convert…
2026-04-04 16:11:58,722 INFO Using onnx model file: /workspace/best.onnx
2026-04-04 16:11:58,732 INFO Model has 1 inputs according to model file
2026-04-04 16:11:58,732 WARNING For input 0: user input shape: [1, 3, 640, 480] is different from model file input shape: [1, 3, 640, 640]. Using user input info
2026-04-04 16:11:58,733 WARNING Nv12 input layout info received. input type rt ‘0’ is nv12 and layout ‘NHWC’ is not needed.
2026-04-04 16:11:58,733 INFO The calibration dir name suffix is the same as the value float32 of the cal_data_type parameter and will be read with the value of cal_data_type.
2026-04-04 16:11:58,733 INFO custom_op does not exist, skipped
2026-04-04 16:11:58,733 WARNING Input node images’s input_source not set, it will be set to pyramid by default
2026-04-04 16:11:58,735 INFO *******************************************
2026-04-04 16:11:58,735 INFO First calibration picture name: 000000.f32
2026-04-04 16:11:58,735 INFO First calibration picture md5:
b0abaf6db7f943ae4e71b7aebe0f0a30 /workspace/calib_f32/000000.f32
2026-04-04 16:11:58,745 INFO *******************************************
2026-04-04 16:11:58,746 ERROR load cal data for input ‘images’ error
2026-04-04 16:11:58,753 ERROR cannot reshape array of size 1228800 into shape (1,3,640,480)
root@25f57fc21c9b:/workspace#

检查
sunrise@ubuntu:~/yiqiang_ws$ v4l2-ctl -d /dev/video0 --list-formats-ext | grep -E “Size:|640”
Size: Discrete 1920x1080
Size: Discrete 1280x720
Size: Discrete 640x480
Size: Discrete 800x450
Size: Discrete 1920x1080
Size: Discrete 640x480
Size: Discrete 800x450
Size: Discrete 1920x1080
Size: Discrete 800x450
Size: Discrete 1920x1080
sunrise@ubuntu:~/yiqiang_ws$

问题定位

从日志看到两个关键问题:

问题 1:配置文件 feed_type 未生效

日志显示仍在接收相机数据(h: 456, w: 800),说明 feed_type: 0 配置没有正确应用。

问题 2:校准数据尺寸不匹配

cannot reshape array of size 1228800 into shape (1,3,640,480)
  • 1228800 = 640 × 640 × 3(原校准数据)
  • 921600 = 640 × 480 × 3(新配置需要的尺寸)

校准数据是用 640×640 生成的,不能直接用于 640×480 的模型!


解决方案(按优先级)

方案 A:强制相机输出 640×480(最快,无需重新量化)

相机支持 640×480,直接修改 launch 文件设置相机分辨率:

# 1. 修改配置文件,指定输入尺寸为 640x480
cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 480
}
EOF

# 2. 找到并修改 launch 文件,强制相机分辨率
# 方法 1:添加环境变量
export CAM_WIDTH=640
export CAM_HEIGHT=480
export CAM_TYPE=usb

# 3. 运行测试
ros2 launch origincar_bringup usb_websocket_display.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

方案 B:重新生成校准数据 + 重新量化(如果方案 A 不行)

# 1. 在 PC 上重新生成 640x480 的校准数据
cd D:\zhinengche\OriginCar\yolo\yolov8

# 修改 gen_calib.py,将输出尺寸改为 640x480
# 或者直接用 ffmpeg  resize 现有校准图

# 2. 重新生成校准数据
python gen_calib.py --width 640 --height 480

# 3. 打包到 Linux 容器
# 将新的 calib_f32 文件夹复制到 Linux

# 4. 在容器中重新量化
cd /workspace
hb_mapper makertbin --config obstacle_config.yaml --model-type onnx

# 5. 复制新模型到板子
scp model_output/obstacle.bin sunrise@<板子 IP>:/home/sunrise/yiqiang_ws/src/origincar/models/

方案 C:使用本地图片验证(排查配置问题)

# 1. 创建纯本地测试配置(不启动相机节点)
cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 640,
  "feed_type": 0,
  "image": "/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg"
}
EOF

# 2. 复制测试图片
cp /opt/tros/humble/lib/dnn_node_example/config/test.jpg \
   /home/sunrise/yiqiang_ws/src/origincar/models/test.jpg

# 3. 使用 dnn_node_example 直接测试(不启动相机)
cd /home/sunrise/yiqiang_ws
ros2 launch dnn_node_example dnn_node_example.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

建议执行顺序

步骤 操作 时间
1 执行方案 C(本地图片测试) 5 分钟
2 如果方案 C 成功 → 执行方案 A(改相机分辨率) 5 分钟
3 如果方案 C 失败 → 模型本身有问题,检查导出脚本 -

快速验证命令

# 检查配置文件是否正确
cat /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json | python3 -m json.tool

# 检查 label 文件
cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list

# 测试相机是否能设置 640x480
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480 --stream-mmap --stream-count=5

先执行方案 C,把结果贴出来,这样可以快速判断是模型问题还是分辨率问题。

方案ac均失败

sunrise@ubuntu:~/yiqiang_ws$ cp /opt/tros/humble/lib/dnn_node_example/config/test.jpg 
/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg
sunrise@ubuntu:~/yiqiang_ws$ ros2 launch dnn_node_example dnn_node_example.launch.py 
dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-16-33-11-706225-ubuntu-21064
[INFO] [launch]: Default logging verbosity is set to INFO
dnn_node_example_path is  /opt/tros/humble/lib/dnn_node_example
cp_cmd is  cp -r /opt/tros/humble/lib/dnn_node_example/config .
camera_type is  usb
using usb cam
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
config_file_path is  /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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
env of RMW_FASTRTPS_USE_QOS_FROM_XML is  1 , ignore env setting
config_file_path is  /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [21090]
[INFO] [hobot_codec_republish-2]: process started with pid [21092]
[INFO] [example-3]: process started with pid [21094]
[INFO] [websocket-4]: process started with pid [21096]
[hobot_codec_republish-2] [WARN] [1775291592.397317138] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2]               sub_topic: /image
[hobot_codec_republish-2]               pub_topic: /hbmem_img
[hobot_codec_republish-2]                 channel: 1
[hobot_codec_republish-2]                 in_mode: ros
[hobot_codec_republish-2]                out_mode: shared_mem
[hobot_codec_republish-2]               in_format: jpeg
[hobot_codec_republish-2]              out_format: nv12
[hobot_codec_republish-2]             jpg_quality: 60.00
[hobot_codec_republish-2]         input_framerate: 30
[hobot_codec_republish-2]        output_framerate: -1
[hobot_codec_republish-2]             dump_output: false
[hobot_codec_republish-2]        dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2]        dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775291592.402819925] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775291592.536931470] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775291592.537517927] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775291592.560940656] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775291592.572555812] [hobot_usb_cam]: Try to open device [/dev/video0]
[hobot_usb_cam-1] [WARN] [1775291592.656031361] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775291592.656374528] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656434486] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656474694] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656514194] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656552028] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656589069] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656626444] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656663653] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656700903] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656737861] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656774652] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656812111] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656849319] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656886111] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656923319] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656960611] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.656997694] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657034194] [hobot_usb_cam]:        Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657070736] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657107652] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657145110] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657181985] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657218319] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657254902] [hobot_usb_cam]:        Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657292069] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657329152] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657366527] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657404735] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657442152] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657480277] [hobot_usb_cam]:        Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657517402] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657555402] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657593110] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657630402] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657667902] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657705610] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657743235] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657780485] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657817985] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657855901] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657893318] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657930276] [hobot_usb_cam]:        Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.657967776] [hobot_usb_cam]:        YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658004776] [hobot_usb_cam]:        YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658041901] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658179610] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658226401] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658265693] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658303443] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658340359] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658377526] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658414609] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658451318] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658488068] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658525443] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658562484] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658599776] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658637567] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658674817] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658712526] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658751651] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658788859] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658825901] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658863526] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658900651] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658937650] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.658975359] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659012734] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659050317] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659087067] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659124025] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659161442] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659198317] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659235317] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659272734] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659310233] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659347733] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659385192] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659422858] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659460525] [hobot_usb_cam]:        YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659497900] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659535400] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659572733] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659610233] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659647775] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659684775] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659721858] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659759608] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659796650] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659833900] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659870983] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.659908816] [hobot_usb_cam]:        YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775291592.668442059] [hobot_usb_cam]: Open & Init device /dev/video0 success.
[example-3] [WARN] [1775291592.728314379] [dnn_example_node]: Parameter:
[example-3]  feed_type(0:local, 1:sub): 1
[example-3]  image: config/test.jpg
[example-3]  image_type: 0
[example-3]  dump_render_img: 0
[example-3]  is_shared_mem_sub: 1
[example-3]  config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
[example-3]  msg_pub_topic_name: hobot_dnn_detection
[example-3]  info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3]  ros_img_topic_name: /image
[example-3]  sharedmem_img_topic_name: /hbmem_img
[example-3] [ERROR] [1775291592.728785754] [dnn_example_node]: Read config file [/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json] fail!
[example-3] [ERROR] [1775291592.728979004] [dnn_example_node]: Load config fail!
[websocket-4] [WARN] [1775291592.764323930] [websocket]:
[websocket-4] Parameter:
[websocket-4]  image_topic: /image
[websocket-4]  image_type: mjpeg
[websocket-4]  only_show_image: 0
[websocket-4]  smart_topic: hobot_dnn_detection
[websocket-4]  output_fps: 0
[INFO] [example-3]: process has finished cleanly [pid 21094]
[hobot_codec_republish-2] [WARN] [1775291597.434760805] [hobot_codec_decoder]: Pub img fps [24.20]
[websocket-4] [ERROR] [1775291597.793258597] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775291602.450277637] [hobot_codec_decoder]: Pub img fps [30.31]
[websocket-4] [ERROR] [1775291602.793234061] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!


问题定位

从日志看到关键错误:

[example-3] [ERROR]: Read config file [/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json] fail!
[example-3] [ERROR]: Load config fail!

配置文件读取失败! 这不是模型问题,是 JSON 格式问题。


解决方案

步骤 1:检查并修复 JSON 配置文件

# 1. 查看当前配置文件内容
cat /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

# 2. 验证 JSON 格式是否合法
python3 -m json.tool /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

如果报错,说明 JSON 格式有问题(常见:中文引号、缺少逗号、注释等)。


步骤 2:重新创建正确的配置文件

cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 640,
  "feed_type": 0,
  "image": "/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg"
}
EOF

# 验证 JSON 格式
python3 -m json.tool /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

步骤 3:确认测试图片存在

# 检查图片是否存在
ls -lh /home/sunrise/yiqiang_ws/src/origincar/models/test.jpg

# 如果不存在,复制官方测试图
cp /opt/tros/humble/lib/dnn_node_example/config/test.jpg \
   /home/sunrise/yiqiang_ws/src/origincar/models/test.jpg

步骤 4:检查 label 文件

# 查看 label 文件内容
cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list

# 应该是纯文本,每行一个类别名,例如:
# obstacle

步骤 5:重新运行本地测试

cd /home/sunrise/yiqiang_ws
ros2 launch dnn_node_example dnn_node_example.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

预期结果

结果 说明 下一步
:white_check_mark: 正常运行,看到检测框 模型没问题,是分辨率问题 执行方案 A(改相机分辨率到 640x480)
:cross_mark: 仍然 crash (exit code -11) 模型本身有问题 需要重新导出 ONNX + 重新量化
:cross_mark: 配置文件读取失败 JSON 格式问题 重复步骤 2,确保用英文引号

常见 JSON 错误示例

错误(中文引号):

{
  "model_file": "/path/to/model.bin",  // 错误:中文引号
  "class_num": 1
}

正确(英文引号):

{
  "model_file": "/path/to/model.bin",
  "class_num": 1
}

请先执行步骤 1-2,把 python3 -m json.tool 的输出贴出来,确认配置文件格式正确后再测试。

依旧报错

sunrise@ubuntu:~/yiqiang_ws$ ros2 launch dnn_node_example dnn_node_example.launch.py
dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-16-42-05-533782-ubuntu-22580
[INFO] [launch]: Default logging verbosity is set to INFO
dnn_node_example_path is /opt/tros/humble/lib/dnn_node_example
cp_cmd is cp -r /opt/tros/humble/lib/dnn_node_example/config .
camera_type is None
invalid camera_type None , which is set with export CAM_TYPE=usb/mipi/fb, using default mipi cam
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
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
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
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] [mipi_cam-1]: process started with pid [22597]
[INFO] [hobot_codec_republish-2]: process started with pid [22599]
[INFO] [example-3]: process started with pid [22601]
[INFO] [websocket-4]: process started with pid [22603]
[hobot_codec_republish-2] [WARN] [1775292126.281373228] [hobot_codec_encoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /hbmem_img
[hobot_codec_republish-2] pub_topic: /image
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: shared_mem
[hobot_codec_republish-2] out_mode: ros
[hobot_codec_republish-2] in_format: nv12
[hobot_codec_republish-2] out_format: jpeg
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775292126.287839544] [HobotCodecImpl]: platform x5
[hobot_codec_republish-2] [WARN] [1775292126.288061085] [hobot_codec_encoder]: Enabling zero-copy
[example-3] [WARN] [1775292126.592038521] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775292126.592922602] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775292126.593060810] [dnn_example_node]: Parameter:
[example-3] model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3] model_name:
[example-3] [WARN] [1775292126.593147102] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[websocket-4] [WARN] [1775292126.643429592] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775292126.808555776] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775292126.808713650] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775292126.822625821] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[mipi_cam-1] [ERROR] [1775292128.458527735] [mipi_cam]: [init]->cap capture init failture.
[mipi_cam-1]
[mipi_cam-1] [ERROR] [1775292128.459311525] [mipi_node]: [init]->mipinode init failure.
[mipi_cam-1]
[mipi_cam-1] [WARN] [1775292128.462122017] [mipi_cam]: Enabling zero-copy
[mipi_cam-1] terminate called after throwing an instance of ‘rclcpp::exceptions::RCLError’
[mipi_cam-1] what(): could not create publisher: rcl node’s context is invalid, at ./src/rcl/node.c:428
[ERROR] [mipi_cam-1]: process has died [pid 22597, exit code -6, cmd ‘/opt/tros/humble/lib/mipi_cam/mipi_cam --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_juo4srv6 --params-file /tmp/launch_params_84lc9czw --params-file /tmp/launch_params_7ws9tqw7 --params-file /tmp/launch_params_kexo0pzu --params-file /tmp/launch_params_910mu1ox --params-file /tmp/launch_params_lvc_rz59 --params-file /tmp/launch_params_v4_vcbdw --params-file /tmp/launch_params_5447dptg --params-file /tmp/launch_params_mtaa419g --params-file /tmp/launch_params_uk04j0l6 --params-file /tmp/launch_params_g54ek28a --params-file /tmp/launch_params_szhfbccd --params-file /tmp/launch_params_k7l2s6cp --params-file /tmp/launch_params_4di5opyn --params-file /tmp/launch_params_hlsl_875 --params-file /tmp/launch_params_yd06faus’].
[hobot_codec_republish-2] [ERROR] [1775292131.288273701] [hobot_codec_encoder]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /hbmem_img’!
[websocket-4] [ERROR] [1775292131.674605250] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image’!
[websocket-4] [ERROR] [1775292131.674826874] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [ERROR] [1775292136.288284593] [hobot_codec_encoder]: Hobot_Codec has not received image for

问题定位

从日志看到两个关键问题:

  1. camera_type is None - 没有设置 CAM_TYPE 环境变量,系统默认尝试用 MIPI 相机
  2. MIPI 相机初始化失败 - 你用的是 USB 相机,但系统尝试启动 mipi_cam 节点

解决方案

步骤 1:设置正确的相机类型 + 运行本地测试

# 1. 设置 USB 相机类型
export CAM_TYPE=usb

# 2. 验证配置文件格式
python3 -m json.tool /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

# 3. 确认测试图片存在
ls -lh /home/sunrise/yiqiang_ws/src/origincar/models/test.jpg

# 4. 运行本地图片测试
ros2 launch dnn_node_example dnn_node_example.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

步骤 2:如果步骤 1 仍失败,检查配置文件内容

# 查看配置文件完整内容
cat /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json

# 查看 label 文件内容
cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list

期望的配置文件格式(必须是英文引号):

{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 640,
  "feed_type": 0,
  "image": "/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg"
}

期望的 label 文件格式:

obstacle

步骤 3:如果本地测试成功,再测试相机

# 1. 修改配置文件,使用相机输入(feed_type: 1)
cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 480
}
EOF

# 2. 设置相机分辨率并运行
export CAM_TYPE=usb
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480

ros2 launch origincar_bringup usb_websocket_display.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

排查清单

请按顺序执行并反馈结果:

步骤 命令 期望结果
1 export CAM_TYPE=usb + 运行本地测试 配置文件读取成功
2 python3 -m json.tool 验证配置 JSON 格式合法
3 cat obstacles.list 纯文本,每行一个类别
4 ls -lh test.jpg 图片文件存在

如果还是 Crash

请提供以下信息:

  1. python3 -m json.tool 的完整输出
  2. 本地测试的完整日志(特别是 crash 前的最后 10 行)
  3. 模型输出头验证:
    python3 -c "from hobot_dnn import pyeasy_dnn as dnn; m=dnn.load('/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin'); print(f'Outputs: {len(m[0].outputs)}'); [print(f'  [{i}] {o.properties.shape}') for i,o in enumerate(m[0].outputs)]"
    

先执行步骤 1,把 export CAM_TYPE=usb 后的运行结果贴出来。

sunrise@ubuntu:~/yiqiang_ws$ export CAM_TYPE=usb
sunrise@ubuntu:~/yiqiang_ws$ python3 -m json.tool /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
{
“model_file”: “/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin”,
“dnn_Parser”: “yolov8”,
“model_output_count”: 6,
“reg_max”: 16,
“class_num”: 1,
“cls_names_list”: “/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list”,
“strides”: [
8,
16,
32
],
“score_threshold”: 0.25,
“nms_threshold”: 0.7,
“nms_top_k”: 300,
“input_width”: 640,
“input_height”: 640,
“feed_type”: 0,
“image”: “/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg”
}
sunrise@ubuntu:~/yiqiang_ws$ ls -lh /home/sunrise/yiqiang_ws/src/origincar/models/test.jpg
-rw-r–r-- 1 sunrise sunrise 2.2M 4月 4 16:33 /home/sunrise/yiqiang_ws/src/origincar/models/test.jpg
sunrise@ubuntu:~/yiqiang_ws$ ros2 launch dnn_node_example dnn_node_example.launch.py
dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-16-54-22-259873-ubuntu-25540
[INFO] [launch]: Default logging verbosity is set to INFO
dnn_node_example_path is /opt/tros/humble/lib/dnn_node_example
cp_cmd is cp -r /opt/tros/humble/lib/dnn_node_example/config .
camera_type is usb
using usb cam
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
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [25566]
[INFO] [hobot_codec_republish-2]: process started with pid [25568]
[INFO] [example-3]: process started with pid [25570]
[INFO] [websocket-4]: process started with pid [25572]
[hobot_codec_republish-2] [WARN] [1775292862.957473247] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /image
[hobot_codec_republish-2] pub_topic: /hbmem_img
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: ros
[hobot_codec_republish-2] out_mode: shared_mem
[hobot_codec_republish-2] in_format: jpeg
[hobot_codec_republish-2] out_format: nv12
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775292862.963829855] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775292863.100638923] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775292863.101195047] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775292863.124300113] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775292863.135755000] [hobot_usb_cam]: Try to open device [/dev/video0]
[hobot_usb_cam-1] [WARN] [1775292863.236007578] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775292863.236350952] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236428451] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236471326] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236509618] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236547243] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236585076] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236622701] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236660034] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236697867] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236735159] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236771867] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236809075] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236846117] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236883617] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236920492] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236957200] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.236994200] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237031617] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237068950] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237105950] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237143116] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237180408] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237217991] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237255033] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237292074] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237330991] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237369116] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237406824] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237443991] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237481407] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237518657] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237555907] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237593740] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237631032] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237668657] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237705615] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237742823] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237780198] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237817490] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237855823] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237893239] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237931031] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.237968323] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238005031] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238041614] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238204572] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238253780] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238293030] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238330822] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238368238] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238405405] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238442238] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238480488] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238517696] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238554488] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238591654] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238628862] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238666737] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238703904] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238740946] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238778362] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238816029] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238852904] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238890570] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238928195] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.238965403] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239002903] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239040945] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239078570] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239115445] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239152236] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239189361] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239226653] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239263861] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239301527] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239338819] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239376111] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239413652] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239450444] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239487819] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239525944] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239564152] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239601777] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239640360] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239677443] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239714776] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239751776] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239788901] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239825693] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239862776] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239900484] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.239938067] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292863.248569670] [hobot_usb_cam]: Open & Init device /dev/video0 success.
[example-3] [WARN] [1775292863.287146322] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775292863.288073778] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775292863.288275777] [dnn_example_node]: Parameter:
[example-3] model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3] model_name:
[example-3] [WARN] [1775292863.288449902] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[websocket-4] [WARN] [1775292863.347191919] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775292863.497357702] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775292863.497532118] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775292863.511740832] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775292864.158993139] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775292864.159376429] [dnn_example_node]: Recved img encoding: nv12, h: 456, w: 800, step: 800, index: 0, stamp: 1775292863_944308000, data size: 547200, comm delay [215.0434]ms
[ERROR] [example-3]: process has died [pid 25570, exit code -11, cmd ‘/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_c6pc9tts --params-file /tmp/launch_params__tlxlhxs --params-file /tmp/launch_params_10pn5vqb --params-file /tmp/launch_params_wwgnjk34 --params-file /tmp/launch_params_zls7x8ma’].
[hobot_codec_republish-2] [WARN] [1775292868.021195067] [hobot_codec_decoder]: Pub img fps [24.08]
[websocket-4] [ERROR] [1775292868.376732575] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[hobot_usb_cam-1] [WARN] [1775292868.969311352] [hobot_usb_cam]: Shutting down
[INFO] [hobot_codec_republish-2]: process has finished cleanly [pid 25568]
[INFO] [hobot_usb_cam-1]: process has finished cleanly [pid 25566]
[INFO] [websocket-4]: process has finished cleanly [pid 25572]
sunrise@ubuntu:~/yiqiang_ws$ cat /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_local.json
{
“model_file”: “/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin”,
“dnn_Parser”: “yolov8”,
“model_output_count”: 6,
“reg_max”: 16,
“class_num”: 1,
“cls_names_list”: “/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list”,
“strides”: [8, 16, 32],
“score_threshold”: 0.25,
“nms_threshold”: 0.7,
“nms_top_k”: 300,
“input_width”: 640,
“input_height”: 640,
“feed_type”: 0,
“image”: “/home/sunrise/yiqiang_ws/src/origincar/models/test.jpg”
}
sunrise@ubuntu:~/yiqiang_ws$ cat /home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list
obstaclesunrise@ubuntu:~/yiqiexport CAM_TYPE=usbTYPE=usb
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480
sunrise@ubuntu:~/yiqiang_ws$ ros2 launch origincar_bringup usb_websocket_display.launch.py
dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2026-04-04-16-55-54-877260-ubuntu-25945
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is /opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml
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/hobot_usb_cam/config/usb_camera_calibration.yaml
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] [hobot_usb_cam-1]: process started with pid [25966]
[INFO] [hobot_codec_republish-2]: process started with pid [25968]
[INFO] [example-3]: process started with pid [25970]
[INFO] [websocket-4]: process started with pid [25972]
[INFO] [image_transport_node-5]: process started with pid [25974]
[hobot_codec_republish-2] [WARN] [1775292955.588187263] [hobot_codec_decoder]: Parameters:
[hobot_codec_republish-2] sub_topic: /image
[hobot_codec_republish-2] pub_topic: /hbmem_img
[hobot_codec_republish-2] channel: 1
[hobot_codec_republish-2] in_mode: ros
[hobot_codec_republish-2] out_mode: shared_mem
[hobot_codec_republish-2] in_format: jpeg
[hobot_codec_republish-2] out_format: nv12
[hobot_codec_republish-2] jpg_quality: 60.00
[hobot_codec_republish-2] input_framerate: 30
[hobot_codec_republish-2] output_framerate: -1
[hobot_codec_republish-2] dump_output: false
[hobot_codec_republish-2] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-2] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-2] [WARN] [1775292955.593701246] [HobotCodecImpl]: platform x5
[hobot_usb_cam-1] [WARN] [1775292955.738029045] [hobot_usb_cam]: framerate: 30
[hobot_usb_cam-1] [WARN] [1775292955.738588293] [hobot_usb_cam]: pixel_format_name: mjpeg
[hobot_usb_cam-1] [WARN] [1775292955.762731426] [hobot_usb_cam]: Camera calibration file: [/opt/tros/humble/lib/hobot_usb_cam/config/usb_camera_calibration.yaml] does not exist!
[hobot_usb_cam-1] If you need calibration msg, please make sure the calibration file path is correct and the calibration file exists!
[hobot_usb_cam-1] [WARN] [1775292955.845999040] [hobot_usb_cam]: This devices supproted formats:
[hobot_usb_cam-1] [WARN] [1775292955.846351164] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846426456] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846468081] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846506164] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846544914] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846582705] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846620789] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846658622] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846696205] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846733497] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846770705] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846808163] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846845663] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846882829] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846919954] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846957329] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.846994954] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847032037] [hobot_usb_cam]: Motion-JPEG: 1280 x 720 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847069329] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847106454] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847143537] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847180287] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847217245] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847254370] [hobot_usb_cam]: Motion-JPEG: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847291495] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847328828] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847366120] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847403203] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847440411] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847477536] [hobot_usb_cam]: Motion-JPEG: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847515452] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847552577] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847708285] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847750160] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847789077] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847828618] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847868118] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847905701] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847943368] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.847980534] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848017909] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848055451] [hobot_usb_cam]: Motion-JPEG: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848092867] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848132992] [hobot_usb_cam]: YUYV 4:2:2: 640 x 480 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848171450] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848208950] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848353450] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848398158] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848436700] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848474408] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848511241] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848548241] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848586157] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848624116] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848661116] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848697740] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848734407] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848771782] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848808573] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848845573] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848883531] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848921073] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848958406] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.848995406] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849033031] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849070489] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849107947] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849144864] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849182072] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849219197] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849256155] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849293530] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849330905] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849368155] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849405530] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849442780] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849480446] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849517946] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849555154] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849592571] [hobot_usb_cam]: YUYV 4:2:2: 800 x 450 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849630779] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849668196] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849705696] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849742737] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849780695] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849817904] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849855528] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (30 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849893153] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (25 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849930153] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (20 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.849967320] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (15 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.850006195] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (10 Hz)
[hobot_usb_cam-1] [WARN] [1775292955.850043986] [hobot_usb_cam]: YUYV 4:2:2: 1920 x 1080 (5 Hz)
[example-3] [WARN] [1775292955.942412697] [dnn_example_node]: Parameter:
[example-3] feed_type(0:local, 1:sub): 1
[example-3] image: config/test.jpg
[example-3] image_type: 0
[example-3] dump_render_img: 0
[example-3] is_shared_mem_sub: 1
[example-3] config_file: /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json
[example-3] msg_pub_topic_name: hobot_dnn_detection
[example-3] info_msg_pub_topic_name: hobot_dnn_detection_info
[example-3] ros_img_topic_name: /image
[example-3] sharedmem_img_topic_name: /hbmem_img
[example-3] [WARN] [1775292955.943285611] [dnn_example_node]: Load [1] class types from file [/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list]
[example-3] [WARN] [1775292955.943816818] [dnn_example_node]: Parameter:
[example-3] model_file_name: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin
[example-3] model_name:
[example-3] [WARN] [1775292955.943967568] [dnn_example_node]: model_file_name_: /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin, task_num: 4
[example-3] [BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[example-3] [HBRT] set log level as 0. version = 3.15.55.0
[example-3] [DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[image_transport_node-5] [INFO] [1775292955.978915458] [Nv122BGR]: Nv122BGR
[hobot_codec_republish-2] [WARN] [1775292955.988165304] [hobot_codec_decoder]: New subscription discovered on topic ‘/hbmem_img’, requesting incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[websocket-4] [WARN] [1775292956.001908928] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 0
[websocket-4] smart_topic: hobot_dnn_detection
[websocket-4] output_fps: 0
[image_transport_node-5] [WARN] [1775292956.016728673] [Nv122BGR]: New publisher discovered on topic ‘/hbmem_img’, offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
[example-3] [A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
[example-3] [WARN] [1775292956.147636973] [dnn_example_node]: Get model name: obstacle from load model.
[example-3] [WARN] [1775292956.147830430] [dnn_example_node]: Create ai msg publisher with topic_name: hobot_dnn_detection
[example-3] [WARN] [1775292956.162396968] [dnn_example_node]: Create img hbmem_subscription with topic_name: /hbmem_img
[example-3] [WARN] [1775292956.819114499] [dnn_example_node]: Loaned messages are only safe with const ref subscription callbacks. If you are using any other kind of subscriptions, set the ROS_DISABLE_LOANED_MESSAGES environment variable to 1 (the default).
[example-3] [WARN] [1775292956.819437081] [dnn_example_node]: Recved img encoding: nv12, h: 480, w: 640, step: 640, index: 0, stamp: 1775292955_974223000, data size: 460800, comm delay [845.1914]ms
[ERROR] [example-3]: process has died [pid 25970, exit code -11, cmd ‘/opt/tros/humble/lib/dnn_node_example/example --ros-args --log-level warn --ros-args --params-file /tmp/launch_params_8zsvhg2m --params-file /tmp/launch_params_bp8j0pv8 --params-file /tmp/launch_params_xjiqxg1g --params-file /tmp/launch_params_n09xyuhw --params-file /tmp/launch_params_jk_a3tos’].
[hobot_codec_republish-2] [WARN] [1775292960.652928643] [hobot_codec_decoder]: Pub img fps [23.87]
[websocket-4] [ERROR] [1775292961.042155468] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
[hobot_codec_republish-2] [WARN] [1775292965.669437308] [hobot_codec_decoder]: Pub img fps [30.30]
[websocket-4] [ERROR] [1775292966.042116519] [websocket]: Websocket did not receive AI data! Please check whether the AI data publisher still exists by ‘ros2 topic info hobot_dnn_detection’!
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[image_transport_node-5] [INFO] [1775292966.909506562] [rclcpp]: signal_handler(SIGINT/SIGTERM)
[hobot_usb_cam-1] [WARN] [1775292966.911650222] [hobot_usb_cam]: Shutting down
[INFO] [hobot_codec_republish-2]: process has finished cleanly [pid 25968]
[INFO] [hobot_usb_cam-1]: process has finished cleanly [pid 25966]
[INFO] [image_transport_node-5]: process has finished cleanly [pid 25974]
[INFO] [websocket-4]: process has finished cleanly [pid 25972]
sunrise@ubuntu:~/yiqiang_ws$ python3 -c “from hobot_dnn import pyeasy_dnn as dnn; m=dnn.load(‘/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin’); print(f’Outputs: {len(m[0].outputs)}‘); [print(f’ [{i}] {o.properties.shape}') for i,o in enumerate(m[0].outputs)]”
[BPU_PLAT]BPU Platform Version(1.3.6)! soc info(x5)
[HBRT] set log level as 0. version = 3.15.55.0
[DNN] Runtime version = 1.24.5_(3.15.55 HBRT)
[A][DNN][packed_model.cpp:247]Model [HorizonRT] The model builder version = 1.24.3
Outputs: 6
[0] (1, 64, 80, 80)
[1] (1, 1, 80, 80)
[2] (1, 64, 40, 40)
[3] (1, 1, 40, 40)
[4] (1, 64, 20, 20)
[5] (1, 1, 20, 20)
sunrise@ubuntu:~/yiqiang_ws$

全部错误

问题最终定位

从所有日志分析,核心问题是:feed_type: 0 配置不生效,即使设置了本地图片测试,节点仍在接收相机数据并 crash。

同时,模型输入尺寸 (640×640) 与相机输出 (640×480) 不匹配,导致后处理 crash。


最终解决方案

方案 1:重新量化模型匹配相机分辨率(推荐)

相机支持 640×480,重新量化模型:

# 1. 在 PC 上重新生成 640x480 的校准数据
cd D:\zhinengche\OriginCar\yolo\yolov8

# 修改 gen_calib.py 中的尺寸
# 或者用 ffmpeg 批量 resize 校准图
mkdir -p calib_f32_640x480
for img in calibration_images/*.jpg; do
    ffmpeg -i "$img" -vf scale=640:480 -pix_fmt rgb24 "calib_f32_640x480/$(basename ${img%.jpg}.f32)"
done

# 2. 修改量化配置
cat > obstacle_config_640x480.yaml << 'EOF'
model_parameters:
  onnx_model: './best.onnx'
  march: 'bayes-e'
  output_model_file_prefix: 'obstacle'
  working_dir: './model_output'

input_parameters:
  input_name: 'images'
  input_type_rt: 'nv12'
  input_type_train: 'rgb'
  input_layout_rt: 'NHWC'
  input_layout_train: 'NCHW'
  input_shape: '1x3x640x480'
  norm_type: 'data_scale'
  scale_value: '0.003921568627451'

calibration_parameters:
  cal_data_dir: './calib_f32_640x480'
  cal_data_type: 'float32'
  calibration_type: 'max'

compiler_parameters:
  compile_mode: 'latency'
  optimize_level: 'O3'
  debug: False
EOF

# 3. 重新量化
hb_mapper makertbin --config obstacle_config_640x480.yaml --model-type onnx

# 4. 复制到板子
scp model_output/obstacle.bin sunrise@<板子 IP>:/home/sunrise/yiqiang_ws/src/origincar/models/

方案 2:使用 hrt_model_exec 直接测试模型(排查节点问题)

# 在板子上直接用 hrt_model_exec 测试模型
hrt_model_exec --model_file /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin \
  --input_path /opt/tros/humble/lib/dnn_node_example/config/test.jpg \
  --output_dir /tmp/hrt_test

# 查看是否成功
ls -lh /tmp/hrt_test/

如果 hrt_model_exec 能成功,说明模型没问题,是 dnn_node_example 节点配置问题。


方案 3:修改 launch 文件强制 feed_type(如果方案 1 不行)

# 1. 找到 launch 文件
find /opt/tros -name "dnn_node_example.launch.py" 2>/dev/null

# 2. 备份并修改
cp /opt/tros/humble/lib/dnn_node_example/dnn_node_example.launch.py \
   /opt/tros/humble/lib/dnn_node_example/dnn_node_example.launch.py.bak

# 3. 编辑 launch 文件,找到 dnn_example_config_file 参数
# 确保配置文件路径正确,且 feed_type 在 config 文件中设置

方案 4:使用官方 YOLOv8 示例配置对比

# 1. 复制官方 YOLOv8 配置
cp /opt/tros/humble/lib/dnn_node_example/config/yolov8workconfig.json \
   /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig_official.json

# 2. 只修改 model_file 路径,其他保持官方配置
cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300
}
EOF

# 3. 运行测试(不要加 input_width/height,让节点自动推断)
export CAM_TYPE=usb
ros2 launch origincar_bringup usb_websocket_display.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

快速诊断命令

# 1. 直接用 hrt_model_exec 测试模型(绕过 ROS 节点)
hrt_model_exec --model_file /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin \
  --input_path /opt/tros/humble/lib/dnn_node_example/config/test.jpg \
  --output_dir /tmp/hrt_test

# 2. 检查官方模型配置
cat /opt/tros/humble/lib/dnn_node_example/config/yolov8workconfig.json

# 3. 对比你的配置与官方配置的差异
diff /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json \
     /opt/tros/humble/lib/dnn_node_example/config/yolov8workconfig.json

建议执行顺序

优先级 操作 目的
1 执行 hrt_model_exec 直接测试 确认模型本身是否正常
2 如果 hrt_model_exec 成功 → 对比官方配置文件 找出配置差异
3 如果 hrt_model_exec 失败 → 重新量化模型 (640×480) 匹配相机分辨率

请先执行 hrt_model_exec 测试

hrt_model_exec --model_file /home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin \
  --input_path /opt/tros/humble/lib/dnn_node_example/config/test.jpg \
  --output_dir /tmp/hrt_test

把输出结果贴出来,这样可以快速判断是模型问题还是节点配置问题。

量化报错
模型为640*640

root@a5b41de92001:/workspace# hb_mapper makertbin --config obstacle_config.yaml --model-type onnx
2026-04-04 17:05:35,957 INFO log will be stored in /workspace/hb_mapper_makertbin.log
2026-04-04 17:05:35,957 INFO Start hb_mapper…
2026-04-04 17:05:35,957 INFO hbdk version 3.49.15
2026-04-04 17:05:35,957 INFO horizon_nn version 1.1.0
2026-04-04 17:05:35,957 INFO hb_mapper version 1.24.3
2026-04-04 17:05:35,957 INFO Start Model Convert…
2026-04-04 17:05:35,960 INFO Using onnx model file: /workspace/best.onnx
2026-04-04 17:05:35,979 INFO Model has 1 inputs according to model file
2026-04-04 17:05:35,979 WARNING For input 0: user input shape: [1, 3, 640, 480] is different from model file input shape: [1, 3, 640, 640]. Using user input info
2026-04-04 17:05:35,979 WARNING Nv12 input layout info received. input type rt ‘0’ is nv12 and layout ‘NHWC’ is not needed.
2026-04-04 17:05:35,979 INFO The calibration dir name suffix is the same as the value float32 of the cal_data_type parameter and will be read with the value of cal_data_type.
2026-04-04 17:05:35,979 INFO custom_op does not exist, skipped
2026-04-04 17:05:35,979 WARNING Input node images’s input_source not set, it will be set to pyramid by default
2026-04-04 17:05:35,981 INFO *******************************************
2026-04-04 17:05:35,981 INFO First calibration picture name: 000000.f32
2026-04-04 17:05:35,981 INFO First calibration picture md5:
b0abaf6db7f943ae4e71b7aebe0f0a30 /workspace/calib_f32/000000.f32
2026-04-04 17:05:35,993 INFO *******************************************
2026-04-04 17:05:35,994 ERROR load cal data for input ‘images’ error
2026-04-04 17:05:35,996 ERROR cannot reshape array of size 1228800 into shape (1,3,640,480)
root@a5b41de92001:/workspace#

问题定位

量化报错的核心原因:校准数据尺寸与量化配置不匹配

cannot reshape array of size 1228800 into shape (1,3,640,480)
  • 1228800 = 640 × 640 × 3(现有校准数据是 640x640 生成的)
  • 921600 = 640 × 480 × 3(配置文件要求 640x480)

校准数据必须与量化配置中的 input_shape 完全一致!


解决方案

方案 A:重新生成 640×480 校准数据(推荐)

# 1. 在 PC 上准备原始校准图片(calibration_images 文件夹)
cd D:\zhinengche\OriginCar\yolo\yolov8

# 2. 用 Python 脚本重新生成 640x480 的校准数据
python << 'EOF'
import os
import numpy as np
from PIL import Image

input_dir = 'calibration_images'  # 原始校准图片目录
output_dir = 'calib_f32_640x480'  # 输出目录
os.makedirs(output_dir, exist_ok=True)

target_w, target_h = 640, 480

for i, img_name in enumerate(sorted(os.listdir(input_dir))[:100]):  # 取 100 张
    if not img_name.endswith(('.jpg', '.png', '.jpeg')):
        continue
    
    img_path = os.path.join(input_dir, img_name)
    img = Image.open(img_path).convert('RGB').resize((target_w, target_h), Image.BILINEAR)
    
    # 转为 RGB 数组 (H, W, 3)
    img_array = np.array(img, dtype=np.float32)
    
    # 转置为 (3, H, W) 符合 NCHW
    img_array = img_array.transpose(2, 0, 1)
    
    # 保存为 f32 文件
    output_path = os.path.join(output_dir, f'{i:06d}.f32')
    img_array.tofile(output_path)
    print(f'Generated: {output_path} shape={img_array.shape}')

print(f'Done! Generated {len(os.listdir(output_dir))} calibration files')
EOF

# 3. 将新的校准数据复制到 Linux 容器
# 将 calib_f32_640x480 文件夹复制到 Linux

# 4. 修改量化配置
cat > obstacle_config_640x480.yaml << 'EOF'
model_parameters:
  onnx_model: './best.onnx'
  march: 'bayes-e'
  output_model_file_prefix: 'obstacle'
  working_dir: './model_output'

input_parameters:
  input_name: 'images'
  input_type_rt: 'nv12'
  input_type_train: 'rgb'
  input_layout_rt: 'NHWC'
  input_layout_train: 'NCHW'
  input_shape: '1x3x640x480'  # 与校准数据一致
  norm_type: 'data_scale'
  scale_value: '0.003921568627451'

calibration_parameters:
  cal_data_dir: './calib_f32_640x480'  # 指向新校准数据
  cal_data_type: 'float32'
  calibration_type: 'max'

compiler_parameters:
  compile_mode: 'latency'
  optimize_level: 'O3'
  debug: False
EOF

# 5. 重新量化
hb_mapper makertbin --config obstacle_config_640x480.yaml --model-type onnx

方案 B:保持 640×640,让板端 resize(如果不想重新生成校准数据)

# 1. 保持原有 640x640 量化配置不变
# 2. 在板子上修改配置文件,添加 input_width/height
cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300,
  "input_width": 640,
  "input_height": 640
}
EOF

# 3. 但相机输出是 640x480,dnn_node 会自动 resize 到 640x640
# 这可能会导致检测效果下降,但可以跑通

方案 C:使用官方校准数据生成脚本(如果有)

检查你的 gen_calib.py 是否支持指定尺寸:

# 查看 gen_calib.py 是否有尺寸参数
python gen_calib.py --help

# 通常可以这样指定尺寸
python gen_calib.py --width 640 --height 480 --output_dir calib_f32_640x480

量化配置与校准数据匹配关系

配置项 必须匹配 说明
input_shape 校准数据尺寸 1x3x640x480 → 校准数据必须是 640×480×3
input_type_train 校准数据格式 rgb → 校准数据是 RGB 格式
cal_data_type 校准文件类型 float32 → 校准文件是.f32 二进制

建议执行顺序

步骤 操作 时间
1 用方案 A 的 Python 脚本重新生成 640x480 校准数据 5 分钟
2 复制到 Linux 容器,修改量化配置 2 分钟
3 重新量化 hb_mapper 10 分钟
4 复制到板子测试 5 分钟

快速验证校准数据

生成后验证校准数据尺寸是否正确:

python3 << 'EOF'
import numpy as np
import os

cal_dir = '/workspace/calib_f32_640x480'
cal_file = os.path.join(cal_dir, '000000.f32')

data = np.fromfile(cal_file, dtype=np.float32).reshape(3, 480, 640)
print(f'Shape: {data.shape}')
print(f'Min: {data.min():.1f}, Max: {data.max():.1f}')
print(f'Expected: (3, 480, 640) with range 0-255')
EOF

期望输出:

Shape: (3, 480, 640)
Min: 0.0, Max: 255.0

先执行方案 A 的 Python 脚本生成 640x480 校准数据,然后重新量化。 这是最根本的解决方案。

例程中yolov8模型是640*480的吗

回答

不是。RDK X5 例程中的官方 YOLOv8 模型是 640×640 输入尺寸,不是 640×480。


官方模型配置

查看板子上的官方配置文件可以确认:

# 在板子上执行
cat /opt/tros/humble/lib/dnn_node_example/config/yolov8workconfig.json

官方模型特点:

  • 输入尺寸:640×640
  • 模型文件:/opt/hobot/model/x5/basic/yolov8_640x640_nv12.bin
  • 文件名已标明尺寸:yolov8_640x640_nv12.bin

为什么官方模型能跑,你的不行?

项目 官方模型 你的模型
量化输入尺寸 640×640 640×640
相机输出 640×480 640×480
处理方式 dnn_node 内部自动 resize 同样应该 resize
结果 :white_check_mark: 正常运行 :cross_mark: Crash

关键差异:官方模型的配置文件没有指定 input_width/input_height,让 dnn_node_example 节点自动处理 resize;而你的配置可能添加了这些字段导致冲突。


解决方案(无需重新量化)

步骤 1:使用简化配置文件(移除 input_width/height)

cat > /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json << 'EOF'
{
  "model_file": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacle.bin",
  "dnn_Parser": "yolov8",
  "model_output_count": 6,
  "reg_max": 16,
  "class_num": 1,
  "cls_names_list": "/home/sunrise/yiqiang_ws/src/origincar/models/obstacles.list",
  "strides": [8, 16, 32],
  "score_threshold": 0.25,
  "nms_threshold": 0.7,
  "nms_top_k": 300
}
EOF

注意:不要添加 input_width 和 input_height 字段!


步骤 2:运行测试

export CAM_TYPE=usb
ros2 launch origincar_bringup usb_websocket_display.launch.py \
  dnn_example_config_file:=/home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json

原理说明

dnn_node_example 节点的工作流程:

  1. 相机输出:640×480 (NV12)
  2. 节点内部:自动 resize 到模型需要的 640×640
  3. 模型推理:640×640 输入
  4. 后处理:将检测结果映射回原图尺寸 (640×480)

如果你在配置文件中指定了 input_width: 640, input_height: 640,节点可能会尝试强制相机输出这个尺寸,但相机不支持,导致 crash。


验证官方配置

# 查看官方 YOLOv8 配置
cat /opt/tros/humble/lib/dnn_node_example/config/yolov8workconfig.json

# 对比你的配置
diff /home/sunrise/yiqiang_ws/src/origincar/models/yolov8workconfig.json \
     /opt/tros/humble/lib/dnn_node_example/config/yolov8workconfig.json

总结

问题 答案
官方 YOLOv8 模型尺寸 640×640
相机输出尺寸 640×480
是否需要重新量化 不需要,节点会自动 resize
关键修复 移除配置文件中的 input_width/input_height

先执行步骤 1,修改配置文件后重试。