diff --git a/orbbec_camera/src/ob_camera_node_driver.cpp b/orbbec_camera/src/ob_camera_node_driver.cpp index 98c6ef07..d14a8613 100644 --- a/orbbec_camera/src/ob_camera_node_driver.cpp +++ b/orbbec_camera/src/ob_camera_node_driver.cpp @@ -376,20 +376,24 @@ void OBCameraNodeDriver::init() { net_device_port_ = static_cast(declare_parameter("net_device_port", 0)); enumerate_net_device_ = declare_parameter("enumerate_net_device", false); uvc_backend_ = declare_parameter("uvc_backend", "libuvc"); + const bool use_explicit_net_device = + !enumerate_net_device_ && !net_device_ip_.empty() && net_device_port_ != 0; device_access_mode_str_ = declare_parameter("device_access_mode", "Default"); device_access_mode_ = stringToAccessMode(device_access_mode_str_); RCLCPP_INFO_STREAM(logger_, "Device access mode: " << device_access_mode_str_ << " (" << device_access_mode_ << ")"); - if (uvc_backend_ == "libuvc") { - ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_LIBUVC); - RCLCPP_INFO_STREAM(logger_, "Set UVC backend to " << uvc_backend_); - } else if (uvc_backend_ == "v4l2") { - ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_V4L2); - RCLCPP_INFO_STREAM(logger_, "Set UVC backend to " << uvc_backend_); - } else { - ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_LIBUVC); - RCLCPP_WARN_STREAM(logger_, - "Unsupported uvc_backend '" << uvc_backend_ << "', using default libuvc"); + if (!use_explicit_net_device) { + if (uvc_backend_ == "libuvc") { + ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_LIBUVC); + RCLCPP_INFO_STREAM(logger_, "Set UVC backend to " << uvc_backend_); + } else if (uvc_backend_ == "v4l2") { + ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_V4L2); + RCLCPP_INFO_STREAM(logger_, "Set UVC backend to " << uvc_backend_); + } else { + ctx_->setUvcBackendType(OB_UVC_BACKEND_TYPE_LIBUVC); + RCLCPP_WARN_STREAM(logger_, + "Unsupported uvc_backend '" << uvc_backend_ << "', using default libuvc"); + } } ctx_->enableNetDeviceEnumeration(enumerate_net_device_); device_changed_callback_id_ = ctx_->registerDeviceChangedCallback(