diff --git a/depthai_ros_driver/CMakeLists.txt b/depthai_ros_driver/CMakeLists.txt index b483c8df..4d692ec4 100644 --- a/depthai_ros_driver/CMakeLists.txt +++ b/depthai_ros_driver/CMakeLists.txt @@ -5,7 +5,7 @@ set(CMAKE_BUILD_SHARED_LIBS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) + add_compile_options(-Wall -Wextra -Wpedantic -Wno-deprecated-declarations -Wno-maybe-uninitialized) endif() # Default to C99 if(NOT CMAKE_C_STANDARD) diff --git a/depthai_ros_driver/src/dai_nodes/sensors/img_pub.cpp b/depthai_ros_driver/src/dai_nodes/sensors/img_pub.cpp index f2d8c775..20583f5e 100644 --- a/depthai_ros_driver/src/dai_nodes/sensors/img_pub.cpp +++ b/depthai_ros_driver/src/dai_nodes/sensors/img_pub.cpp @@ -97,7 +97,7 @@ void ImagePublisher::createImageConverter(std::shared_ptr device) { if(convConfig.alphaScalingEnabled) { converter->setAlphaScaling(convConfig.alphaScaling); } - if(convConfig.outputDisparity) { + if(!convConfig.outputDisparity) { auto calHandler = device->readCalibration(); double baseline = calHandler.getBaselineDistance(pubConfig.leftSocket, pubConfig.rightSocket, false); if(convConfig.reverseSocketOrder) { diff --git a/depthai_ros_driver/src/dai_nodes/sensors/stereo.cpp b/depthai_ros_driver/src/dai_nodes/sensors/stereo.cpp index 141bdd26..a53e8cae 100644 --- a/depthai_ros_driver/src/dai_nodes/sensors/stereo.cpp +++ b/depthai_ros_driver/src/dai_nodes/sensors/stereo.cpp @@ -80,8 +80,9 @@ void Stereo::setNames() { void Stereo::setXinXout(std::shared_ptr pipeline) { bool outputDisparity = ph->getParam("i_output_disparity"); + bool lowBandwidth = ph->getParam("i_low_bandwidth"); std::function stereoLinkChoice; - if(outputDisparity) { + if(outputDisparity || lowBandwidth) { stereoLinkChoice = [&](auto input) { stereoCamNode->disparity.link(input); }; } else { stereoLinkChoice = [&](auto input) { stereoCamNode->depth.link(input); }; @@ -92,7 +93,7 @@ void Stereo::setXinXout(std::shared_ptr pipeline) { encConf.bitrate = ph->getParam("i_low_bandwidth_bitrate"); encConf.frameFreq = ph->getParam("i_low_bandwidth_frame_freq"); encConf.quality = ph->getParam("i_low_bandwidth_quality"); - encConf.enabled = ph->getParam("i_low_bandwidth"); + encConf.enabled = lowBandwidth; stereoPub = setupOutput(pipeline, stereoQName, stereoLinkChoice, ph->getParam("i_synced"), encConf); } diff --git a/depthai_ros_driver/src/param_handlers/stereo_param_handler.cpp b/depthai_ros_driver/src/param_handlers/stereo_param_handler.cpp index 75b67ae1..5c6c0b58 100644 --- a/depthai_ros_driver/src/param_handlers/stereo_param_handler.cpp +++ b/depthai_ros_driver/src/param_handlers/stereo_param_handler.cpp @@ -54,7 +54,7 @@ void StereoParamHandler::updateSocketsFromParams(dai::CameraBoardSocket& left, d void StereoParamHandler::declareParams(std::shared_ptr stereo) { declareAndLogParam("i_max_q_size", 30); - declareAndLogParam("i_low_bandwidth", false); + bool lowBandwidth = declareAndLogParam("i_low_bandwidth", false); declareAndLogParam("i_low_bandwidth_quality", 50); declareAndLogParam("i_low_bandwidth_profile", 4); declareAndLogParam("i_low_bandwidth_frame_freq", 30); @@ -136,10 +136,13 @@ void StereoParamHandler::declareParams(std::shared_ptr s stereo->initialConfig.setLeftRightCheckThreshold(declareAndLogParam("i_lrc_threshold", 10)); stereo->initialConfig.setMedianFilter(static_cast(declareAndLogParam("i_depth_filter_size", 5))); stereo->initialConfig.setConfidenceThreshold(declareAndLogParam("i_stereo_conf_threshold", 240)); - if(declareAndLogParam("i_subpixel", true)) { + if(declareAndLogParam("i_subpixel", true) && !lowBandwidth) { stereo->initialConfig.setSubpixel(true); stereo->initialConfig.setSubpixelFractionalBits(declareAndLogParam("i_subpixel_fractional_bits", 3)); } + else if(lowBandwidth) { + RCLCPP_INFO(getROSNode()->get_logger(), "Subpixel disabled due to low bandwidth mode"); + } stereo->setRectifyEdgeFillColor(declareAndLogParam("i_rectify_edge_fill_color", 0)); if(declareAndLogParam("i_enable_alpha_scaling", false)) { stereo->setAlphaScaling(declareAndLogParam("i_alpha_scaling", 0.0));