@@ -211,9 +211,8 @@ PointCloudConcatenateDataSynchronizerComponent::PointCloudConcatenateDataSynchro
211
211
212
212
// Diagnostic Updater
213
213
{
214
- updater_.setHardwareID (" concatenate_data_checker" );
215
- updater_.add (
216
- " concat_status" , this , &PointCloudConcatenateDataSynchronizerComponent::checkConcatStatus);
214
+ diagnostics_pub_ =
215
+ this ->create_publisher <diagnostic_msgs::msg::DiagnosticArray>(" /diagnostics" , 10 );
217
216
}
218
217
}
219
218
@@ -455,7 +454,7 @@ void PointCloudConcatenateDataSynchronizerComponent::publish()
455
454
}
456
455
}
457
456
458
- updater_. force_update ();
457
+ checkConcatStatus ();
459
458
460
459
cloud_stdmap_ = cloud_stdmap_tmp_;
461
460
std::for_each (std::begin (cloud_stdmap_tmp_), std::end (cloud_stdmap_tmp_), [](auto & e) {
@@ -676,21 +675,45 @@ void PointCloudConcatenateDataSynchronizerComponent::odom_callback(
676
675
twist_ptr_queue_.push_back (twist_ptr);
677
676
}
678
677
679
- void PointCloudConcatenateDataSynchronizerComponent::checkConcatStatus (
680
- diagnostic_updater::DiagnosticStatusWrapper & stat)
678
+ void PointCloudConcatenateDataSynchronizerComponent::checkConcatStatus ()
681
679
{
680
+ diagnostic_msgs::msg::DiagnosticStatus diag_status_msg;
681
+ diag_status_msg.name = std::string (this ->get_name ()) + " : concat_status" ;
682
+ diag_status_msg.hardware_id = " concatenate_data_checker" ;
683
+
682
684
for (const std::string & e : input_topics_) {
683
- const std::string subscribe_status = not_subscribed_topic_names_.count (e) ? " NG" : " OK" ;
684
- stat.add (e, subscribe_status);
685
+ diagnostic_msgs::msg::KeyValue key_value_msg;
686
+ key_value_msg.key = e;
687
+ key_value_msg.value = not_subscribed_topic_names_.count (e) ? " NG" : " OK" ;
688
+ diag_status_msg.values .push_back (key_value_msg);
689
+ }
690
+
691
+ if (not_subscribed_topic_names_.size () > 0 ) {
692
+ consecutive_concatenate_failures += 1 ;
693
+ } else {
694
+ consecutive_concatenate_failures = 0 ;
685
695
}
686
696
687
- const int8_t level = not_subscribed_topic_names_.empty ()
688
- ? diagnostic_msgs::msg::DiagnosticStatus::OK
689
- : diagnostic_msgs::msg::DiagnosticStatus::WARN;
690
- const std::string message = not_subscribed_topic_names_.empty ()
691
- ? " Concatenate all topics"
692
- : " Some topics are not concatenated" ;
693
- stat.summary (level, message);
697
+ {
698
+ diagnostic_msgs::msg::KeyValue key_value_msg;
699
+ key_value_msg.key = " consecutiveConcatenateFailures" ;
700
+ key_value_msg.value = std::to_string (consecutive_concatenate_failures_);
701
+ diag_status_msg.values .push_back (key_value_msg);
702
+ }
703
+
704
+ if (consecutive_concatenate_failures > 1 ) {
705
+ diag_status_msg.level = diagnostic_msgs::msg::DiagnosticStatus::WARN;
706
+ diag_status_msg.message = " Some topics are not concatenated" ;
707
+ } else {
708
+ diag_status_msg.level = diagnostic_msgs::msg::DiagnosticStatus::OK;
709
+ diag_status_msg.message = " Concatenate all topics" ;
710
+ }
711
+
712
+ diagnostic_msgs::msg::DiagnosticArray diag_msg;
713
+ diag_msg.header .stamp = this ->now ();
714
+ diag_msg.status .push_back (diag_status_msg);
715
+
716
+ diagnostics_pub_->publish (diag_msg);
694
717
}
695
718
} // namespace pointcloud_preprocessor
696
719
0 commit comments