GithubHelp home page GithubHelp logo

ut-issl / c2a-aobc Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 3.0 2.81 MB

C2A for AOCS module

License: MIT License

CMake 0.53% Batchfile 0.18% Shell 0.05% C++ 1.16% C 97.96% Python 0.11%
c2a astrodynamics attitude-control spacecraft

c2a-aobc's People

Contributors

200km avatar chutaro avatar conjikidow avatar hiro-0110 avatar michinarikake avatar ogoogo avatar renovate[bot] avatar seirentdoi avatar seki-hiro avatar sksat avatar sota2811 avatar suzuki-toshihir0 avatar t-hosonuma avatar yukyukhello avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

arkedge sota2811

c2a-aobc's Issues

vcxprojでの不要なコミットを避けるようにする

概要

vcxprojでの不要なコミットを避けるようにする

詳細

こちら参照

close条件

どうなったらcloseできるか

備考

なにかあれば

注意

  • 関連する Projects が存在する場合,それの紐付けを行うこと
  • 可能ならば priority ラベルを付けること
  • 可能ならば Assignees を設定すること
  • close するときは結論を明記すること

BCT情報を不揮発メモリに移動させる

概要

BCT(Block Command Table)情報を不揮発メモリに移動させる

詳細

BCT情報を不揮発メモリに移動させる
詳細はCDHと議論が必要

close条件

不揮発メモリに移動できたら

備考

NA

注意

NA

軌道決定EKFの実装

概要

軌道決定EKFの実装

詳細

GPS-R観測値を利用した軌道決定EKFの実装を行う。

close条件

実装したら

備考

NA

注意

NA

Qmethodの固有方程式求解メソッドが収束しなかったときの挙動を検討する

概要

Qmethodの固有方程式 $Kq=\lambda q$ をニュートン・ラフソン法で解くときに,規定イタレーション回数以内に解が収束しなかったときに,どう処理するかを考える.

詳細

対処法は,大きく分けて

  • その時点の(収束しきっていない)値を使う
  • 使わずに前回値からQuaternion伝搬を行う
    のどちらかになる.元はこのコメント

現時点の議論では、使わずに前回値からQuaternion伝搬を行うが良さそう

close条件

どうなったらcloseできるか

備考

NA

注意

NA

public化前の最終確認

概要

public前の最終確認

詳細

列挙していく

  • バージョン情報の更新
  • secret key設定の解除
  • ライセンス設定
  • disclamerの追加? -> already written in MIT license

close条件

NA

備考

NA

注意

NA

センサ値FDIRの実装

概要

センサ値FDIRの実装

詳細

  • N回連続で上下限値に張り付いた場合に判定
  • N回連続で同じ値になった場合に判定

close条件

実装したら

備考

センサ値としてRW回転数も含める

注意

NA

Q内挿モードで設定する目標Qスカラー部符号のアサーション追加

概要

Q内挿モードで設定する目標Qスカラー部符号のアサーション追加

詳細

Q内挿モードでの目標Q設定コマンドは、スカラー部が正になる前提で作っており、地上局側でコマンド作成時に気をつける必要がある。
搭載側で次のどちらかを実装したほうがユーザーフレンドリー

  • 負の値が来るとコマンドを通さなくする
  • 負の値が来たら強制的に正の値にする

close条件

実装したら

備考

NA

注意

NA

slack通知テスト用のissue作成

概要

slack通知テスト用のissue作成

詳細

詳しく

close条件

どうなったらcloseできるか

備考

なにかあれば

注意

  • 関連する Projects が存在する場合,それの紐付けを行うこと
  • 可能ならば priority ラベルを付けること
  • 可能ならば Assignees を設定すること
  • close するときは結論を明記すること

initialモードのリファクタ

概要

initialモードのリファクタ

詳細

Initialモードのタスクリストにアプリが登録されていることに起因して幾つかの不都合が発生している.Initialモードは地上試験のために存在しているが,その取り扱いを再考する.

  • 地上試験のためのモードに軌道上で入る意味はない
  • MTQが出力している状態で他のモードからInitialモードに遷移すると,MTQが出力されたままになってしまう
  • 試験を行うためにアプリがたくさん呼ばれており,3-3アノマリが出やすくなっている
    • これ自体は大きな問題ではない
  • (セットで呼ばれる想定のMTQのPWM制御と消磁制御のアプリが片方しか呼ばれていない)
    • これはまずアプリ側で対応

close条件

リファクタしたら

備考

NA

注意

NA

緯度経度高度の構造体を作る

概要

緯度経度高度の構造体を作る

詳細

緯度経度高度を個別に扱うより、構造体を作って整理したほうがコードの可読性が上がったり、追加実装がしやすくなる。

close条件

実装したら

備考

NA

注意

NA

SILS用IF_Wrapperのリファクタ

概要

SILS用IF_Wrapperのリファクタ

詳細

イマイチな部分が多いので色々考え直したい。CORE側とも議論が必要かも。
例えば、次のような議論がでていた

  • アサーションエラーを吐かせるか

close条件

リファクタされたら

備考

NA

注意

NA

pid_controlのメンバ変数の秘匿化

概要

pid_controlのメンバ変数の秘匿化

詳細

今の設計だと,PidControlのインスタンスをApp側で持つ,という性質上,previous_obc_timeとかいろいろいじれてしまう
privateなメンバの末尾に _ をつけておくだけでいいと思う.理想的には全部privateにして,getter/setter経由にしておくのが,今後のリファクタなどに強くなる

close条件

実装したら

備考

NA

注意

NA

GPIO IF Wrapperの方針議論

概要

GPIO IF Wrapperの方針議論

詳細

core側も巻き込んで議論したい。
具体的には返り値をどうするかなどがある。

close条件

整理できたら

備考

NA

注意

NA

GPS-R関連のリファクタ

概要

GPS-R関連のリファクタ

詳細

  • GPS時刻構造体を作る
    • Week, msecで独立変数となっているGPS時刻について,Week, msecを統合した構造体を定義する
  • #155
  • #156
  • GPS時刻のspikeフィルタ実装 (含 uint32型spike filter実装)
  • AOCS managerでのreference_jday更新部分を修正する

close条件

リファクタしたら

備考

NA

注意

NA

Driver受信バッファサイズを調整する

概要

Driver受信バッファサイズを調整する

詳細

c2a-coreアップデートにより、Driver受信バッファサイズを細かく設定できるようになった。
メモリの余裕を生むため、INAなどテレメ量が小さなものは小さなサイズ割当するのがよい

close条件

調整したら

備考

NA

注意

NA

温度計に対するフィルタ実装

概要

温度計に対するフィルタ実装

詳細

AOBC温度計、各コンポ内部温度計に対して、スパイクフィルタを実装する

close条件

実装したら

備考

センサの温度補正は範囲外の温度が来たら補正しないようなアルゴリズムになっているので、このフィルタがなくてもオンボード計算でトラブルが起きることはない

注意

NA

TLE設定コマンドのアサーションを実装する

概要

TLE設定コマンドのアサーションを実装する

詳細

現状、おかしなTLEを地上局からアップリンクすると、軌道計算が異常になる可能性がある。
搭載側で異常検知すれば運用側のミスを防げる

close条件

実装したら

備考

NA

注意

NA

AOCS_ERROR enumの使い方ルールを定める

概要

AOCS_ERROR enumの使い方ルールを定める

詳細

AOCS_ERROR enumの使い方について、返り値として適用して良い範囲などを議論し、ルールを作る

close条件

ルールを作ったら

備考

NA

注意

NA

ユリウス日定義の明確化と変更

概要

ユリウス日定義の明確化と変更

詳細

搭載S/Wで使われているユリウス日のうるう秒の扱いについて定義を明確化にして変更する。
地上側でケアして運用すれば問題ないが、どの定義にしたほうが運用が楽になるかを考えて修正する。

close条件

修正したら

備考

NA

注意

NA

PPS信号割り込みシステム実装

概要

PPS信号割り込みシステム実装

詳細

  • PIC の割り込みピンに入力される信号を取得できるようにする.
  • PPS と GPS time との紐づけもしたい(reference_jday の補正項をこれで変える? TBD)
  • PPS が来ない場合の処理なども考慮

close条件

実装完了したら

備考

NA

注意

NA

IGRF係数テーブルの外部書換えIFを追加する

概要

IGRF係数テーブルの外部書換えIFを追加する

詳細

src\src_user\library\geomagnetism.cの,GEOMAGNETISM_Coeffs geomag_coeffとして定義されている係数テーブル内の各値をCMD等をトリガにして書換える機能を追加する

close条件

実装したら

備考

2025年がIGRFアップデートタイミング

注意

NA

vMicroでのビルド・実行確認

概要

vMicroでのビルド・実行確認

詳細

GitHub移行後、vMicroでのビルド・実行確認

close条件

GitHub移行後、vMicroでのビルド・実行確認できたら

備考

NA

注意

NA

GPS-Rテレメ保存コマンドの必要性を議論する

概要

GPS-Rテレメ保存コマンドをテレメトリ設定コマンドと一緒にできないか議論する

詳細

こちらの議論参照

close条件

どうなったらcloseできるか

備考

なにかあれば

注意

  • 関連する Projects が存在する場合,それの紐付けを行うこと
  • 可能ならば priority ラベルを付けること
  • 可能ならば Assignees を設定すること
  • close するときは結論を明記すること

memcpyをエンディアンに左右されないようにする

概要

memcpyをエンディアンに左右されないようにする

詳細

MOBCはビッグエンディアン
AOBCはリトルエンディアン
AOCSコンポはビッグとリトルが混在
という状況で、memcpyをした時に適切なコピーができるような枠組みを作る。現状のendian_memcpyだけでは対応できない。

COREの修正が必要なのかもしれない

close条件

NA

備考

NA

注意

NA

Pytestが実行できる体制を整える

概要

Pytestが実行できる体制を整える

詳細

Pytestが実行できる体制を整える

close条件

  • Pytestを実装していく
  • CIに組み込む

備考

NA

注意

NA

MTQ関連コードのリファクタリング

概要

MTQ関連コードのリファクタリング

詳細

大きく次の2つが関係する

  • MTQ/磁気センサ排他制御の管理方法
  • MTQドライバ周りのバグ調査
  • MTQドライバでstep_time_msが負にならないことを保証するようにする

close条件

リファクタできたら

備考

NA

注意

NA

テレメトリDBの細かな修正

概要

テレメトリDBの細かな修正

詳細

  • AOBC_COMPONENTSでOEM以降のインデントを整理する
  • AOBC_COMPONENTSでSTATUS表示が一部反映されていない部分をSTATUS表示にする

close条件

修正したら

備考

NA

注意

NA

アンローディングで最小出力トルクを定義する

概要

アンローディングで最小出力トルクを定義する

詳細

今の実装では、回転数が目標値に限りなく近づいた時に出力トルクが0に近くなって結局アンローディングが終わらずにずっとアンローティングが続くみたいなことになる可能性がゼロではない。
そうならないようにアンローディング中に出力する最小トルク(このトルク以上はからなず出力する)というのは定めても良いかもしれない。

close条件

実装したら

備考

NA

注意

NA

CCP_CmdRetのerr_codeの整理

概要

CCP_CmdRetのerr_codeの整理

詳細

c2a-coreアップデートにより、コマンドの返り値が CCP_EXEC_STS から CCP_CmdRet という構造体になった

ut-issl/c2a-core#417

現在はCCP_make_cmd_ret_without_err_codeに置き換えている。必要に応じて、各場所でerr_codeを付加する。

close条件

整理したら

備考

NA

注意

NA

32bit CRC計算をcoreに移す

概要

32bit CRC計算をcoreに移す

詳細

src_core/Library/CRCに32bitCRCの計算を追加し,oem7600_driverローカルのCRC計算を削除する.
その際,計算方法はtable look up形式に変更する.

close条件

移したら

備考

NA

注意

NA

サンセンサリセットBCの修正

概要

サンセンサリセットBCの修正

詳細

ON/OFF BC登録時にcombineを使ってしまっている部分をdeployに修正する。

close条件

修正したら

備考

NA

注意

NA

衛星プロジェクトが変わった場合にパラメータ変更できるようにする

概要

衛星プロジェクトが変わった場合にパラメータ変更できるようにする

詳細

対応すべきパラメータ

  • ゲイン、慣性テンソル、軌道、時刻
  • I2Cアドレス
    • I2Cアドレスについては、コマンドで変更できるようにするかも合わせて検討する

(より詳細はすべて抜き出したファイルを @200km が作っている)

次のように議論が進んでいる

  • 変更パラメータを集めたディレクトリを作る
  • ディレクトリにパラメータをマクロで定義したデフォルトヘッダファイルを作る
  • そのヘッダを読み出してパラメータを設定するようにする
  • CMakeファイルで変更パラメータを集めたディレクトリへのパスを設定できるようにする
  • 衛星プロジェクト専用のレポジトリを作り、プロジェクト毎にパラメータを変更できるように設定する

close条件

実装したら

備考

過去議論していたリンク

https://gitlab.com/ut_issl/c2a/c2a_issl6u_aobc/-/issues/280

注意

NA

バス側OBC or 地上局関連アノマリ検知実装

概要

バス側OBC or 地上局関連アノマリ検知実装

詳細

CRCチェックなどを行うかどうか、やってもELのみでEHは実行しない(AOBCがMOBCの電源を切ったりはできない)

close条件

実装したら

備考

NA

注意

NA

コーディングルール適合のための修正

概要

コーディングルール適合のための修正

詳細

  • rad_secとrad_sの表記ブレをrad_sに統一する
  • AOCS_MANAGERの接頭辞が抜けているのを治す

close条件

修正したら

備考

NA

注意

NA

TRIADでの太陽が不可視であるときの姿勢決定手法を考える

概要

TRIADでの太陽が不可視であるときの姿勢決定手法を考える

詳細

太陽が不可視であるときに,以下のどちらで姿勢決定すればよいか考える.

  • 磁気センサの情報も捨ててQuaternionをジャイロで伝搬する
  • 太陽方向をジャイロで伝搬し、磁気センサ情報は使ってTRIADで姿勢決定する

今は前者になっているが、後者のほうが磁気センサ情報を使っているという観点で、精度が良い場合もある。

close条件

NA

備考

NA

注意

NA

精三軸モード遷移完了コマンド送信タイミングの修正

概要

精三軸モード遷移完了コマンド送信タイミングの修正

詳細

モード遷移完了判定の第一引数がOBCT_sec2cycle(timing_sec)ではなくtiming_secとなっている.意図したよりも早くモード遷移完了判定が出る可能性がある.
精三軸モードではその後モード遷移コマンドを打つ可能性も低いので,モード遷移完了判定が早まったとしても大きな問題にはならなそうであるが,修正する.

close条件

修正したら

備考

NA

注意

NA

Sagitta関連のリファクタ

概要

Sagitta関連のリファクタ

詳細

  • #176
      - ローカルでは実装済み
  • キャスト不具合修正
  • バッファサイズの調整
  • bootしたかどうかのフラグ管理方法の見直し
  • the centroids valuesthe histogram dataのテレメを下ろす
  • エラーフラグFDIRの実装検討

close条件

リファクタしたら

備考

NA

注意

NA

ユニット-ボディの座標変換実装

概要

ユニット-ボディの座標変換実装

詳細

これまではbody座標とユニット座標が一致していたが、そうでない衛星で一括変換できるようにしたい

close条件

実装したら

備考

NA

注意

NA

精三軸姿勢決定で時刻差が大きい場合のアサーションを追加する

概要

精三軸姿勢決定で時刻差が大きい場合のアサーションを追加する

詳細

fine_three_axis_determination.cのアプリでAOBC初期化時にアプリ内時刻が初期化される.そのまま精三軸モードに移行すると,姿勢伝播のための時刻差が大きくなり,推定姿勢が大きな誤差を持ってしまう.時刻差が大きい場合のアサーションを追加する.

現在はモード遷移時にアプリ初期化コマンドを打つことで対処している。

時刻差をとる動作を関数化して,一括でアサーションをかける方針のほうが良いかもしれない

close条件

修正したら

備考

NA

注意

NA

優先度の低かったコンポーネントコマンドの実装を再検討する

概要

優先度の低かったコンポーネントコマンドの実装を再検討する

詳細

コマンド数の制限から優先度の低いコマンドは実装していなかったが、メモリに余裕が出てきてコマンド数が増やせそうなので再検討しても良いかも
例えば、RWのdiagnoseコマンド など

close条件

NA

備考

NA

注意

NA

EL, EHのグループ分けを再考する

概要

EL, EHのグループ分けを再考する

詳細

ELのenable, disableを簡便にするため、コンポごとのELはEL_GROUP_ERROR_コンポ名でなるべく統一し、noteのコンポ名_EL_NOTEでそのEL内容を区別する方針であった。ただし、EL_GROUP_ERROR_コンポ名でまとめ過ぎてしまうと想定しない挙動が起こりうるため、再考する。

現状の問題点

STIM210のCRCエラーはgroup=EL_GROUP_ERROR_STIM210, local=STIM210_IDX_IN_UNIT, err_level=EL_ERROR_LEVEL_HIGHのELに対して、電源リセット->電源OFFのEH対処を行う。一方、STIM210フィルタのエラーも同一のgroup, local, err_levelに対してEL登録されうる。フィルタエラーはすでに飛び値除去の処理が行われているため、EH対応はしないという方針であったが、共通のEL_groupを使用しているために、意図しない挙動をする可能性がある。

EL(group, local, level, note)のgroupを区別する理由
  • noteで詳細を書きたい (localはコンポidxに使用)
    • ex.TLMエラー
  • EHの対処が異なる(EH1つに対しEL(group, local, level)1つが必要)
    • CRCは基本電源リセットし続ける
    • OCは電源リセットを試し、復帰しなければ電源OFF
  • EHで対処しないEL
    • ex.飛び値除去イベント
    • ex.モード遷移イベント
今後のEL group方針案
  • EHの対処が異なるものはELが別で必要なため、まとめない
    • CRCのEL groupは別にする
  • EH対処が同一なものをまとめるかどうかは要検討
  • EH対処しないものはなるべくまとめる
    • ELのenable, disableの手間を減らす

その他関連する調整事項

  • RWのCRCはEL HIGHで登録されているが,テレメが正常に受け取れていたとしても,低頻度に発生するため,LOWで良さそう.
  • 他にもELのレベルが妥当かどうかをSPHERE運用を踏まえて再考する.
  • HKにEH Group情報を入れるかどうかも検討する

close条件

  • 方針が決まったら

備考

ローカルでの詳細議論
https://gitlab.com/ut_issl/c2a/c2a_issl6u_aobc/-/issues/229

注意

NA

太陽指向制御での中間軸指向を実装する

概要

太陽指向制御での中間軸指向を実装する

詳細

今はゲイン調整の関係上、機体固定座標の基底軸にしか太陽を持ってこれない。
殆どの衛星ではこれで問題ないはずだが、中間軸も定義できると便利かもしれない

close条件

実装したら

備考

NA

注意

NA

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.