人工衛星姿勢制御ソフトウェアの 状態遷移表ベース...
Post on 20-Jun-2020
0 Views
Preview:
TRANSCRIPT
Shin-ichiro Sakai, ISAS/JAXA
坂井 真一郎
宇宙航空研究開発機構
宇宙科学研究所
(JAXA/ISAS)
e-mail: sakai@isas.jaxa.jp
人工衛星姿勢制御ソフトウェアの 状態遷移表ベース設計事例
ZIPCユーザーカンファレンス 2011
自己紹介(宇宙科学研究所)
• JAXA所属、宇宙科学の遂行と、そのための人工衛星・探査機・ロケットの研究開発を役割としている。
• ルーツは、東京大学で「ペンシルロケット」を開発した糸川博士の研究室。日本初の人工衛星「おおすみ」の打ち上げなど。
• 宇宙科学・宇宙工学の専門家が混在
• 伝統的に二足のわらじを履いている
–科学衛星・探査機などの企画立案と、そのプロジェクトマネージメント
–その礎となる科学や技術の基礎研究・開発。大学共同利用研究機関としての側面
衛星開発への問題意識(1)
• 宇宙科学の発展、探査機の到達範囲の拡大に伴い、宇宙ミッションは高度化・大規模化の一途を辿っている。
–プロジェクト予算の拡大(数10億→数100億規模)
–開発年数の増大(5年規模→10年規模)
• その負の側面のひとつとして、宇宙科学分野での衛星・探査機打ち上げ頻度が低下する傾向にある。
–かつて :2年前後に一度の打ち上げ
–近い将来 :4-5年に一度の打ち上げ?
Shin-ichiro Sakai, ISAS/JAXA
• それでは、どうするべきか?
–大規模プロジェクトと相補的な、機動力のある中規模プロジェクトを!→500kg級の小型科学衛星”SPRINT”シリーズを開発中
• 開発期間の短縮へ向けて
–重要な点は、科学衛星や探査機は常に”新しい”点。
–従って、毎回目的や要求の全く異なる衛星を、いかに効率よく開発できるかが、が問われている。
衛星開発への問題意識(2)
Shin-ichiro Sakai, ISAS/JAXA
その搭載ソフトウェア開発において、状態遷移表設計手法はひとつの有用な手法と感じている。以下ではその具体的な事例を紹介したい(小型衛星「れいめい」衛星での例)
Shin-ichiro Sakai, ISAS/JAXA
50kg級小型衛星「れいめい(1)
• 50kg級の超小型科学衛星
• オーロラ観測と工学技術実証を目的
• 教育などを目的としたインハウス開発
–若手スタッフ中心、学生も参加
• 2000年頃から設計開始、2005年夏に打ち上げ成功。現在も運用中
• 50kg級衛星としては優れた姿勢制御性能を実現(オーロラ観測のため)
Shin-ichiro Sakai, ISAS/JAXA
50kg級小型衛星「れいめい」(2)
• 衛星を作るのは初めてという若手スタッフが中心(筆者も)、インハウス開発でもあり、新しい試みもいろいろ行われた
50kg級小型衛星「れいめい」(3)
• 開発線表
Shin-ichiro Sakai, ISAS/JAXA
FY00 FY01 FY02 FY03 FY04 FY05
CMD-DEC PM FM
OBC PM FM BBM
IOP PM* FM PM** 基本設計
1次噛み合わせ試験
←
温度試験
総合試験
←
単体振動/衝撃試験
OBCソフト 基本設計 設計/開発/試験
2004.夏~秋 ロケット決定
2005.8打ち上げ!
PM : Prototype Model
FM : Flight Model
50kg級小型衛星「れいめい」(4)
• バイコヌール宇宙基地から打ち上げ(2005年)
Shin-ichiro Sakai, ISAS/JAXA
ロケットは元ICBM.
地下サイロから発射
砂漠の宇宙基地
衛星最終チェックを終えて
Shin-ichiro Sakai, ISAS/JAXA
打ち上げ
γ 2005/8/23 21:9:59(UTC)
655km×609km, i =97.83°
50kg級小型衛星「れいめい」(5)
50kg級小型衛星「れいめい」(6)
Shin-ichiro Sakai, ISAS/JAXA
初期運用は、鹿児島・内之浦にて。打ち上げ成功はロシアからの電話で知る(左上)。数時間後、緊張の第一可視。
Shin-ichiro Sakai, ISAS/JAXA
Aurora Image Library
Shin-ichiro Sakai, ISAS/JAXA
Aurora Image Library
「れいめい」衛星への状態遷移表設計適用
• 筆者自身の専門は制御工学や、宇宙機の姿勢制御。ソフトウェアは専門ではないが、「れいめい」衛星では、搭載姿勢制御ソフトウェアもイチから設計・実装するはめに
• 姿勢制御本来の設計に集中したいが、ソフトウェア設計・実装としてはむしろ、状態の管理やエラーチェック、ソフトウェア構造設計など、それ以外の部分の負担が大きいことに気づく
• 制御本来の機能以外の部分を、極力テンプレート化できないか? → “状態遷移表設計”を導入してみることに(恐らく2002~3年頃)
Shin-ichiro Sakai, ISAS/JAXA
姿勢制御機能と、状態遷移表との親和性
• 宇宙機の姿勢制御においては、元々、地上からのコマンド指示や衛星自身の自律的判断により、時々刻々“制御モード”や“内部状態”が遷移していく構造を持っている。
• 衛星関係者からもしばしば「分かりにくい」と言われる姿勢制御系の挙動。ダイナミクスと密接に関連することが一因だが、その連続的でアナログな姿勢制御系の挙動を、いわば離散的に切り取るツールとして、状態遷移表は適している。
Shin-ichiro Sakai, ISAS/JAXA
「れいめい」姿勢制御系における状態遷移表(1)
• 「れいめい」姿勢制御機能は、「モジュール」と呼ばれる関数の接続により実現されている
• 各モジュールそれぞれには、下図の信号の流れとは別に、”動作指示値”と呼ばれる値が渡されている。
Shin-ichiro Sakai, ISAS/JAXA
フィードバック制御部
磁気トルク制御部
ホイール(モータ) 制御部
制御指令値演算部
「れいめい」姿勢制御系における状態遷移表(2)
• 姿勢制御動作全体の状態を管理する状態遷移表
Shin-ichiro Sakai, ISAS/JAXA
イベント:地上からのコマンドなどに対応
状態 : オーロラ観測用の制御モードなどに対応(ポインティング、磁力線追尾など)
… Pointing Rotation …
SUNACQ … HALT HALT …
POINT … POINT ROTATE …
SUNPT … HALT HALT …
MTRACK … HALT CTRL …
EANGX … FINE HALT …
… … … … …
状態動作指示値
1:TimeUp 4:ToPointing 5:ToRotation 6:ToMagTrack …
SunPoint (処理:SunPoint) 遷移:Pointing 遷移:Rotation (処理:SunPoint) …
SunPointZ (処理:SunPointZ) 遷移:Pointing 遷移:Rotation (処理:SunPointZ) …
Pointing (処理:Pointing) (処理:Pointing)遷移:Rotation 遷移:MagTrack …
Rotation 表遷移:SPIN 遷移:Pointing (処理:Rotation) (処理:Rotation) …
MagTrack 表遷移:SPIN 遷移:Pointing (処理:MagTrack) (処理:MagTrack) …
Event
状態が決まると、各モジュールへの動作指示値がテーブルから読み出される
「れいめい」姿勢制御系における状態遷移表(3)
• 各モジュールも、それぞれ状態遷移表を内包する。前述の“動作指示値”や周辺機器の状態、モジュール内部の状態等によって駆動されている。
• 状態遷移表を駆動する関数はモジュール間で共通。状態遷移表も、モジュール間で共通な部分と固有な部分とに分けられている。
Shin-ichiro Sakai, ISAS/JAXA
• 2階層の状態遷移表が接続されており、また機器状態(モータ回転数など)や衛星ダイナミクス等で状態がそれぞれの状態が遷移していくシステム。シミュレータやツールがないと、挙動の理解が難しい(開発時の苦労)
得られたメリット(1)
• 仕様の漏れ抜け、見える化
–姿勢制御系全体の状態については、従来は主に状態遷移図で管理されていた。これを状態遷移表表現にすることで、より漏れや抜けのない設計が行える。
• 試験すべき内容の整理がしやすい
–姿勢制御系全体の動作にせよ、各モジュール単体の動作にせよ、試験すべき項目をリストアップしやすい(まずは全ての状態遷移を起こすところから考え始められる)
Shin-ichiro Sakai, ISAS/JAXA
得られたメリット(2)
• ソフトウェア単体試験の一部を、自動化可能
–状態遷移表定義と、実際にコーディングされたソフトウェア挙動とを比較する試験用コードを実装、状態遷移表実装および処理部の試験自動化を試みた。
–試験としては有意義だったが、“正解値”の用意が面倒で、思ったより手間がかかった
•制御ソフトウェアはダイナミクスを扱うため、状態の時間的変化が重要になる。ところが、これは状態遷移表を静的に眺めても、理解が難しい(人間にも、ソフトウェアにも)
Shin-ichiro Sakai, ISAS/JAXA
得られたメリット(3-1)
• 2011.2, 「れいめい」衛星搭載の姿勢制御センサ(ジャイロセンサ)が故障、現在これに対応したソフトウェアの改修作業を実施中だが、奇しくもここでも状態遷移表設計の利点を実感
–5年以上前の仕様は(自分で作ったにも関わらず)かなり忘れているが、とりあえず状態遷移表をみれば理解可能
–必要な設計変更のうち、ある範囲については状態遷移表定義の変更だけで対応可能
•表自身の変更については、データだけコマンド送信すればよい。
•イベント発生条件については、コード変更&パッチ送信で対応の必要あり。
Shin-ichiro Sakai, ISAS/JAXA
得られたメリット(3-2)
• 新旧状態遷移表の比較
Shin-ichiro Sakai, ISAS/JAXA
0:NoEvent 1:TimeUp 2:ToSunPoint 3:ToSunPointZ 4:ToPointing 5:ToRotation 6:ToMagTrack 7:ToSunAcq 8:Complete 9:Error
SunPoint (処理:SunPoint) (処理:SunPoint) (処理:SunPoint) 遷移:SunPointZ 遷移:Pointing 遷移:Rotation (処理:SunPoint) 表遷移:SPIN (処理:SunPoint) 表遷移:SPIN
SunPointZ (処理:SunPointZ) (処理:SunPointZ) 遷移:SunPoint (処理:SunPointZ) 遷移:Pointing 遷移:Rotation (処理:SunPointZ) 表遷移:SPIN (処理:SunPointZ) 表遷移:SPIN
Pointing (処理:Pointing) (処理:Pointing) 遷移:SunPoint 遷移:SunPointZ (処理:Pointing) 遷移:Rotation 遷移:MagTrack 表遷移:SPIN (処理:Pointing) 表遷移:SPIN
Rotation (処理:Rotation) 表遷移:SPIN 遷移:SunPoint 遷移:SunPointZ 遷移:Pointing (処理:Rotation) (処理:Rotation) 表遷移:SPIN 遷移:SunPoint (*2) 表遷移:SPIN
MagTrack (処理:MagTrack) 表遷移:SPIN 遷移:SunPoint 遷移:SunPointZ 遷移:Pointing (処理:MagTrack) (処理:MagTrack) 表遷移:SPIN (処理:MagTrack) 表遷移:SPIN
Event (Event番号が小さいものから優先的に処理される。ただし例外的に0は最も優先度が低い)
stat
e
0:NoEvent 1:TimeUp 2:ToSunPoint 3:ToSunPointZ 4:ToPointing 5:ToRotation 6:ToMagTrack 7:ToSunAcq 8:Complete 9:Error 10:Singular
SunPoint (処理:SunPoint) (処理:SunPoint) (処理:SunPoint) 遷移:SunPointZ 遷移:Pointing 遷移:Rotation (処理:SunPoint) 表遷移:SPIN (処理:SunPoint) 表遷移:SPIN 遷移:Singular
SunPointZ (処理:SunPointZ) (処理:SunPointZ) 遷移:SunPoint (処理:SunPointZ) 遷移:Pointing 遷移:Rotation (処理:SunPointZ) 表遷移:SPIN (処理:SunPointZ) 表遷移:SPIN 遷移:Singular
Pointing (処理:Pointing) (処理:Pointing) 遷移:SunPoint 遷移:SunPointZ (処理:Pointing) 遷移:Rotation 遷移:MagTrack 表遷移:SPIN (処理:Pointing) 表遷移:SPIN 遷移:Singular
Rotation (処理:Rotation) 表遷移:SPIN 遷移:SunPoint 遷移:SunPointZ 遷移:Pointing (処理:Rotation) (処理:Rotation) 表遷移:SPIN 遷移:SunPoint (*2)表遷移:SPIN 遷移:Pointing
MagTrack (処理:MagTrack) 表遷移:SPIN 遷移:SunPoint 遷移:SunPointZ 遷移:Pointing (処理:MagTrack) (処理:MagTrack) 表遷移:SPIN (処理:MagTrack) 表遷移:SPIN 遷移:Pointing
Singular 遷移:Back(*3) 表遷移:SPIN 遷移:SunPoint 遷移:SunPointZ 遷移:Pointing 遷移:Rotation 遷移:MagTrack 表遷移:SPIN (処理:Singular) 表遷移:SPIN (処理:Singular)
Eclipse 遷移:Back(*3) 表遷移:SPIN 遷移:SunPoint 遷移:SunPointZ 遷移:Pointing 遷移:Rotation 遷移:MagTrack 表遷移:SPIN (処理:Eclipse) 表遷移:SPIN 遷移:Singular
Event (Event番号が小さいものから優先的に処理される。ただし例外的に0は最も優先度が低い)
stat
e
状態遷移表サイズは大きめに確保していたので、余地へ拡張して新しい状態定義を追加。
必要な関数はパッチで追加(地上からコマンド送信、1kbps以下)
ここまでの試みを踏まえて
• 「れいめい」衛星での経験から、「毎回仕様の違う宇宙機をいかに効率よく開発するか」いう問題に対して、状態遷移表ベース設計の適用はメリットがあると考えている。
• そのために、衛星メーカへの普及を働きかけるべきではないか、と考え始める。
• 但しソフトウェア単体試験の自動化などで苦労した経験からも、なんらかの使いやすいツールの利用が必要と考えていた。
– “ZIPC”にたどり着く
Shin-ichiro Sakai, ISAS/JAXA
ZIPCとの出会い
• 2010.12~2011.3にかけて、「れいめい」衛星姿勢制御系の状態遷移表をZIPCで再現できるか、という試行検討を行った。
• 全体の状態遷移とそれに 従った各モジュール内部の 状態遷移、特に時間推移に 伴う状態遷移まで含めて 一通りの状態遷移挙動が 再現できている (実質作業:2-3ヶ月)
Shin-ichiro Sakai, ISAS/JAXA
main Master (Steady/Spin)
SunAcq 共通部
Point 共通部
Sunpt 共通部
SunAcq 固有部
Point 固有部
Sunpt 固有部
・・・
ZIPCにより再現された「れいめい」状態遷移
ESEC2011での展示
Shin-ichiro Sakai, ISAS/JAXA
ダイナミクス系 (理論モデル)
シミュレーション
状態遷移系 (実装モデル)
シミュレーション
ダイナミクス系で求めた
理論値の妥当性を
状態遷移系の
実装モデルで検証する
時間パラメータの設定
衛星の状態
各コンポーネントの状態
今後の活動
• これまでの活動・成果を踏まえて衛星・宇宙メーカへ向けたデモンストレーションを行い、メーカ視点でみた有用性や課題の整理などを経て、宇宙開発の実際の現場への普及を働きかけていきたいと考えている。
• 目指しているのは、その度に要求・仕様の異なる衛星・宇宙機の開発効率化。具体的には、よりスムーズな設計の理解、設計と対応したブレのない効率的な実装、試験の部分自動化、打ち上げ後の衛星運用支援への適用など。
Shin-ichiro Sakai, ISAS/JAXA
top related