Skip to content

Commit 080a5a1

Browse files
committed
feat: always measure processing time with stopwatch
Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp>
1 parent 40f652c commit 080a5a1

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp

+30-24
Original file line numberDiff line numberDiff line change
@@ -486,9 +486,6 @@ MapBasedPredictionNode::MapBasedPredictionNode(const rclcpp::NodeOptions & node_
486486
processing_time_publisher_ =
487487
std::make_unique<autoware_utils::DebugPublisher>(this, "map_based_prediction");
488488
published_time_publisher_ = std::make_unique<autoware_utils::PublishedTimePublisher>(this);
489-
stop_watch_ptr_ = std::make_unique<autoware_utils::StopWatch<std::chrono::milliseconds>>();
490-
stop_watch_ptr_->tic("cyclic_time");
491-
stop_watch_ptr_->tic("processing_time");
492489
}
493490

494491
if (use_time_keeper) {
@@ -499,13 +496,18 @@ MapBasedPredictionNode::MapBasedPredictionNode(const rclcpp::NodeOptions & node_
499496
time_keeper_ = std::make_shared<autoware_utils::TimeKeeper>(time_keeper);
500497
path_generator_->setTimeKeeper(time_keeper_);
501498
predictor_vru_->setTimeKeeper(time_keeper_);
502-
503-
// diagnostics handler
504-
diagnostics_interface_ptr_ =
505-
std::make_unique<autoware_utils::DiagnosticsInterface>(this, "map_based_prediction");
506-
processing_time_tolerance_ms_ = declare_parameter<double>("processing_time_tolerance_ms");
507499
}
508500

501+
// diagnostics
502+
diagnostics_interface_ptr_ =
503+
std::make_unique<autoware_utils::DiagnosticsInterface>(this, "map_based_prediction");
504+
processing_time_tolerance_ms_ = declare_parameter<double>("processing_time_tolerance_ms");
505+
506+
// stopwatch
507+
stop_watch_ptr_ = std::make_unique<autoware_utils::StopWatch<std::chrono::milliseconds>>();
508+
stop_watch_ptr_->tic("cyclic_time");
509+
stop_watch_ptr_->tic("processing_time");
510+
509511
if (use_debug_marker) {
510512
pub_debug_markers_ =
511513
this->create_publisher<visualization_msgs::msg::MarkerArray>("maneuver", rclcpp::QoS{1});
@@ -562,7 +564,7 @@ void MapBasedPredictionNode::objectsCallback(const TrackedObjects::ConstSharedPt
562564
std::unique_ptr<ScopedTimeTrack> st_ptr;
563565
if (time_keeper_) st_ptr = std::make_unique<ScopedTimeTrack>(__func__, *time_keeper_);
564566

565-
if (stop_watch_ptr_) stop_watch_ptr_->toc("processing_time", true);
567+
stop_watch_ptr_->toc("processing_time", true);
566568

567569
// take traffic_signal
568570
{
@@ -670,26 +672,30 @@ void MapBasedPredictionNode::objectsCallback(const TrackedObjects::ConstSharedPt
670672
// Publish Results
671673
publish(output, debug_markers);
672674

675+
// Processing time
676+
const auto processing_time_ms = stop_watch_ptr_->toc("processing_time", true);
677+
const auto cyclic_time_ms = stop_watch_ptr_->toc("cyclic_time", true);
678+
679+
// Diagnostics
680+
diagnostics_interface_ptr_->clear();
681+
bool is_processing_time_exceeds_tolerance = processing_time_ms > processing_time_tolerance_ms_;
682+
diagnostics_interface_ptr_->add_key_value(
683+
"is_processing_time_ok", is_processing_time_exceeds_tolerance);
684+
if (is_processing_time_exceeds_tolerance) {
685+
std::ostringstream oss;
686+
oss << "Processing time exceeded " << processing_time_tolerance_ms_ << "[ms] < "
687+
<< processing_time_ms << "[ms]";
688+
diagnostics_interface_ptr_->update_level_and_message(
689+
diagnostic_msgs::msg::DiagnosticStatus::WARN, oss.str());
690+
}
691+
diagnostics_interface_ptr_->publish(output.header.stamp);
692+
673693
// Publish Processing Time
674-
if (stop_watch_ptr_) {
675-
const auto processing_time_ms = stop_watch_ptr_->toc("processing_time", true);
676-
const auto cyclic_time_ms = stop_watch_ptr_->toc("cyclic_time", true);
694+
if (processing_time_publisher_) {
677695
processing_time_publisher_->publish<autoware_internal_debug_msgs::msg::Float64Stamped>(
678696
"debug/cyclic_time_ms", cyclic_time_ms);
679697
processing_time_publisher_->publish<autoware_internal_debug_msgs::msg::Float64Stamped>(
680698
"debug/processing_time_ms", processing_time_ms);
681-
682-
diagnostics_interface_ptr_->clear();
683-
bool is_processing_time_ok = processing_time_ms > processing_time_tolerance_ms_;
684-
diagnostics_interface_ptr_->add_key_value("is_processing_time_ok", is_processing_time_ok);
685-
if (is_processing_time_ok) {
686-
std::ostringstream oss;
687-
oss << "Processing time exceeded " << processing_time_tolerance_ms_ << "[ms] < "
688-
<< processing_time_ms << "[ms]";
689-
diagnostics_interface_ptr_->update_level_and_message(
690-
diagnostic_msgs::msg::DiagnosticStatus::WARN, oss.str());
691-
}
692-
diagnostics_interface_ptr_->publish(output.header.stamp);
693699
}
694700
}
695701

0 commit comments

Comments
 (0)