Opener
|
ハイブリッドロケットの開放機構の制御を行うクラス More...
#include <Opener.h>
Public Types | |
enum | SETTING { FM , SHINSASYO } |
enum | MODE { CHECK , READY , FLIGHT , OPENED } |
enum | LIFT_OFF_JUDGE { NONE , ACCSEN , ALTSEN } |
Public Member Functions | |
void | switch_parameter (SETTING setting) |
FMと審査書で閾値を切り替える | |
void | init () |
void | goCHECK () |
::CHECKモードへ移行する.変数の初期化し,::prohibitOpenを有効化する. | |
void | goREADY () |
goCHECK()を実行して変数を初期化してから, prohibitOpen を無効化したうえで READY モードへ移行する. | |
void | clear_prohibitOpen () |
prohibitOpen を無効化する. | |
void | prohibitOpen () |
prohibitOpen を有効化する. | |
void | manualOpen () |
prohibitOpen が無効になっていることを確認し,手動で開放機構を開く. | |
void | manualClose () |
手動で開放機構を閉じ, prohibitOpen を有効化する. | |
bool | opener_100Hz (float acceleration_mss, float altitude_m) |
100Hzで呼び出す必要がある関数 More... | |
void | set_open_threshold_time_ms (uint32_t _open_threshold_time_ms) |
開放までのタイマーの秒数を設定する. More... | |
uint32_t | get_open_threshold_time_ms () |
開放までのタイマーの秒数を取得する. More... | |
uint32_t | get_meco_time_ms () |
燃焼終了のタイマーの秒数を取得する. More... | |
Public Attributes | |
enum OPENER::MODE | mode = CHECK |
enum OPENER::LIFT_OFF_JUDGE | lift_off_judge = NONE |
OPEN_JUDGE | open_judge |
uint32_t | lift_off_time_ms |
離床したと推定される時刻(離床判定が行われた時刻ではない) | |
uint32_t | open_time_ms |
実際に開放した時刻 | |
Protected Member Functions | |
virtual void | open ()=0 |
開放機構を開く | |
virtual void | close ()=0 |
開放機構を閉じる | |
Protected Attributes | |
float | open_threshold_altitude_m = 0.5 |
頂点判定に使われる,0.1秒間の高度変化の閾値 | |
float | open_threshold_ac_mss = 7 |
燃焼終了に使われる,加速度の閾値 | |
uint32_t | period_10Hz_ms = 150 |
opener_10Hz()が適切なタイミングで呼ばれているかの判定に使われる,10Hzの周期 | |
uint32_t | period_100Hz_ms = 20 |
opener_100Hz()が適切なタイミングで呼ばれているかの判定に使われる,100Hzの周期 | |
int | ACC_threshold_count = 5 |
閾値以上の加速度が何回連続したときに離床判定・燃焼終了判定を行うかという回数 | |
int | flight_judgement_duration_ms = ACC_threshold_count * 100 |
離床判定にかかる時間 | |
uint32_t | meco_threshold_time_ms = 5000 |
離床判定後,燃焼中と判断し開放判定を行わない時間[ms] | |
uint32_t | open_threshold_time_ms = 11000 |
開放機構の動作にかかる時間を引いた,離床から開放までの時間のシム値[ms]の初期値 | |
float | fm_lift_off_threshold_altitude_m = 1.0 |
float | fm_lift_off_threshold_ac_mss = 25.0 |
int | fm_ALT_oversampling_count = 1 |
int | fm_ALT_threshold_count = ACC_threshold_count |
float | shinsasyo_lift_off_threshold_altitude_m = 0.5 |
float | shinsasyo_lift_off_threshold_ac_mss = 9.0 |
int | shinsasyo_ALT_oversampling_count = 5.0 |
int | shinsasyo_ALT_threshold_count = 2 |
ハイブリッドロケットの開放機構の制御を行うクラス
enum OPENER::MODE |
enum OPENER::SETTING |
uint32_t OPENER::get_meco_time_ms | ( | ) |
燃焼終了のタイマーの秒数を取得する.
uint32_t OPENER::get_open_threshold_time_ms | ( | ) |
開放までのタイマーの秒数を取得する.
void OPENER::init | ( | ) |
初期化(myOpenerクラスでオーバーライドするときは必ず OPENER::init() を呼び出すこと) myOpenerでハードウェアの初期化をしたあと,OPENERで状態を初期化して閉鎖するため
bool OPENER::opener_100Hz | ( | float | acceleration_mss, |
float | altitude_m | ||
) |
100Hzで呼び出す必要がある関数
acceleration_mss | 機軸方向の加速度[m/s^2](ランチャ上で重力加速度がかかって正の値をとる方向) |
altitude_m | 高度[m](基準高度は任意) |
void OPENER::set_open_threshold_time_ms | ( | uint32_t | _open_threshold_time_ms | ) |
開放までのタイマーの秒数を設定する.
_open_threshold_time_ms | 開放機構の動作にかかる時間を引いた,離床から開放までの時間のシム値[ms] |