Skip to content

Commit 0521b12

Browse files
authored
Merge pull request #215 from Alpha-CubeSat/final_upload
final updates
2 parents 681850c + 55fad72 commit 0521b12

File tree

8 files changed

+36
-58
lines changed

8 files changed

+36
-58
lines changed

src/MainControlLoop.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ MainControlLoop::MainControlLoop()
1717
burnwire_control_task(),
1818
camera_control_task(),
1919
rockblock_control_task(),
20-
eeprom_control_task(), // TODO review
20+
eeprom_control_task(),
2121
mission_manager(),
2222
clock_manager()
2323
{

src/MissionMode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ void exit_armed_phase(MissionMode *mode)
522522

523523
void exit_insun_phase()
524524
{
525-
if ((sfr::temperature::temp_c_average->is_valid() && sfr::temperature::in_sun) ||
525+
if (((sfr::temperature::temp_c_average->is_valid() && sfr::temperature::in_sun) && (sfr::current::solar_current_average->is_valid() && sfr::current::in_sun)) ||
526526
(!sfr::temperature::temp_c_average->is_valid() && sfr::current::solar_current_average->is_valid() && sfr::current::in_sun) ||
527527
(!sfr::temperature::temp_c_average->is_valid() && !sfr::current::solar_current_average->is_valid())) {
528528
sfr::mission::current_mode = sfr::mission::bootSensors;

src/Monitors/IMUMonitor.cpp

Lines changed: 16 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,9 @@ void IMUMonitor::imu_offset()
205205
sfr::imu::mag_z_value->set_value(mag_z - mag_zoffset);
206206

207207
// make gyro aligh with mag coor
208-
sfr::imu::gyro_x_value->set_value(-(gyro_x - (-0.02297)));
209-
sfr::imu::gyro_y_value->set_value(gyro_y - (0.03015));
210-
sfr::imu::gyro_z_value->set_value(gyro_z - (-0.01396));
208+
sfr::imu::gyro_x_value->set_value(-(gyro_x - (-0.001216)));
209+
sfr::imu::gyro_y_value->set_value(gyro_y - (0.116));
210+
sfr::imu::gyro_z_value->set_value(gyro_z - (0.0133));
211211
}
212212

213213
// generate a normal random variable using Box-Muller transform
@@ -354,43 +354,20 @@ void IMUMonitor::capture_imu_values()
354354
gyro_z = 0;
355355
}
356356

357-
// Pass sensor data / output of plant into ekf
358-
ekfObj.Z(0) = mag_x;
359-
ekfObj.Z(1) = mag_y;
360-
ekfObj.Z(2) = mag_z;
361-
ekfObj.Z(3) = gyro_x;
362-
ekfObj.Z(4) = gyro_y;
363-
ekfObj.Z(5) = gyro_z;
364-
365-
ekfObj.step();
366-
367-
#ifdef IMU_TESTING
368-
Serial.print(ekfObj.state(0));
369-
Serial.print(", ");
370-
Serial.print(ekfObj.state(1));
371-
Serial.print(", ");
372-
Serial.print(ekfObj.state(2));
373-
Serial.print(", ");
374-
Serial.print(ekfObj.state(3));
375-
Serial.print(", ");
376-
Serial.print(ekfObj.state(4));
377-
Serial.print(", ");
378-
Serial.println(ekfObj.state(5));
379-
#endif
380-
// update the EKFed values
381-
sfr::imu::mag_x_value->set_value(ekfObj.state(0));
382-
sfr::imu::mag_y_value->set_value(ekfObj.state(1));
383-
sfr::imu::mag_z_value->set_value(ekfObj.state(2));
384-
sfr::imu::gyro_x_value->set_value(ekfObj.state(3));
385-
sfr::imu::gyro_y_value->set_value(ekfObj.state(4));
386-
sfr::imu::gyro_z_value->set_value(ekfObj.state(5));
357+
// add reading to buffer
358+
sfr::imu::mag_x_value->set_value(mag_x);
359+
sfr::imu::mag_y_value->set_value(mag_y);
360+
sfr::imu::mag_z_value->set_value(mag_z);
361+
sfr::imu::gyro_x_value->set_value(gyro_x);
362+
sfr::imu::gyro_y_value->set_value(gyro_y);
363+
sfr::imu::gyro_z_value->set_value(gyro_z);
387364

388365
// Add offset readings to buffer
389-
sfr::imu::mag_x_average->set_value(ekfObj.state(0));
390-
sfr::imu::mag_y_average->set_value(ekfObj.state(1));
391-
sfr::imu::mag_z_average->set_value(ekfObj.state(2));
366+
sfr::imu::mag_x_average->set_value(mag_x);
367+
sfr::imu::mag_y_average->set_value(mag_y);
368+
sfr::imu::mag_z_average->set_value(mag_z);
392369
// used outside of ACS Control Task to determine exit conditions for Detumble Spin
393-
sfr::imu::gyro_x_average->set_value(ekfObj.state(3));
394-
sfr::imu::gyro_y_average->set_value(ekfObj.state(4));
395-
sfr::imu::gyro_z_average->set_value(ekfObj.state(5));
370+
sfr::imu::gyro_x_average->set_value(gyro_x);
371+
sfr::imu::gyro_y_average->set_value(gyro_y);
372+
sfr::imu::gyro_z_average->set_value(gyro_z);
396373
}

src/Monitors/TemperatureMonitor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ void TemperatureMonitor::execute()
1111
sfr::temperature::temp_c_value->set_value(val);
1212

1313
if (sfr::temperature::temp_c_average->get_value(&val)) {
14-
sfr::temperature::in_sun = val >= constants::temperature::in_sun_val;
14+
sfr::temperature::in_sun = val >= sfr::temperature::in_sun_val;
1515
} else {
1616
sfr::temperature::in_sun = false;
1717
}

src/Pins.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ void Pins::setInitialPinStates()
4545
Pins::setPinState(constants::camera::power_on_pin, LOW);
4646
Pins::setPinState(constants::camera::rx, LOW);
4747
Pins::setPinState(constants::camera::tx, LOW);
48-
Pins::setPinState(constants::acs::STBXYpin, HIGH);
49-
Pins::setPinState(constants::acs::STBZpin, HIGH);
48+
Pins::setPinState(constants::acs::STBXYpin, LOW);
49+
Pins::setPinState(constants::acs::STBZpin, LOW);
5050
Pins::setPinState(constants::burnwire::first_pin, LOW);
5151
Pins::setPinState(constants::burnwire::second_pin, LOW);
5252
Pins::setPinState(constants::rockblock::sleep_pin, LOW);

src/constants.hpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,12 @@ namespace constants {
8989
} // namespace rockblock
9090
namespace temperature {
9191
constexpr int pin = 39;
92-
constexpr int in_sun_val = 30;
9392
constexpr int min_temp_c = -100;
9493
constexpr int max_temp_c = 200;
9594
} // namespace temperature
9695
namespace current {
9796
constexpr int pin = 22;
98-
constexpr float in_sun_val = 70; // mA
97+
constexpr float in_sun_val = 50; // mA
9998
constexpr int load = 30; // load resister value (kOhm)
10099
constexpr float shunt = 0.1; // shunt resistor value (Ohm)
101100
} // namespace current
@@ -219,9 +218,9 @@ namespace constants {
219218
constexpr float temp_z_c = -1.7573124306246634684924856628641;
220219

221220
// Hard Iron Offsets
222-
constexpr float hardiron_x = 21.463;
223-
constexpr float hardiron_y = 25.745;
224-
constexpr float hardiron_z = -11.539;
221+
constexpr float hardiron_x = 31.5;
222+
constexpr float hardiron_y = 14.5;
223+
constexpr float hardiron_z = -6.0;
225224

226225
// Starshot
227226
constexpr float step_size_input = 0.10;
@@ -261,8 +260,8 @@ namespace constants {
261260
constexpr float min_mag = -150;
262261
constexpr float max_mag = 150;
263262

264-
constexpr float min_gyro = -5;
265-
constexpr float max_gyro = 5;
263+
constexpr float min_gyro = -10;
264+
constexpr float max_gyro = 10;
266265

267266
constexpr int CSAG = 21;
268267
constexpr int CSM = 20;
@@ -293,7 +292,7 @@ namespace constants {
293292
static constexpr unsigned int dynamic_data_start = 10;
294293
static constexpr unsigned int sfr_data_start = 460;
295294
static constexpr unsigned int sfr_store_size = 5;
296-
static constexpr unsigned int sfr_num_fields = 93;
295+
static constexpr unsigned int sfr_num_fields = 94;
297296
static constexpr unsigned int sfr_data_full_offset = sfr_num_fields * sfr_store_size + 4;
298297
static constexpr unsigned int write_age_limit = 95000; // Must be less than 100000
299298

src/sfr.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ namespace sfr {
44
namespace stabilization {
55
// OP Codes 1100
66
// TODO actual default value
7-
SFRField<uint32_t> max_time = SFRField<uint32_t>(2 * constants::time::one_hour, 0x1100);
7+
SFRField<uint32_t> max_time = SFRField<uint32_t>(5 * constants::time::one_second, 0x1100);
88
} // namespace stabilization
99
namespace boot {
1010
// OP Codes 1200
11-
SFRField<uint32_t> max_time = SFRField<uint32_t>(2 * constants::time::one_hour, 0x1200);
11+
SFRField<uint32_t> max_time = SFRField<uint32_t>(1 * constants::time::one_hour, 0x1200);
1212
} // namespace boot
1313
namespace detumble {
1414
// OP Codes 1500
@@ -111,12 +111,12 @@ namespace sfr {
111111
// OP Codes 1900
112112
SFRField<uint16_t> attempts = SFRField<uint16_t>(0, 0x1900);
113113
SFRField<uint16_t> mode = SFRField<uint16_t>((uint16_t)burnwire_mode_type::standby, 0x1901);
114-
SFRField<uint16_t> attempts_limit = SFRField<uint16_t>(10, 0x1902);
114+
SFRField<uint16_t> attempts_limit = SFRField<uint16_t>(11, 0x1902);
115115
SFRField<uint16_t> mandatory_attempts_limit = SFRField<uint16_t>(2, 0x1903);
116116
SFRField<uint32_t> start_time = SFRField<uint32_t>(0, 0x1904);
117117
SFRField<uint32_t> burn_time = SFRField<uint32_t>(600, 0, 5 * constants::time::one_second, 0x1905);
118118
SFRField<uint32_t> armed_time = SFRField<uint32_t>(48 * constants::time::one_hour, 0, 12 * constants::time::one_hour, 0x1906);
119-
SFRField<uint32_t> delay_time = SFRField<uint32_t>(constants::time::one_second, 0x1907);
119+
SFRField<uint32_t> delay_time = SFRField<uint32_t>(5 * constants::time::one_second, 0x1907);
120120
} // namespace burnwire
121121
namespace camera {
122122
// OP Codes 2000
@@ -203,6 +203,7 @@ namespace sfr {
203203
namespace temperature {
204204
// OP Codes 2300
205205
SFRField<bool> in_sun = SFRField<bool>(false, 0x2300);
206+
SFRField<uint8_t> in_sun_val = SFRField<uint8_t>(23, 0x2301);
206207

207208
SensorReading *temp_c_average = new SensorReading(fault_groups::power_faults::temp_c_average, 1500, constants::temperature::min_temp_c, constants::temperature::max_temp_c);
208209
SensorReading *temp_c_value = new SensorReading(fault_groups::power_faults::temp_c_value, 1, constants::temperature::min_temp_c, constants::temperature::max_temp_c);
@@ -264,8 +265,8 @@ namespace sfr {
264265
{constants::camera::rx, LOW},
265266
{constants::camera::tx, LOW},
266267
{constants::button::button_pin, HIGH},
267-
{constants::acs::STBXYpin, HIGH},
268-
{constants::acs::STBZpin, HIGH},
268+
{constants::acs::STBXYpin, LOW},
269+
{constants::acs::STBZpin, LOW},
269270
{constants::burnwire::first_pin, LOW},
270271
{constants::burnwire::second_pin, LOW},
271272
{constants::rockblock::sleep_pin, LOW}};

src/sfr.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ namespace sfr {
224224
namespace temperature {
225225
// OP Codes 2300
226226
extern SFRField<bool> in_sun;
227+
extern SFRField<uint8_t> in_sun_val;
227228

228229
extern SensorReading *temp_c_average;
229230
extern SensorReading *temp_c_value;

0 commit comments

Comments
 (0)