Skip to content

Commit 34c506a

Browse files
fix: replace subscription
Signed-off-by: Masahiro Kubota <norikenpi@gmail.com>
1 parent 224153f commit 34c506a

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

system/system_error_monitor/include/system_error_monitor/system_error_monitor_core.hpp

+9-6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#define SYSTEM_ERROR_MONITOR__SYSTEM_ERROR_MONITOR_CORE_HPP_
1717

1818
#include "tier4_autoware_utils/ros/logger_level_configure.hpp"
19+
#include "tier4_autoware_utils/ros/polling_subscriber.hpp"
1920

2021
#include <rclcpp/create_timer.hpp>
2122
#include <rclcpp/rclcpp.hpp>
@@ -101,12 +102,14 @@ class AutowareErrorMonitor : public rclcpp::Node
101102

102103
// Subscriber
103104
rclcpp::Subscription<diagnostic_msgs::msg::DiagnosticArray>::SharedPtr sub_diag_array_;
104-
rclcpp::Subscription<autoware_system_msgs::msg::AutowareState>::SharedPtr sub_autoware_state_;
105-
rclcpp::Subscription<tier4_control_msgs::msg::GateMode>::SharedPtr sub_current_gate_mode_;
106-
rclcpp::Subscription<autoware_vehicle_msgs::msg::ControlModeReport>::SharedPtr sub_control_mode_;
107-
void onAutowareState(const autoware_system_msgs::msg::AutowareState::ConstSharedPtr msg);
108-
void onCurrentGateMode(const tier4_control_msgs::msg::GateMode::ConstSharedPtr msg);
109-
void onControlMode(const autoware_vehicle_msgs::msg::ControlModeReport::ConstSharedPtr msg);
105+
// polling subscribers
106+
tier4_autoware_utils::InterProcessPollingSubscriber<autoware_system_msgs::msg::AutowareState> sub_autoware_state_{
107+
this, "~/input/current_gate_mode"};
108+
tier4_autoware_utils::InterProcessPollingSubscriber<tier4_control_msgs::msg::GateMode> sub_current_gate_mode_{
109+
this, "~/input/autoware_state"};
110+
tier4_autoware_utils::InterProcessPollingSubscriber<autoware_vehicle_msgs::msg::ControlModeReport> sub_control_mode_{
111+
this, "~/input/control_mode"};
112+
110113
void onDiagArray(const diagnostic_msgs::msg::DiagnosticArray::ConstSharedPtr msg);
111114

112115
const size_t diag_buffer_size_ = 100;

system/system_error_monitor/src/system_error_monitor_core.cpp

+25-9
Original file line numberDiff line numberDiff line change
@@ -232,15 +232,6 @@ AutowareErrorMonitor::AutowareErrorMonitor(const rclcpp::NodeOptions & options)
232232
// Subscriber
233233
sub_diag_array_ = create_subscription<diagnostic_msgs::msg::DiagnosticArray>(
234234
"input/diag_array", rclcpp::QoS{1}, std::bind(&AutowareErrorMonitor::onDiagArray, this, _1));
235-
sub_current_gate_mode_ = create_subscription<tier4_control_msgs::msg::GateMode>(
236-
"~/input/current_gate_mode", rclcpp::QoS{1},
237-
std::bind(&AutowareErrorMonitor::onCurrentGateMode, this, _1));
238-
sub_autoware_state_ = create_subscription<autoware_system_msgs::msg::AutowareState>(
239-
"~/input/autoware_state", rclcpp::QoS{1},
240-
std::bind(&AutowareErrorMonitor::onAutowareState, this, _1));
241-
sub_control_mode_ = create_subscription<autoware_vehicle_msgs::msg::ControlModeReport>(
242-
"~/input/control_mode", rclcpp::QoS{1},
243-
std::bind(&AutowareErrorMonitor::onControlMode, this, _1));
244235

245236
// Publisher
246237
pub_hazard_status_ = create_publisher<autoware_system_msgs::msg::HazardStatusStamped>(
@@ -440,6 +431,31 @@ bool AutowareErrorMonitor::isDataHeartbeatTimeout()
440431

441432
void AutowareErrorMonitor::onTimer()
442433
{
434+
const auto autoware_state_msg = sub_autoware_state_.takeData();
435+
const auto current_gate_msg = sub_current_gate_mode_.takeData();
436+
const auto control_mode_msg = sub_control_mode_.takeData();
437+
438+
if (autoware_state_msg) {
439+
autoware_state_ = autoware_state_msg;
440+
// for Heartbeat
441+
autoware_state_stamp_ = this->now();
442+
}
443+
444+
if (current_gate_msg) {
445+
current_gate_mode_ = current_gate_msg;
446+
// for Heartbeat
447+
current_gate_mode_stamp_ = this->now();
448+
}
449+
450+
if (control_mode_msg) {
451+
control_mode_ = control_mode_msg;
452+
// for Heartbeat
453+
control_mode_stamp_ = this->now();
454+
}
455+
456+
457+
// for Heartbeat
458+
current_gate_mode_stamp_ = this->now();
443459
if (!isDataReady()) {
444460
if ((this->now() - initialized_time_).seconds() > params_.data_ready_timeout) {
445461
RCLCPP_WARN_THROTTLE(

0 commit comments

Comments
 (0)