-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
STTテレメの追加 #137
STTテレメの追加 #137
Conversation
テレメDBの更新と実機検証をこの後実施するためWIPとしていますが、ドライバ部分の更新は完了しているので、もしお手隙のタイミングあればご確認お願いします。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
とりあえず現時点で気になる部分にコメントをつけました。
詳細はテレコマ修正や試験後にみます。
src/src_user/Settings/TlmCmd/DataBase/TLM_DB/calced_data/ISSL6U_AOBC_TLM_DB_AOBC_SAGITTA1.csv
Outdated
Show resolved
Hide resolved
src/src_user/Settings/TlmCmd/DataBase/TLM_DB/calced_data/ISSL6U_AOBC_TLM_DB_AOBC_SAGITTA4.csv
Outdated
Show resolved
Hide resolved
src/src_user/Settings/TlmCmd/DataBase/TLM_DB/calced_data/ISSL6U_AOBC_TLM_DB_AOBC_SAGITTA4.csv
Outdated
Show resolved
Hide resolved
検証結果に記載のとおり、テレメが下りてくることを確認しました。ただし、histogram, centroids, matchedstarsは、それぞれdata部分のサイズが144, 146, 321であり、bufferが溢れています。 このPRでは、histogram, centroids, matchedstarsに関する部分はコメントアウトし、#39 対応後にコメントアウトを外す方針にしたいです。 メモ:現在の受信バッファサイズは、 |
firmwareがアップデートされたことに伴い、既存のパラメータだと検証ができなかったので、commit 06abd52 を加えています。 そのほかのfirmware update対応は別issue https://github.com/ut-issl/6u-aocs-task/issues/41 を切ったので、そちらで行いたいと思います。 |
POWERの単位・-1埋めされる理由・cmos tempが271degCである理由はメーカーに確認中です。 |
@chutaro テレコマの変更一旦pushしたので、コンフリクト解除お願いします。 |
eab945d
to
02623ca
Compare
@seki-hiro コンフリクト解消できた気がします。 |
@chutaro ありがとうございます! |
とのことなので、CMOSテレメはテレコマの方でコメントアウトします。
テレコマをメーカーに送信してみてもらっているところですが、テレコマフレーム自体には問題なく、中身の値の問題なので、別issueで切り出したいと思います。 #160 |
@200km テレコマ回りのマージが遅いとコンフリクトを起こしやすいので、なるべくissueにきりだして、動くところは先にマージしたいと思います。再度レビューお願いします。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
一点だけ気になる点がありました。他は小さなコメントなので問題ないと思います。
次の修正でapproveになると思います。
src/src_user/Drivers/Aocs/sagitta.h
Outdated
float mcu_voltage_V; //!< Voltage over the MCU [V] | ||
float fpga_core_current_A; //!< Current used by the FPGA core [A] | ||
float fpga_core_voltage_V; //!< Voltage over the FPGA core [V] | ||
float fpga_18_current_A; //!< Current used by the FPGA18 [A] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Q] この18というのは、FPGAの1.8V電源系統という意味ですかね?同様にその下の25は2.5V系統?この辺り分かっていたら、電圧の正常値がなんなのかというのがわかりそうです。
あと、全体的にコメントの //!<
のインデントを揃えてもらえると綺麗かなと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
メーカーから、正常値の例が送られてきています。それを見る限り、確かに18は1.8V, 25は2.5Vに相当しそうです。
インデント揃えました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
それを見る限り、確かに18は1.8V, 25は2.5Vに相当しそうです
それであれば、コメントも FPGA1.8V系統
などの書き方が良いように思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらも修正しました
src/src_user/Drivers/Aocs/sagitta.c
Outdated
@@ -111,58 +115,47 @@ DS_INIT_ERR_CODE SAGITTA_init(SAGITTA_Driver* sagitta_driver, uint8_t ch, DS_Str | |||
SAGITTA_load_driver_super_init_settings_); | |||
if (ret != DS_ERR_CODE_OK) return DS_INIT_DS_INIT_ERR; | |||
|
|||
sagitta_driver->info.quaternion_i2c = QUATERNION_make_unit(); | |||
sagitta_driver->info.quaternion_i2b = QUATERNION_make_unit(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[MUST] ここ、二行下の下記の記述から書き換わっているのは間違いなのでは?と思いました。ここの意図としてはquaternion_i2c
とquaternion_i2b
が矛盾なく値が入るべきという意図になっています。
sagitta_driver->info.quaternion_i2b = QUATERNION_product(sagitta_driver->info.quaternion_i2c,
sagitta_driver->info.frame_transform_c2b);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
info.telemetry.solution.quaternion_i2c
はあくまでテレメの一つなので、memset(&(sagitta_driver->info.telemetry), 0x00, sizeof(sagitta_driver->info.telemetry));
で他のテレメ群と一緒に0埋めする方が自然かと思いそうしています。
実際にテレメが来た時に
sagitta_driver->info.quaternion_i2b = QUATERNION_product(sagitta_driver->info.telemetry.solution.quaternion_i2c,
sagitta_driver->info.frame_transform_c2b);
で対応関係が取られます。テレメが来ていない、かつDI側でsagitta_driver->info.frame_transform_c2b
に正しい座標変換が入る前の初期化の時点で、矛盾なく値が入っている必要はないかと思いますが、いかがでしょうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
前の実装意図は、
- quaternionが全て0になるというのはあり得ないので、quaternion_i2cを0埋めするのは不自然である。よって(0,0,0,1)にしている
- quaternion_i2cに値が入っているなら、quaternion_i2bも変換をかませて矛盾ない値にするべき
- テレメが来る前の状態で数値的に明らかにあり得ない値が入っているのは、バグや利用者の誤解の原因になりそうで気になる
という感じです。
他のテレメ群を0埋めしておいて、その後に特定のテレメのみ適切な初期値を入れるという感じで手間なく実装できると思うので、そうして欲しいです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
他のコンポも見てみましたが、sun_vec_compoなどもテレメが来る前から値を入れているんですね。STTだけであれば、0埋めしておくことでテレメが来たかどうかがわかるなどのメリットもありそうですが、全体の方針ということだと思うので、個別に値を入れるようにしたいと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
はい。定義上あり得ない値は入れない方針です。
テレメがきたかどうかわかるという話は、
- 初期値とfloatレベルで全く同じテレメがくる可能性はかなり低いので、何かしら値が来たことは0埋めしないでも分かる可能性がかなり高いはず
- その他のテレメ情報(特に存在するなら時刻情報やテレメカウンタ)からもテレメが来たかどうかわかる
と思うので、Quaternionを0埋めするメリットにはならないかなと思います。
別PR #161 で気になったことですが、STTテレメサイズが大きくなっていますが、STT側の 関連して、RWも最近テレメが追加された気がしていて、下記の値に更新がないか気になりました(動作確認されているので大丈夫だと思いますが)。一応確認お願いします。
|
DS側の対応が済んだら、SAGITTA_RX_MAX_FRAME_SIZEも大きくして、テレメ解釈できるようにする必要がありそうです。 RWは追加分も温度・回転数テレメと同じfloatなので問題ないと思います。 if (read_address == RW0003_kReadAddressTemperature_)
{
memcpy(&rw0003_driver->info.temperature_degC, decoded_rx_data + pos, sizeof(float));
}
else if (read_address == RW0003_kReadAddressSpeed_)
{
memcpy(&rw0003_driver->info.speed_rad_s, decoded_rx_data + pos, sizeof(float));
}
else if (read_address == RW0003_kReadAddressVDD_)
{
memcpy(&rw0003_driver->info.vdd_V, decoded_rx_data + pos, sizeof(float));
}
else if (read_address == RW0003_kReadAddressSEUCount_)
{
memcpy(&rw0003_driver->info.seu_count, decoded_rx_data + pos, sizeof(float));
}
else if (read_address == RW0003_kReadAddressFaultState_)
{
memcpy(&rw0003_driver->info.fault_state, decoded_rx_data + pos, sizeof(float));
} |
vMicroビルド再度確認できたので、ご確認お願いします。 |
Issue
#21
詳細
メーカーと議論し、軌道上でのパラメータ調整のために優先度の高いテレメトリを追加した。
検証結果
設定parameter
使用したコマンド
SAGITTA_TELEMETRY.opsとして追加
得られたテレメ
ビルドチェック (どちらもチェック)
動作確認チェック (いずれかをチェック)
試験結果詳細記述場所 or 詳細ログ保存場所へのリンク
補足
NA