Skip to content

Commit d174d94

Browse files
0x126pre-commit-ci[bot]
authored andcommitted
feat(pointcloud preprocessor): add hysteresis to diag (#1309)
* remove diagnostics_updater * add counter * change node name * rename * style(pre-commit): autofix --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: kotaro-hihara <kotaro.hihara@tier4.jp>
1 parent 30a9576 commit d174d94

File tree

2 files changed

+43
-18
lines changed

2 files changed

+43
-18
lines changed

sensing/pointcloud_preprocessor/include/pointcloud_preprocessor/concatenate_data/concatenate_and_time_sync_nodelet.hpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@
6565

6666
#include <autoware/universe_utils/ros/debug_publisher.hpp>
6767
#include <autoware/universe_utils/system/stop_watch.hpp>
68-
#include <diagnostic_updater/diagnostic_updater.hpp>
6968
#include <point_cloud_msg_wrapper/point_cloud_msg_wrapper.hpp>
7069

70+
#include <diagnostic_msgs/msg/diagnostic_array.hpp>
7171
#include <diagnostic_msgs/msg/diagnostic_status.hpp>
7272
#include <geometry_msgs/msg/twist_stamped.hpp>
7373
#include <geometry_msgs/msg/twist_with_covariance_stamped.hpp>
@@ -138,7 +138,7 @@ class PointCloudConcatenateDataSynchronizerComponent : public rclcpp::Node
138138
rclcpp::Subscription<nav_msgs::msg::Odometry>::SharedPtr sub_odom_;
139139

140140
rclcpp::TimerBase::SharedPtr timer_;
141-
diagnostic_updater::Updater updater_{this};
141+
rclcpp::Publisher<diagnostic_msgs::msg::DiagnosticArray>::SharedPtr diagnostics_pub_;
142142

143143
const std::string input_twist_topic_type_;
144144

@@ -180,7 +180,9 @@ class PointCloudConcatenateDataSynchronizerComponent : public rclcpp::Node
180180
void odom_callback(const nav_msgs::msg::Odometry::ConstSharedPtr input);
181181
void timer_callback();
182182

183-
void checkConcatStatus(diagnostic_updater::DiagnosticStatusWrapper & stat);
183+
void checkConcatStatus();
184+
int consecutive_concatenate_failures{0};
185+
184186
std::string replaceSyncTopicNamePostfix(
185187
const std::string & original_topic_name, const std::string & postfix);
186188

sensing/pointcloud_preprocessor/src/concatenate_data/concatenate_and_time_sync_nodelet.cpp

+38-15
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,8 @@ PointCloudConcatenateDataSynchronizerComponent::PointCloudConcatenateDataSynchro
211211

212212
// Diagnostic Updater
213213
{
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);
217216
}
218217
}
219218

@@ -455,7 +454,7 @@ void PointCloudConcatenateDataSynchronizerComponent::publish()
455454
}
456455
}
457456

458-
updater_.force_update();
457+
checkConcatStatus();
459458

460459
cloud_stdmap_ = cloud_stdmap_tmp_;
461460
std::for_each(std::begin(cloud_stdmap_tmp_), std::end(cloud_stdmap_tmp_), [](auto & e) {
@@ -676,21 +675,45 @@ void PointCloudConcatenateDataSynchronizerComponent::odom_callback(
676675
twist_ptr_queue_.push_back(twist_ptr);
677676
}
678677

679-
void PointCloudConcatenateDataSynchronizerComponent::checkConcatStatus(
680-
diagnostic_updater::DiagnosticStatusWrapper & stat)
678+
void PointCloudConcatenateDataSynchronizerComponent::checkConcatStatus()
681679
{
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+
682684
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;
685695
}
686696

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);
694717
}
695718
} // namespace pointcloud_preprocessor
696719

0 commit comments

Comments
 (0)