From f07070cbe33b2a00d4f41c6344ba92f420239bf1 Mon Sep 17 00:00:00 2001 From: cyy_mac Date: Sat, 28 Mar 2026 04:56:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ros2_hik_camera/src/hik_camera_node.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/rm_hardware_driver/ros2_hik_camera/src/hik_camera_node.cpp b/src/rm_hardware_driver/ros2_hik_camera/src/hik_camera_node.cpp index d7c92ff..0588257 100644 --- a/src/rm_hardware_driver/ros2_hik_camera/src/hik_camera_node.cpp +++ b/src/rm_hardware_driver/ros2_hik_camera/src/hik_camera_node.cpp @@ -240,10 +240,15 @@ private: { if (is_open_) { close(); + // Wait for camera to fully release resources after close + std::this_thread::sleep_for(std::chrono::milliseconds(500)); } FYT_INFO("camera_driver", "Opening Hik Camera Device!"); + // Additional wait before enumerating devices + std::this_thread::sleep_for(std::chrono::milliseconds(200)); + MV_CC_DEVICE_INFO_LIST device_list; int ret = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &device_list); if (ret != MV_OK || device_list.nDeviceNum == 0) { @@ -321,6 +326,9 @@ private: return false; } + // Wait for camera to be ready after starting grabbing + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + is_open_ = true; FYT_INFO("camera_driver", "Hik Camera Device Open Success!"); return true; @@ -390,7 +398,8 @@ private: ret = MV_CC_ConvertPixelType(camera_handle_, &convert_param_); } if (ret != MV_OK) { - FYT_WARN("camera_driver", "ConvertPixelType failed: [0x{:x}]", ret); + FYT_WARN("camera_driver", "ConvertPixelType failed: [0x{:x}], src_pixel_type=0x{:x}, width={}, height={}", + ret, out_frame.stFrameInfo.enPixelType, out_frame.stFrameInfo.nWidth, out_frame.stFrameInfo.nHeight); { std::lock_guard lock(camera_mutex_); if (camera_handle_ != nullptr) {