Skip to content

Commit 6f70512

Browse files
author
lei.gu
committed
feat(multi_object_tracker): add diagnostics warning when extrapolation time exceeds limit with latency guarantee enabled
1 parent e69b61d commit 6f70512

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

perception/autoware_multi_object_tracker/src/multi_object_tracker_node.cpp

+16-1
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,12 @@ MultiObjectTracker::MultiObjectTracker(const rclcpp::NodeOptions & node_options)
189189
}
190190

191191
// Debugger
192-
debugger_ = std::make_unique<TrackerDebugger>(*this, world_frame_id_, input_channels_config_);
192+
debugger_ = std::make_unique<TrackerDebugger>(*this, world_frame_id_,input_channels_config_);
193+
193194
published_time_publisher_ = std::make_unique<autoware_utils::PublishedTimePublisher>(this);
195+
// Diagnostics
196+
diagnostics_interface_ptr_ =
197+
std::make_unique<autoware_utils::DiagnosticsInterface>(this, "multi_object_tracker");
194198
}
195199

196200
void MultiObjectTracker::onTrigger()
@@ -238,6 +242,17 @@ void MultiObjectTracker::onTimer()
238242
const double maximum_publish_interval = publisher_period_ * maximum_publish_interval_ratio;
239243
should_publish = should_publish || elapsed_time > maximum_publish_interval;
240244

245+
diagnostics_interface_ptr_->clear();
246+
diagnostics_interface_ptr_->add_key_value("elapsed_time", elapsed_time);
247+
if (elapsed_time > 500e-3) {
248+
std::stringstream message;
249+
message << "MultiObjectTracker::onTimer: elapsed_time exceeds its maximum value, "
250+
<< "which may limit the predition performance.";
251+
diagnostics_interface_ptr_->update_level_and_message(
252+
diagnostic_msgs::msg::DiagnosticStatus::WARN, message.str());
253+
}
254+
diagnostics_interface_ptr_->publish(current_time);
255+
241256
// Publish with delay compensation to the current time
242257
if (should_publish) checkAndPublish(current_time);
243258
}

perception/autoware_multi_object_tracker/src/multi_object_tracker_node.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "autoware/multi_object_tracker/object_model/types.hpp"
2323
#include "autoware/multi_object_tracker/odometry.hpp"
2424
#include "autoware/multi_object_tracker/tracker/model/tracker_base.hpp"
25+
2526
#include "debugger/debugger.hpp"
2627
#include "processor/input_manager.hpp"
2728
#include "processor/processor.hpp"
@@ -30,6 +31,7 @@
3031

3132
#include "autoware_perception_msgs/msg/detected_objects.hpp"
3233
#include "autoware_perception_msgs/msg/tracked_objects.hpp"
34+
#include <autoware_utils/ros/diagnostics_interface.hpp>
3335
#include <geometry_msgs/msg/pose_stamped.hpp>
3436

3537
#include <tf2/LinearMath/Transform.h>
@@ -68,6 +70,8 @@ class MultiObjectTracker : public rclcpp::Node
6870
// debugger
6971
std::unique_ptr<TrackerDebugger> debugger_;
7072
std::unique_ptr<autoware_utils::PublishedTimePublisher> published_time_publisher_;
73+
// diagnostics
74+
std::unique_ptr<autoware_utils::DiagnosticsInterface> diagnostics_interface_ptr_;
7175

7276
// publish timer
7377
rclcpp::TimerBase::SharedPtr publish_timer_;

0 commit comments

Comments
 (0)