14 int arraycmp(
const void *p1,
const void *p2);
15 bool is_odd_number(
int n);
16 float get_median(
int n,
float a[]);
34 bool meco_time =
false;
36 bool meco_acc =
false;
38 bool apogee_time =
false;
40 bool apogee_descending =
false;
45 uint32_t get_time_ms();
48 uint32_t before_10Hz_time = 0;
49 uint32_t before_100Hz_time = 0;
50 uint32_t count_100Hz = 0;
54 float ALT_buf_mss[10];
55 float ACC_buf_mss[10];
61 float before_altitude_m = 0;
64 int lift_off_altitude_count = 0;
65 int lift_off_acc_count = 0;
66 int apogee_altitude_count = 0;
67 int meco_acc_count = 0;
70 float lift_off_threshold_altitude_m = 0;
71 float lift_off_threshold_ac_mss = 0;
72 int ALT_oversampling_count = 0;
73 int ALT_threshold_count = 0;
94 float fm_lift_off_threshold_altitude_m = 1.0;
95 float fm_lift_off_threshold_ac_mss = 25.0;
96 int fm_ALT_oversampling_count = 1;
99 float shinsasyo_lift_off_threshold_altitude_m = 0.5;
100 float shinsasyo_lift_off_threshold_ac_mss = 9.0;
101 int shinsasyo_ALT_oversampling_count = 5.0;
102 int shinsasyo_ALT_threshold_count = 2;
153 OPEN_JUDGE open_judge;
154 bool opener_100Hz(
float acceleration_mss,
float altitude_m);
ハイブリッドロケットの開放機構の制御を行うクラス
Definition: Opener.h:22
void init()
Definition: Opener.cpp:54
void manualOpen()
prohibitOpen が無効になっていることを確認し,手動で開放機構を開く.
Definition: Opener.cpp:264
virtual void open()=0
開放機構を開く
void goREADY()
goCHECK()を実行して変数を初期化してから, prohibitOpen を無効化したうえで READY モードへ移行する.
Definition: Opener.cpp:222
uint32_t period_10Hz_ms
opener_10Hz()が適切なタイミングで呼ばれているかの判定に使われる,10Hzの周期
Definition: Opener.h:81
uint32_t get_open_threshold_time_ms()
開放までのタイマーの秒数を取得する.
Definition: Opener.cpp:293
uint32_t open_threshold_time_ms
開放機構の動作にかかる時間を引いた,離床から開放までの時間のシム値[ms]の初期値
Definition: Opener.h:92
virtual void close()=0
開放機構を閉じる
int ACC_threshold_count
閾値以上の加速度が何回連続したときに離床判定・燃焼終了判定を行うかという回数
Definition: Opener.h:85
LIFT_OFF_JUDGE
Definition: Opener.h:132
@ ACCSEN
加速度により離床判定
Definition: Opener.h:136
@ ALTSEN
高度上昇により離床判定
Definition: Opener.h:138
@ NONE
離床判定前
Definition: Opener.h:134
void manualClose()
手動で開放機構を閉じ, prohibitOpen を有効化する.
Definition: Opener.cpp:274
void switch_parameter(SETTING setting)
FMと審査書で閾値を切り替える
Definition: Opener.cpp:36
uint32_t meco_threshold_time_ms
離床判定後,燃焼中と判断し開放判定を行わない時間[ms]
Definition: Opener.h:90
int flight_judgement_duration_ms
離床判定にかかる時間
Definition: Opener.h:87
uint32_t lift_off_time_ms
離床したと推定される時刻(離床判定が行われた時刻ではない)
Definition: Opener.h:162
void set_open_threshold_time_ms(uint32_t _open_threshold_time_ms)
開放までのタイマーの秒数を設定する.
Definition: Opener.cpp:284
bool opener_100Hz(float acceleration_mss, float altitude_m)
100Hzで呼び出す必要がある関数
Definition: Opener.cpp:74
MODE
Definition: Opener.h:121
@ READY
離床判定許可
Definition: Opener.h:125
@ FLIGHT
離床判定後
Definition: Opener.h:127
@ CHECK
離床判定禁止
Definition: Opener.h:123
@ OPENED
開放判定後
Definition: Opener.h:129
uint32_t period_100Hz_ms
opener_100Hz()が適切なタイミングで呼ばれているかの判定に使われる,100Hzの周期
Definition: Opener.h:83
uint32_t get_meco_time_ms()
燃焼終了のタイマーの秒数を取得する.
Definition: Opener.cpp:301
void prohibitOpen()
prohibitOpen を有効化する.
Definition: Opener.cpp:256
SETTING
Definition: Opener.h:111
@ SHINSASYO
閾値を審査書用に設定
Definition: Opener.h:115
@ FM
閾値をフライト用に設定
Definition: Opener.h:113
uint32_t open_time_ms
実際に開放した時刻
Definition: Opener.h:164
void clear_prohibitOpen()
prohibitOpen を無効化する.
Definition: Opener.cpp:249
void goCHECK()
::CHECKモードへ移行する.変数の初期化し,::prohibitOpenを有効化する.
Definition: Opener.cpp:194
float open_threshold_ac_mss
燃焼終了に使われる,加速度の閾値
Definition: Opener.h:79
float open_threshold_altitude_m
頂点判定に使われる,0.1秒間の高度変化の閾値
Definition: Opener.h:77