|
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] |