Skip to content

Commit 9ba387e

Browse files
authored
Merge pull request #143 from CU-Robotics/feature-damage-status-sending
Feature damage status sending
2 parents 0364e83 + 4532617 commit 9ba387e

File tree

5 files changed

+21
-9
lines changed

5 files changed

+21
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ tools/*.out
3232
tools/git_scraper
3333
tools/custom_monitor
3434
tools/compiler
35+
tools/tools
3536

3637
# Ignore the output from the git scraper
3738
src/git_info.h

src/controls/estimator.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,6 @@ void GimbalEstimator::step_states(float output[STATE_LEN][3], float curr_state[S
147147
while (yaw_angle <= -PI)
148148
yaw_angle += 2 * PI;
149149

150-
while (chassis_angle >= PI)
151-
chassis_angle -= 2 * PI;
152-
while (chassis_angle <= -PI)
153-
chassis_angle += 2 * PI;
154-
155150
// output[2][0] = chassis_angle;
156151
// output[2][1] = 0;
157152
// output[2][2] = 0;
@@ -174,6 +169,10 @@ void GimbalEstimator::step_states(float output[STATE_LEN][3], float curr_state[S
174169
}
175170

176171
chassis_angle = yaw_angle - yaw_enc_angle;
172+
while (chassis_angle >= PI)
173+
chassis_angle -= 2 * PI;
174+
while (chassis_angle <= -PI)
175+
chassis_angle += 2 * PI;
177176
// chassis_angle = -(total_odom_pos[0] + total_odom_pos[2])/(2*odom_axis_offset_x)+initial_chassis_angle;
178177
float d_chassis_heading = (chassis_angle - prev_chassis_angle);
179178
if (d_chassis_heading > PI) d_chassis_heading -= 2 * PI;
@@ -573,6 +572,6 @@ void NewFeederEstimator::step_states(float output[CAN_MAX_MOTORS][MICRO_STATE_LE
573572
ball_count += diff/(M_PI/2.0);
574573
output[0][0] = ball_count;
575574
output[0][1] = feeder_velocity;
576-
output[0][2] = 0;
575+
output[0][2] = feeder_angle; // this is not the acceleration just the encoder value for debugging
577576
}
578577

src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,4 +448,4 @@ int main() {
448448
}
449449

450450
return 0;
451-
}
451+
}

src/sensors/RefSystem.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "RefSystem.hpp"
2+
#include "RefSystemPacketDefs.hpp"
23

34
uint8_t generateCRC8(uint8_t* data, uint32_t len) {
45
uint8_t CRC8 = 0xFF;
@@ -90,12 +91,19 @@ CommsRefData RefSystem::get_data_for_comms() {
9091
memcpy(output_array.raw + REF_COMMS_ROBOT_POWER_HEAT_OFFSET, ref_data.robot_power_heat.raw, ref_data.robot_power_heat.packet_size);
9192
memcpy(output_array.raw + REF_COMMS_ROBOT_POSITION_OFFSET, ref_data.robot_position.raw, ref_data.robot_position.packet_size);
9293
memcpy(output_array.raw + REF_COMMS_ROBOT_BUFF_OFFSET, ref_data.robot_buff.raw, ref_data.robot_buff.packet_size);
93-
memcpy(output_array.raw + REF_COMMS_DAMAGE_STATUS_OFFSET, ref_data.damage_status.raw, ref_data.damage_status.packet_size);
94+
95+
if(damage_status_changed) {
96+
memcpy(output_array.raw + REF_COMMS_DAMAGE_STATUS_OFFSET, ref_data.damage_status.raw, ref_data.damage_status.packet_size);
97+
damage_status_changed = false; // reset the flag
98+
} else {
99+
//if the damage status has not changed, send (15, 15) which means invalid
100+
memset(output_array.raw + REF_COMMS_DAMAGE_STATUS_OFFSET, 255, ref_data.damage_status.packet_size);
101+
}
102+
94103
memcpy(output_array.raw + REF_COMMS_LAUNCHING_STATUS_OFFSET, ref_data.launching_status.raw, ref_data.launching_status.packet_size);
95104
memcpy(output_array.raw + REF_COMMS_PROJECTILE_ALLOWANCE_OFFSET, ref_data.projectile_allowance.raw, ref_data.projectile_allowance.packet_size);
96105
memcpy(output_array.raw + REF_COMMS_RFID_STATUS_OFFSET, ref_data.rfid_status.raw, ref_data.rfid_status.packet_size);
97106
memcpy(output_array.raw + REF_COMMS_KBM_INTERACTION_OFFSET, ref_data.kbm_interaction.raw, ref_data.kbm_interaction.packet_size);
98-
99107
return output_array;
100108
}
101109

@@ -280,6 +288,7 @@ void RefSystem::set_ref_data(Frame& frame, uint8_t raw_buffer[REF_MAX_PACKET_SIZ
280288
break;
281289
case FrameType::DAMAGE_STATUS:
282290
ref_data.damage_status.set_data(frame.data);
291+
damage_status_changed = true;
283292
break;
284293
case FrameType::LAUNCHING_STATUS:
285294
ref_data.launching_status.set_data(frame.data);

src/sensors/RefSystem.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ class RefSystem {
148148
/// @brief Current sequence number. Used to send packets
149149
uint8_t seq = 0;
150150

151+
/// @brief whether we have a new damage status since we last sent ref data to comms
152+
bool damage_status_changed = false;
153+
151154
/// @brief Internal data struct for the RefSystem. This contains all the meta data required to read a frame
152155
struct RefInternalData {
153156
/// @brief Raw buffer to store incoming data

0 commit comments

Comments
 (0)