14 this->
node_->create_client<eufs_msgs::srv::SetCanState>(
"/ros_can/set_mission");
19 this->
node_->create_subscription<eufs_msgs::msg::WheelSpeedsStamped>(
20 "/ros_can/wheel_speeds",
21 rclcpp::QoS(1).reliability(RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT),
25 "/imu/data", rclcpp::QoS(1).reliability(RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT),
28 if (this->
node_->_use_simulated_perception_) {
30 this->
node_->create_subscription<eufs_msgs::msg::ConeArrayWithCovariance>(
33 std::placeholders::_1));
52 const eufs_msgs::msg::ConeArrayWithCovariance& msg)
const {
53 custom_interfaces::msg::ConeArray cone_array_msg;
54 unsigned int largest_size =
static_cast<unsigned int>(
55 std::max({msg.big_orange_cones.size(), msg.blue_cones.size(), msg.yellow_cones.size(),
56 msg.orange_cones.size(), msg.unknown_color_cones.size()}));
57 for (
unsigned int i = 0; i < largest_size; i++) {
58 if (i < msg.big_orange_cones.size()) {
59 auto cone_message = custom_interfaces::msg::Cone();
60 cone_message.position.x = msg.big_orange_cones[i].point.x;
61 cone_message.position.y = msg.big_orange_cones[i].point.y;
62 cone_message.confidence =
65 common_lib::competition_logic::Color::ORANGE);
66 cone_array_msg.cone_array.push_back(cone_message);
68 if (i < msg.blue_cones.size()) {
69 auto cone_message = custom_interfaces::msg::Cone();
70 cone_message.position.x = msg.blue_cones[i].point.x;
71 cone_message.position.y = msg.blue_cones[i].point.y;
72 cone_message.confidence = 1.0;
74 common_lib::competition_logic::Color::BLUE);
75 cone_array_msg.cone_array.push_back(cone_message);
77 if (i < msg.yellow_cones.size()) {
78 auto cone_message = custom_interfaces::msg::Cone();
79 cone_message.position.x = msg.yellow_cones[i].point.x;
80 cone_message.position.y = msg.yellow_cones[i].point.y;
81 cone_message.confidence = 1.0;
83 common_lib::competition_logic::Color::YELLOW);
84 cone_array_msg.cone_array.push_back(cone_message);
86 if (i < msg.orange_cones.size()) {
87 auto cone_message = custom_interfaces::msg::Cone();
88 cone_message.position.x = msg.orange_cones[i].point.x;
89 cone_message.position.y = msg.orange_cones[i].point.y;
90 cone_message.confidence = 1.0;
92 common_lib::competition_logic::Color::ORANGE);
93 cone_array_msg.cone_array.push_back(cone_message);
95 if (i < msg.unknown_color_cones.size()) {
96 auto cone_message = custom_interfaces::msg::Cone();
97 cone_message.position.x = msg.unknown_color_cones[i].point.x;
98 cone_message.position.y = msg.unknown_color_cones[i].point.y;
99 cone_message.confidence = 1.0;
101 common_lib::competition_logic::Color::UNKNOWN);
102 cone_array_msg.cone_array.push_back(cone_message);
105 cone_array_msg.header.stamp = msg.header.stamp;
106 this->
node_->_perception_subscription_callback(cone_array_msg);