@@ -27,6 +27,10 @@ RTCModule::RTCModule(rclcpp::Node * node, const std::string & name)
27
27
cooperate_status_namespace_ + " /" + name, rclcpp::QoS (1 ),
28
28
std::bind (&RTCModule::moduleCallback, this , _1));
29
29
30
+ auto_mode_sub_ = node->create_subscription <AutoModeStatus>(
31
+ auto_mode_status_namespace_ + " /" + name, rclcpp::QoS (1 ),
32
+ std::bind (&RTCModule::autoModeCallback, this , _1));
33
+
30
34
cli_set_module_ = proxy.create_client <CooperateCommands>(
31
35
cooperate_commands_namespace_ + " /" + name, rmw_qos_profile_services_default);
32
36
@@ -39,12 +43,23 @@ void RTCModule::moduleCallback(const CooperateStatusArray::ConstSharedPtr messag
39
43
module_statuses_ = message->statuses ;
40
44
}
41
45
46
+ void RTCModule::autoModeCallback (const AutoModeStatus::ConstSharedPtr message)
47
+ {
48
+ auto_mode_status_.module = message->module ;
49
+ auto_mode_status_.is_auto_mode = message->is_auto_mode ;
50
+ }
51
+
42
52
void RTCModule::insertMessage (std::vector<CooperateStatus> & cooperate_statuses)
43
53
{
44
54
cooperate_statuses.insert (
45
55
cooperate_statuses.end (), module_statuses_.begin (), module_statuses_.end ());
46
56
}
47
57
58
+ void RTCModule::insertAutoModeMessage (std::vector<AutoModeStatus> & auto_mode_status)
59
+ {
60
+ auto_mode_status.insert (auto_mode_status.begin (), auto_mode_status_);
61
+ }
62
+
48
63
void RTCModule::callService (
49
64
CooperateCommands::Request::SharedPtr request,
50
65
const CooperateCommands::Response::SharedPtr & responses)
@@ -101,6 +116,8 @@ RTCController::RTCController(const rclcpp::NodeOptions & options)
101
116
102
117
rtc_status_pub_ =
103
118
create_publisher<CooperateStatusArray>(" /api/external/get/rtc_status" , rclcpp::QoS (1 ));
119
+ auto_mode_pub_ =
120
+ create_publisher<AutoModeStatusArray>(" /api/external/get/rtc_auto_mode" , rclcpp::QoS (1 ));
104
121
105
122
group_ = create_callback_group (rclcpp::CallbackGroupType::MutuallyExclusive);
106
123
srv_set_rtc_ = proxy.create_service <CooperateCommands>(
@@ -111,6 +128,8 @@ RTCController::RTCController(const rclcpp::NodeOptions & options)
111
128
rmw_qos_profile_services_default, group_);
112
129
113
130
timer_ = rclcpp::create_timer (this , get_clock (), 100ms, std::bind (&RTCController::onTimer, this ));
131
+ auto_mode_timer_ = rclcpp::create_timer (
132
+ this , get_clock (), 100ms, std::bind (&RTCController::onAutoModeTimer, this ));
114
133
}
115
134
116
135
void RTCController::insertionSortAndValidation (std::vector<CooperateStatus> & statuses_vector)
@@ -259,6 +278,35 @@ void RTCController::setRTC(
259
278
}
260
279
}
261
280
281
+ void RTCController::onAutoModeTimer ()
282
+ {
283
+ std::vector<AutoModeStatus> auto_mode_statuses;
284
+ blind_spot_->insertAutoModeMessage (auto_mode_statuses);
285
+ crosswalk_->insertAutoModeMessage (auto_mode_statuses);
286
+ detection_area_->insertAutoModeMessage (auto_mode_statuses);
287
+ intersection_->insertAutoModeMessage (auto_mode_statuses);
288
+ intersection_occlusion_->insertAutoModeMessage (auto_mode_statuses);
289
+ no_stopping_area_->insertAutoModeMessage (auto_mode_statuses);
290
+ occlusion_spot_->insertAutoModeMessage (auto_mode_statuses);
291
+ traffic_light_->insertAutoModeMessage (auto_mode_statuses);
292
+ virtual_traffic_light_->insertAutoModeMessage (auto_mode_statuses);
293
+ lane_change_left_->insertAutoModeMessage (auto_mode_statuses);
294
+ lane_change_right_->insertAutoModeMessage (auto_mode_statuses);
295
+ ext_request_lane_change_left_->insertAutoModeMessage (auto_mode_statuses);
296
+ ext_request_lane_change_right_->insertAutoModeMessage (auto_mode_statuses);
297
+ avoidance_left_->insertAutoModeMessage (auto_mode_statuses);
298
+ avoidance_right_->insertAutoModeMessage (auto_mode_statuses);
299
+ avoidance_by_lc_left_->insertAutoModeMessage (auto_mode_statuses);
300
+ avoidance_by_lc_right_->insertAutoModeMessage (auto_mode_statuses);
301
+ goal_planner_->insertAutoModeMessage (auto_mode_statuses);
302
+ start_planner_->insertAutoModeMessage (auto_mode_statuses);
303
+
304
+ AutoModeStatusArray msg;
305
+ msg.stamp = now ();
306
+ msg.statuses = auto_mode_statuses;
307
+ auto_mode_pub_->publish (msg);
308
+ }
309
+
262
310
void RTCController::setRTCAutoMode (
263
311
const AutoModeWithModule::Request::SharedPtr request,
264
312
const AutoModeWithModule::Response::SharedPtr response)
0 commit comments