diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index 59cc9cc..57deba2 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -448,5 +448,6 @@ class OBCameraNode { std::condition_variable colorFrameCV_; bool ordered_pc_ = false; + bool use_hardware_time_ = false; }; } // namespace orbbec_camera diff --git a/orbbec_camera/launch/astra.launch.py b/orbbec_camera/launch/astra.launch.py index ae728dd..a03877c 100644 --- a/orbbec_camera/launch/astra.launch.py +++ b/orbbec_camera/launch/astra.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/astra2.launch.py b/orbbec_camera/launch/astra2.launch.py index 197889f..4473512 100644 --- a/orbbec_camera/launch/astra2.launch.py +++ b/orbbec_camera/launch/astra2.launch.py @@ -69,6 +69,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/astra_adv.launch.py b/orbbec_camera/launch/astra_adv.launch.py index d1ccb2a..1047d7a 100644 --- a/orbbec_camera/launch/astra_adv.launch.py +++ b/orbbec_camera/launch/astra_adv.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/astra_embedded_s.launch.py b/orbbec_camera/launch/astra_embedded_s.launch.py index 745fbec..1f5d1fa 100644 --- a/orbbec_camera/launch/astra_embedded_s.launch.py +++ b/orbbec_camera/launch/astra_embedded_s.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/astra_pro2.launch.py b/orbbec_camera/launch/astra_pro2.launch.py index 97863c2..837bc58 100644 --- a/orbbec_camera/launch/astra_pro2.launch.py +++ b/orbbec_camera/launch/astra_pro2.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/astra_stereo_u3.launch.py b/orbbec_camera/launch/astra_stereo_u3.launch.py index 6e89a7c..0b4a4c1 100644 --- a/orbbec_camera/launch/astra_stereo_u3.launch.py +++ b/orbbec_camera/launch/astra_stereo_u3.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai.launch.py b/orbbec_camera/launch/dabai.launch.py index 6e89a7c..0b4a4c1 100644 --- a/orbbec_camera/launch/dabai.launch.py +++ b/orbbec_camera/launch/dabai.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_d1.launch.py b/orbbec_camera/launch/dabai_d1.launch.py index be949d8..af2604c 100644 --- a/orbbec_camera/launch/dabai_d1.launch.py +++ b/orbbec_camera/launch/dabai_d1.launch.py @@ -49,6 +49,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_dcl.py b/orbbec_camera/launch/dabai_dcl.py index b833cce..6989c12 100644 --- a/orbbec_camera/launch/dabai_dcl.py +++ b/orbbec_camera/launch/dabai_dcl.py @@ -82,6 +82,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('enable_frame_sync', default_value='true'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration @@ -132,4 +133,4 @@ def generate_launch_description(): ) ] ) - return ld \ No newline at end of file + return ld diff --git a/orbbec_camera/launch/dabai_dcw.launch.py b/orbbec_camera/launch/dabai_dcw.launch.py index fd77253..3aef05d 100644 --- a/orbbec_camera/launch/dabai_dcw.launch.py +++ b/orbbec_camera/launch/dabai_dcw.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_dcw2.launch.py b/orbbec_camera/launch/dabai_dcw2.launch.py index 7abdea8..28dd5a1 100644 --- a/orbbec_camera/launch/dabai_dcw2.launch.py +++ b/orbbec_camera/launch/dabai_dcw2.launch.py @@ -62,6 +62,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_dw.launch.py b/orbbec_camera/launch/dabai_dw.launch.py index b5b9566..1c193da 100644 --- a/orbbec_camera/launch/dabai_dw.launch.py +++ b/orbbec_camera/launch/dabai_dw.launch.py @@ -49,6 +49,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_dw2.launch.py b/orbbec_camera/launch/dabai_dw2.launch.py index c31e175..9f340fe 100644 --- a/orbbec_camera/launch/dabai_dw2.launch.py +++ b/orbbec_camera/launch/dabai_dw2.launch.py @@ -49,6 +49,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_max.launch.py b/orbbec_camera/launch/dabai_max.launch.py index e8ae39c..d95740e 100644 --- a/orbbec_camera/launch/dabai_max.launch.py +++ b/orbbec_camera/launch/dabai_max.launch.py @@ -51,6 +51,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_max_pro.launch.py b/orbbec_camera/launch/dabai_max_pro.launch.py index 983cdd2..ba89eb1 100644 --- a/orbbec_camera/launch/dabai_max_pro.launch.py +++ b/orbbec_camera/launch/dabai_max_pro.launch.py @@ -62,7 +62,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_soft_filter', default_value='true'), DeclareLaunchArgument('enable_soft_filter', default_value='true'), DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), - DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1') + DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/dabai_pro.launch.py b/orbbec_camera/launch/dabai_pro.launch.py index be949d8..af2604c 100644 --- a/orbbec_camera/launch/dabai_pro.launch.py +++ b/orbbec_camera/launch/dabai_pro.launch.py @@ -49,6 +49,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/deeya.launch.py b/orbbec_camera/launch/deeya.launch.py index a8fc77f..448bad3 100644 --- a/orbbec_camera/launch/deeya.launch.py +++ b/orbbec_camera/launch/deeya.launch.py @@ -60,6 +60,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/femto.launch.py b/orbbec_camera/launch/femto.launch.py index 0daaa28..db73bbd 100644 --- a/orbbec_camera/launch/femto.launch.py +++ b/orbbec_camera/launch/femto.launch.py @@ -71,6 +71,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('enable_frame_sync', default_value='false'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/femto_bolt.launch.py b/orbbec_camera/launch/femto_bolt.launch.py index d23e410..ed7b043 100644 --- a/orbbec_camera/launch/femto_bolt.launch.py +++ b/orbbec_camera/launch/femto_bolt.launch.py @@ -76,6 +76,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_delay_us', default_value='0'), DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/femto_mega.launch.py b/orbbec_camera/launch/femto_mega.launch.py index b38a7e5..9e973e9 100644 --- a/orbbec_camera/launch/femto_mega.launch.py +++ b/orbbec_camera/launch/femto_mega.launch.py @@ -78,6 +78,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('enable_frame_sync', default_value='true'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini2.launch.py b/orbbec_camera/launch/gemini2.launch.py index 9d06b8c..f9e05d9 100644 --- a/orbbec_camera/launch/gemini2.launch.py +++ b/orbbec_camera/launch/gemini2.launch.py @@ -82,6 +82,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('enable_frame_sync', default_value='true'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration @@ -132,4 +133,4 @@ def generate_launch_description(): ) ] ) - return ld \ No newline at end of file + return ld diff --git a/orbbec_camera/launch/gemini2L.launch.py b/orbbec_camera/launch/gemini2L.launch.py index 79c461f..1107f8c 100644 --- a/orbbec_camera/launch/gemini2L.launch.py +++ b/orbbec_camera/launch/gemini2L.launch.py @@ -82,6 +82,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('enable_frame_sync', default_value='true'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini2VL.launch.py b/orbbec_camera/launch/gemini2VL.launch.py index d714ec1..353429c 100644 --- a/orbbec_camera/launch/gemini2VL.launch.py +++ b/orbbec_camera/launch/gemini2VL.launch.py @@ -75,6 +75,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('enable_frame_sync', default_value='true'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini2XL.launch.py b/orbbec_camera/launch/gemini2XL.launch.py index e2630b3..77d3b7f 100644 --- a/orbbec_camera/launch/gemini2XL.launch.py +++ b/orbbec_camera/launch/gemini2XL.launch.py @@ -91,6 +91,7 @@ def generate_launch_description(): DeclareLaunchArgument('trigger_out_enabled', default_value='false'), DeclareLaunchArgument('enable_frame_sync', default_value='true'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini_e.launch.py b/orbbec_camera/launch/gemini_e.launch.py index 9853827..fc55194 100644 --- a/orbbec_camera/launch/gemini_e.launch.py +++ b/orbbec_camera/launch/gemini_e.launch.py @@ -61,6 +61,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini_e_lite.launch.py b/orbbec_camera/launch/gemini_e_lite.launch.py index f33c3a7..9bcb8ef 100644 --- a/orbbec_camera/launch/gemini_e_lite.launch.py +++ b/orbbec_camera/launch/gemini_e_lite.launch.py @@ -50,6 +50,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini_ew.launch.py b/orbbec_camera/launch/gemini_ew.launch.py index 7abdea8..28dd5a1 100644 --- a/orbbec_camera/launch/gemini_ew.launch.py +++ b/orbbec_camera/launch/gemini_ew.launch.py @@ -62,6 +62,7 @@ def generate_launch_description(): DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/launch/gemini_ew_lite.launch.py b/orbbec_camera/launch/gemini_ew_lite.launch.py index d11d2c0..3c520e9 100644 --- a/orbbec_camera/launch/gemini_ew_lite.launch.py +++ b/orbbec_camera/launch/gemini_ew_lite.launch.py @@ -54,6 +54,8 @@ def generate_launch_description(): DeclareLaunchArgument('jpeg_decoder', default_value='avdec_mjpeg'), DeclareLaunchArgument('video_convert', default_value='videoconvert'), DeclareLaunchArgument('ordered_pc', default_value='false'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), + ] # Node configuration diff --git a/orbbec_camera/launch/gemini_uw.launch.py b/orbbec_camera/launch/gemini_uw.launch.py index 983cdd2..ba89eb1 100644 --- a/orbbec_camera/launch/gemini_uw.launch.py +++ b/orbbec_camera/launch/gemini_uw.launch.py @@ -62,7 +62,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_soft_filter', default_value='true'), DeclareLaunchArgument('enable_soft_filter', default_value='true'), DeclareLaunchArgument('soft_filter_max_diff', default_value='-1'), - DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1') + DeclareLaunchArgument('soft_filter_speckle_size', default_value='-1'), + DeclareLaunchArgument('use_hardware_time', default_value='false'), ] # Node configuration diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index f700ec1..69c9d39 100644 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -604,6 +604,7 @@ void OBCameraNode::getParameters() { setAndGetNodeParameter(angular_vel_cov_, "angular_vel_cov", 0.02); setAndGetNodeParameter(ordered_pc_, "ordered_pc", false); setAndGetNodeParameter(max_save_images_count_, "max_save_images_count", 10); + setAndGetNodeParameter(use_hardware_time_, "use_hardware_time", false); } void OBCameraNode::setupTopics() { @@ -1130,8 +1131,8 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr &frame, } int width = static_cast(video_frame->width()); int height = static_cast(video_frame->height()); - - auto timestamp = frameTimeStampToROSTime(video_frame->systemTimeStamp()); + auto frame_time_stamp = use_hardware_time_?video_frame->timeStamp():video_frame->systemTimeStamp(); + auto timestamp = frameTimeStampToROSTime(frame_time_stamp); if (!camera_param_) { camera_param_ = pipeline_->getCameraParam(); }