Skip to content

Commit 2f341cc

Browse files
feat: add support auto mode status (#111)
* feat: add support auto mode status Signed-off-by: tkhmy <tkh.my.p@gmail.com> * style(pre-commit): autofix --------- Signed-off-by: tkhmy <tkh.my.p@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent a58468e commit 2f341cc

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

autoware_iv_external_api_adaptor/src/rtc_controller.cpp

+48
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ RTCModule::RTCModule(rclcpp::Node * node, const std::string & name)
2727
cooperate_status_namespace_ + "/" + name, rclcpp::QoS(1),
2828
std::bind(&RTCModule::moduleCallback, this, _1));
2929

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+
3034
cli_set_module_ = proxy.create_client<CooperateCommands>(
3135
cooperate_commands_namespace_ + "/" + name, rmw_qos_profile_services_default);
3236

@@ -39,12 +43,23 @@ void RTCModule::moduleCallback(const CooperateStatusArray::ConstSharedPtr messag
3943
module_statuses_ = message->statuses;
4044
}
4145

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+
4252
void RTCModule::insertMessage(std::vector<CooperateStatus> & cooperate_statuses)
4353
{
4454
cooperate_statuses.insert(
4555
cooperate_statuses.end(), module_statuses_.begin(), module_statuses_.end());
4656
}
4757

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+
4863
void RTCModule::callService(
4964
CooperateCommands::Request::SharedPtr request,
5065
const CooperateCommands::Response::SharedPtr & responses)
@@ -101,6 +116,8 @@ RTCController::RTCController(const rclcpp::NodeOptions & options)
101116

102117
rtc_status_pub_ =
103118
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));
104121

105122
group_ = create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive);
106123
srv_set_rtc_ = proxy.create_service<CooperateCommands>(
@@ -111,6 +128,8 @@ RTCController::RTCController(const rclcpp::NodeOptions & options)
111128
rmw_qos_profile_services_default, group_);
112129

113130
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));
114133
}
115134

116135
void RTCController::insertionSortAndValidation(std::vector<CooperateStatus> & statuses_vector)
@@ -259,6 +278,35 @@ void RTCController::setRTC(
259278
}
260279
}
261280

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+
262310
void RTCController::setRTCAutoMode(
263311
const AutoModeWithModule::Request::SharedPtr request,
264312
const AutoModeWithModule::Response::SharedPtr response)

autoware_iv_external_api_adaptor/src/rtc_controller.hpp

+12
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#include <rclcpp/rclcpp.hpp>
1919
#include <tier4_api_utils/tier4_api_utils.hpp>
2020

21+
#include "tier4_rtc_msgs/msg/auto_mode_status.hpp"
22+
#include "tier4_rtc_msgs/msg/auto_mode_status_array.hpp"
2123
#include "tier4_rtc_msgs/msg/cooperate_command.hpp"
2224
#include "tier4_rtc_msgs/msg/cooperate_status.hpp"
2325
#include "tier4_rtc_msgs/msg/cooperate_status_array.hpp"
@@ -33,6 +35,8 @@
3335
using CooperateCommands = tier4_rtc_msgs::srv::CooperateCommands;
3436
using AutoMode = tier4_rtc_msgs::srv::AutoMode;
3537
using AutoModeWithModule = tier4_rtc_msgs::srv::AutoModeWithModule;
38+
using AutoModeStatusArray = tier4_rtc_msgs::msg::AutoModeStatusArray;
39+
using AutoModeStatus = tier4_rtc_msgs::msg::AutoModeStatus;
3640
using CooperateStatusArray = tier4_rtc_msgs::msg::CooperateStatusArray;
3741
using CooperateStatus = tier4_rtc_msgs::msg::CooperateStatus;
3842
using Module = tier4_rtc_msgs::msg::Module;
@@ -42,15 +46,20 @@ class RTCModule
4246
public:
4347
std::string cooperate_status_namespace_ = "/planning/cooperate_status";
4448
std::string cooperate_commands_namespace_ = "/planning/cooperate_commands";
49+
std::string auto_mode_status_namespace_ = "/planning/auto_mode_status";
4550
std::string enable_auto_mode_namespace_ = "/planning/enable_auto_mode";
4651
std::vector<CooperateStatus> module_statuses_;
52+
AutoModeStatus auto_mode_status_;
4753
rclcpp::Subscription<CooperateStatusArray>::SharedPtr module_sub_;
54+
rclcpp::Subscription<AutoModeStatus>::SharedPtr auto_mode_sub_;
4855
tier4_api_utils::Client<CooperateCommands>::SharedPtr cli_set_module_;
4956
tier4_api_utils::Client<AutoMode>::SharedPtr cli_set_auto_mode_;
5057

5158
RTCModule(rclcpp::Node * node, const std::string & name);
5259
void moduleCallback(const CooperateStatusArray::ConstSharedPtr message);
60+
void autoModeCallback(const AutoModeStatus::ConstSharedPtr message);
5361
void insertMessage(std::vector<CooperateStatus> & cooperate_statuses);
62+
void insertAutoModeMessage(std::vector<AutoModeStatus> & auto_mode_status);
5463
void callService(
5564
CooperateCommands::Request::SharedPtr request,
5665
const CooperateCommands::Response::SharedPtr & responses);
@@ -88,13 +97,15 @@ class RTCController : public rclcpp::Node
8897

8998
/* publishers */
9099
rclcpp::Publisher<CooperateStatusArray>::SharedPtr rtc_status_pub_;
100+
rclcpp::Publisher<AutoModeStatusArray>::SharedPtr auto_mode_pub_;
91101
/* service from external */
92102
rclcpp::CallbackGroup::SharedPtr group_;
93103
tier4_api_utils::Service<CooperateCommands>::SharedPtr srv_set_rtc_;
94104
tier4_api_utils::Service<AutoModeWithModule>::SharedPtr srv_set_rtc_auto_mode_;
95105

96106
/* Timer */
97107
rclcpp::TimerBase::SharedPtr timer_;
108+
rclcpp::TimerBase::SharedPtr auto_mode_timer_;
98109

99110
void insertionSortAndValidation(std::vector<CooperateStatus> & statuses_vector);
100111
void checkInfDistance(CooperateStatus & status);
@@ -108,6 +119,7 @@ class RTCController : public rclcpp::Node
108119

109120
// ros callback
110121
void onTimer();
122+
void onAutoModeTimer();
111123
};
112124

113125
} // namespace external_api

0 commit comments

Comments
 (0)