@@ -38,41 +38,6 @@ EmergencyHandler::EmergencyHandler() : Node("emergency_handler")
38
38
" ~/input/prev_control_command" , rclcpp::QoS{1 },
39
39
std::bind (&EmergencyHandler::onPrevControlCommand, this , _1));
40
40
41
- // Subscriber without callback
42
- rclcpp::CallbackGroup::SharedPtr cb_group_noexec = this ->create_callback_group (
43
- rclcpp::CallbackGroupType::MutuallyExclusive, false );
44
- auto subscription_options = rclcpp::SubscriptionOptions ();
45
- subscription_options.callback_group = cb_group_noexec;
46
-
47
- sub_odom_ = create_subscription<nav_msgs::msg::Odometry>(
48
- " ~/input/odometry" , rclcpp::QoS{1 },
49
- [this ]([[maybe_unused]] nav_msgs::msg::Odometry::SharedPtr) -> void
50
- {
51
- assert (false );
52
- }, subscription_options);
53
-
54
- sub_control_mode_ = create_subscription<autoware_auto_vehicle_msgs::msg::ControlModeReport>(
55
- " ~/input/control_mode" , rclcpp::QoS{1 },
56
- [this ]([[maybe_unused]] autoware_auto_vehicle_msgs::msg::ControlModeReport::SharedPtr) -> void
57
- {
58
- assert (false );
59
- }, subscription_options);
60
-
61
- // subscribe control mode
62
- sub_mrm_comfortable_stop_status_ = create_subscription<tier4_system_msgs::msg::MrmBehaviorStatus>(
63
- " ~/input/mrm/comfortable_stop/status" , rclcpp::QoS{1 },
64
- [this ]([[maybe_unused]] tier4_system_msgs::msg::MrmBehaviorStatus::SharedPtr) -> void
65
- {
66
- assert (false );
67
- }, subscription_options);
68
-
69
- sub_mrm_emergency_stop_status_ = create_subscription<tier4_system_msgs::msg::MrmBehaviorStatus>(
70
- " ~/input/mrm/emergency_stop/status" , rclcpp::QoS{1 },
71
- [this ]([[maybe_unused]] tier4_system_msgs::msg::MrmBehaviorStatus::SharedPtr) -> void
72
- {
73
- assert (false );
74
- }, subscription_options);
75
-
76
41
// Publisher
77
42
pub_control_command_ = create_publisher<autoware_auto_control_msgs::msg::AckermannControlCommand>(
78
43
" ~/output/control_command" , rclcpp::QoS{1 });
@@ -442,36 +407,31 @@ bool EmergencyHandler::isEmergency()
442
407
443
408
bool EmergencyHandler::isStopped ()
444
409
{
445
- auto odom = std::make_shared<nav_msgs::msg::Odometry>();
446
- rclcpp::MessageInfo msg_info;
447
- if (!sub_odom_->take (*odom, msg_info)) return false ;
448
-
410
+ if (!sub_odom_.updateLatestData ()) return false ;
411
+ auto odom = sub_odom_.getData ();
449
412
constexpr auto th_stopped_velocity = 0.001 ;
450
- return (odom-> twist .twist .linear .x < th_stopped_velocity);
413
+ return (odom. twist .twist .linear .x < th_stopped_velocity);
451
414
}
452
415
453
416
bool EmergencyHandler::isAutonomous ()
454
417
{
455
418
using autoware_auto_vehicle_msgs::msg::ControlModeReport;
456
419
457
- auto control_mode = std::make_shared<autoware_auto_vehicle_msgs::msg::ControlModeReport>();
458
- rclcpp::MessageInfo msg_info;
459
- if (!sub_control_mode_->take (*control_mode, msg_info)) return false ;
460
- return control_mode->mode == ControlModeReport::AUTONOMOUS;
420
+ if (!sub_control_mode_.updateLatestData ()) return false ;
421
+ auto mode = sub_control_mode_.getData ();
422
+ return mode.mode == ControlModeReport::AUTONOMOUS;
461
423
}
462
424
463
425
bool EmergencyHandler::isComfortableStopStatusAvailable ()
464
426
{
465
- auto status = std::make_shared<tier4_system_msgs::msg::MrmBehaviorStatus>();
466
- rclcpp::MessageInfo msg_info;
467
- if (!sub_mrm_comfortable_stop_status_->take (*status, msg_info)) return false ;
468
- return status->state != tier4_system_msgs::msg::MrmBehaviorStatus::NOT_AVAILABLE;
427
+ if (!sub_mrm_comfortable_stop_status_.updateLatestData ()) return false ;
428
+ auto status = sub_mrm_comfortable_stop_status_.getData ();
429
+ return status.state != tier4_system_msgs::msg::MrmBehaviorStatus::NOT_AVAILABLE;
469
430
}
470
431
471
432
bool EmergencyHandler::isEmergencyStopStatusAvailable ()
472
433
{
473
- auto status = std::make_shared<tier4_system_msgs::msg::MrmBehaviorStatus>();
474
- rclcpp::MessageInfo msg_info;
475
- if (!sub_mrm_emergency_stop_status_->take (*status, msg_info)) return false ;
476
- return status->state != tier4_system_msgs::msg::MrmBehaviorStatus::NOT_AVAILABLE;
434
+ if (!sub_mrm_emergency_stop_status_.updateLatestData ()) return false ;
435
+ auto status = sub_mrm_emergency_stop_status_.getData ();
436
+ return status.state != tier4_system_msgs::msg::MrmBehaviorStatus::NOT_AVAILABLE;
477
437
}
0 commit comments