Upgrade to Pro — share decks privately, control downloads, hide ads and more …

人工衛星の開発体験向上のために、ソフトウェアからできること

sksat
September 21, 2024

 人工衛星の開発体験向上のために、ソフトウェアからできること

夏のプログラミング・シンポジウム2024の発表で使用したスライドです。
https://prosym.org/sprosym2024/

sksat

September 21, 2024
Tweet

More Decks by sksat

Other Decks in Technology

Transcript

  1. 自己紹介 ・sksat(えすけーさっと) ・ArkEdge Space Inc. コンピューティング基盤部 / 筑波大学情報学群情報科学類(休学中) ・宇宙オタク -> パソコンオタク ->

    宇宙パソコン野郎 ・やってた: OS、x86エミュレータ、数値計算、小型ハイブリッドロケット、自宅サーバ ・やってる: (人工衛星の)OS/Framework、シミュレーション基盤、CI/CD、姿勢制御系、社内システム、... ・気持ちがあるところ: 実在する複雑性の咀嚼と妥当な対処の案組み ・セキュリティ・キャンプ全国大会2024 開発コース 探査機自作ゼミ講師 ↖これ中指じゃないです
  2. SWE 以外もコードを書きやすくする ・「プログラミング」をするのは SWE だけではない ・事前のシミュレーションや、成立性の確認のためのスクリプト ・毎回乱雑な Python スクリプトがあちこちでできる →

    rye/uv の導入(開発環境の整備) ・それぞれの専門分野関連のコードをその人本人が書ければ調整が減る ・姿勢制御、熱制御、電源制御、... ・うまく本質部分を抽象化できるシステムソフトウェア/ミドルウェアが重要
  3. 調整 as Code ・TlmCmdDB ・人工衛星との通信プロトコルのスキーマ定義 ・CSV/JSON からコード生成/定義読み込み ・各種設定や設計情報も JSON で記述

    ・別の職能/部署/組織との界面をコード化 ・調整が会議からコードレビューになる → ◎再現性 ◎非同期コミュニケーション
  4. (組み込みを含む)全面的な Rust の採用 ・2024年現在最も開発体験のよい言語のひとつ ・rustup で環境構築、LLVM で多種アーキテクチャ向けに簡単にビルド、core 標準ライブラリ ・cargo doc

    によるドキュメント自動生成 ・OS のような低レイヤ~Webバックエンドまで書ける → 組み込み開発からシミュレータ、地上局、開発ツール、社内システム全部書ける ・Embedded Rust コミュニティも結構活発
  5. 2024年の組み込み(Rust)開発体験 ・VSCode + probe-rs が最強 ・F5 で書き込んで普通に breakpoint 打てる ・設定も

    Git 管理できる(全員が同じ開発体験) ・defmt で簡単にログ出力 ・core 標準ライブラリ/no_std で動く crate も充実 ・Raspberry Pi Pico で治具を作りまくる ・デバッガ(rust-dap)、実機の自動テスト
  6. C と Rust の相互運用 ・なんだかんだC言語の既存資産がある ・いきなり全部 Rust はそれはそれで無理がある ・bindgen が超便利

    ・doxygen-rs を使ってC言語側のコメントを rustdoc に持ち込む ・既存の概念(ハードウェア抽象化レイヤ)を trait などで抽象化 → FFI 部分を proc macro で自動実装 ・Web 系の概念/実装を持ち込む ex:Cの既存実装と WebSocket で喋れるように
  7. Cargo を任意パッケージマネージャとして使う ・C/C++ はマトモなパッケージマネージャが無くてつらすぎる ・資産の再利用があまりにもやりにくい ・Cargo はパッケージマネージャとして非常に優秀 ・0 byte の

    lib.rs を生やせば C だけのライブラリもパッケージングできる ・build.rs で自由にビルドロジック書き放題 ・あらゆるモノが git clone & cargo run できるようになる ・開発開始のコストを減らす/オンボーディングをシンプルに
  8. 搭載ソフトウェア on PC ・毎回実機に書いてデバッグ/試験する必要は無い ・下のレイヤを模擬して x86 / arm 向けにクロスビルド ・模擬も目的によっては適宜雑なものでよい

    ・ex:姿勢制御以外は宇宙環境もサボれる ・ハードウェア無しで開発開始できる ・コンテナに固めてしまえば AWS にもデプロイできる → 運用の訓練などにも使える