Skip to content

Commit 1b4609d

Browse files
authored
Merge pull request #12 from RuikerLiang/master
2 parents f101273 + 2124aeb commit 1b4609d

4 files changed

Lines changed: 39 additions & 58 deletions

File tree

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
uint8 robot_id
22
uint8 robot_level
3-
uint16 remain_hp
4-
uint16 max_hp
5-
uint16 shooter_id1_17mm_cooling_rate
6-
uint16 shooter_id1_17mm_cooling_limit
7-
uint16 shooter_id1_17mm_speed_limit
8-
9-
uint16 shooter_id2_17mm_cooling_rate
10-
uint16 shooter_id2_17mm_cooling_limit
11-
uint16 shooter_id2_17mm_speed_limit
12-
uint16 shooter_id1_42mm_cooling_rate
13-
uint16 shooter_id1_42mm_cooling_limit
14-
uint16 shooter_id1_42mm_speed_limit
15-
3+
uint16 current_hp
4+
uint16 maximum_hp
5+
uint16 shooter_barrel_cooling_value
6+
uint16 shooter_barrel_heat_limit
167
uint16 chassis_power_limit
17-
bool mains_power_gimbal_output
18-
bool mains_power_chassis_output
19-
bool mains_power_shooter_output
8+
bool power_management_gimbal_output
9+
bool power_management_chassis_output
10+
bool power_management_shooter_output

perception/referee_serial/include/referee_serial/robot_state.hpp

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,16 @@ class RobotState
2727

2828
struct [[gnu::packed]] Data
2929
{
30-
uint8_t robot_id;
31-
uint8_t robot_level;
32-
uint16_t remain_HP;
33-
uint16_t max_HP;
34-
uint16_t shooter_id1_17mm_cooling_rate;
35-
uint16_t shooter_id1_17mm_cooling_limit;
36-
uint16_t shooter_id1_17mm_speed_limit;
37-
38-
uint16_t shooter_id2_17mm_cooling_rate;
39-
uint16_t shooter_id2_17mm_cooling_limit;
40-
uint16_t shooter_id2_17mm_speed_limit;
41-
uint16_t shooter_id1_42mm_cooling_rate;
42-
uint16_t shooter_id1_42mm_cooling_limit;
43-
uint16_t shooter_id1_42mm_speed_limit;
44-
45-
uint16_t chassis_power_limit;
46-
uint8_t mains_power_gimbal_output : 1;
47-
uint8_t mains_power_chassis_output : 1;
48-
uint8_t mains_power_shooter_output : 1;
30+
uint8_t robot_id;
31+
uint8_t robot_level;
32+
uint16_t current_HP;
33+
uint16_t maximum_HP;
34+
uint16_t shooter_barrel_cooling_value;
35+
uint16_t shooter_barrel_heat_limit;
36+
uint16_t chassis_power_limit;
37+
uint8_t power_management_gimbal_output : 1;
38+
uint8_t power_management_chassis_output : 1;
39+
uint8_t power_management_shooter_output : 1;
4940
};
5041

5142
Header header;

perception/referee_serial/src/referee_serial.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <rclcpp/utilities.hpp>
1111
#include <string>
1212
#include <vector>
13+
#include <queue>
1314
#include "referee_serial/crc.h"
1415

1516
#define DEBUG false
@@ -74,14 +75,19 @@ rclcpp::node_interfaces::NodeBaseInterface::SharedPtr RefereeSerial::get_node_ba
7475

7576
void RefereeSerial::receive()
7677
{
77-
std::vector<uint8_t> prefix(7); // header + cmd_id
78+
std::vector<uint8_t> prefix; // header + cmd_id
79+
std::vector<uint8_t> receive_bit(1);
7880
RCLCPP_INFO(node_->get_logger(), "Receiving serial frames");
7981

8082
while (rclcpp::ok())
8183
{
8284
try {
83-
serial_driver_->port()->receive(prefix);
84-
85+
serial_driver_->port()->receive(receive_bit);
86+
prefix.push_back(receive_bit[0]);
87+
if (prefix.size() < 7)
88+
continue;
89+
while (prefix.size() > 7)
90+
prefix.erase(prefix.begin());
8591
if (KeyMouse::is_wanted_pre(prefix)) // key mouse
8692
{
8793
handle_frame<operation_interface::msg::KeyMouse, KeyMouse>(

perception/referee_serial/src/robot_state.cpp

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,39 @@
22
#include <bitset>
33
#include <cstdint>
44
#include <vector>
5+
#include <iostream>
56

67
bool RobotState::is_wanted_pre(const std::vector<uint8_t> &prefix)
78
{
8-
if (prefix[0] != 0xA5) return false;
9+
if (prefix[0] != 0xA5)
10+
return false;
911

1012
uint16_t length = static_cast<uint16_t>(prefix[1]) | (static_cast<uint16_t>(prefix[2]) << 8);
1113
uint16_t cmd_id = static_cast<uint16_t>(prefix[5]) | (static_cast<uint16_t>(prefix[6]) << 8);
1214

13-
if (cmd_id != 0x0201 || length != 27) return false;
15+
if (cmd_id != 0x0201 || length != 13)
16+
return false;
1417
return true;
1518
}
1619

1720
RobotState::RobotState(const std::vector<uint8_t> &frame)
1821
{
1922
// copy the uint8_t vector to the struct
20-
std::copy(frame.begin(), frame.end(), reinterpret_cast<uint8_t*>(&interpreted));
23+
std::copy(frame.begin(), frame.end(), reinterpret_cast<uint8_t *>(&interpreted));
2124
}
2225

2326
operation_interface::msg::RobotState RobotState::msg()
2427
{
2528
operation_interface::msg::RobotState msg;
2629
msg.robot_id = interpreted.data.robot_id;
2730
msg.robot_level = interpreted.data.robot_level;
28-
msg.remain_hp = interpreted.data.remain_HP;
29-
msg.max_hp = interpreted.data.max_HP;
30-
msg.shooter_id1_17mm_cooling_rate = interpreted.data.shooter_id1_17mm_cooling_rate;
31-
msg.shooter_id1_17mm_cooling_limit = interpreted.data.shooter_id1_17mm_cooling_limit;
32-
msg.shooter_id1_17mm_speed_limit = interpreted.data.shooter_id1_17mm_speed_limit;
33-
34-
msg.shooter_id2_17mm_cooling_rate = interpreted.data.shooter_id2_17mm_cooling_rate;
35-
msg.shooter_id2_17mm_cooling_limit = interpreted.data.shooter_id2_17mm_cooling_limit;
36-
msg.shooter_id2_17mm_speed_limit = interpreted.data.shooter_id2_17mm_speed_limit;
37-
38-
msg.shooter_id1_42mm_cooling_rate = interpreted.data.shooter_id1_42mm_cooling_rate;
39-
msg.shooter_id1_42mm_cooling_limit = interpreted.data.shooter_id1_42mm_cooling_limit;
40-
msg.shooter_id1_42mm_speed_limit = interpreted.data.shooter_id1_42mm_speed_limit;
41-
31+
msg.current_hp = interpreted.data.current_HP;
32+
msg.maximum_hp = interpreted.data.maximum_HP;
33+
msg.shooter_barrel_cooling_value = interpreted.data.shooter_barrel_cooling_value;
34+
msg.shooter_barrel_heat_limit = interpreted.data.shooter_barrel_heat_limit;
4235
msg.chassis_power_limit = interpreted.data.chassis_power_limit;
43-
msg.mains_power_gimbal_output = interpreted.data.mains_power_gimbal_output;
44-
msg.mains_power_chassis_output = interpreted.data.mains_power_chassis_output;
45-
msg.mains_power_shooter_output = interpreted.data.mains_power_shooter_output;
36+
msg.power_management_gimbal_output = interpreted.data.power_management_gimbal_output;
37+
msg.power_management_chassis_output = interpreted.data.power_management_chassis_output;
38+
msg.power_management_shooter_output = interpreted.data.power_management_shooter_output;
4639
return msg;
4740
}

0 commit comments

Comments
 (0)