Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
探査機自作ゼミ2026
Search
sksat
August 13, 2026
44
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
探査機自作ゼミ2026
セキュリティ・キャンプ全国大会 2026 開発コース Y トラック Y3 探査機自作ゼミで使ったスライド群です
sksat
August 13, 2026
More Decks by sksat
See All by sksat
SIMD
sksat
1
2
同時複数機開発・運用のDevOpsサイクル高速化のための取り組み
sksat
0
1.2k
探査機自作ゼミ2025スライド
sksat
3
2.1k
人になにかを教えるときに考えていること(2025-05版 / VRC-LT #18)
sksat
6
2.4k
人工衛星開発のための C2A フレームワークとその開発体験
sksat
1
650
人工衛星の開発体験向上のために、ソフトウェアからできること
sksat
4
1.4k
3ヶ月でできる! 探査機自作ゼミ教材自作入門
sksat
6
4.1k
セキュリティ・キャンプ全国大会2024 S17 探査機自作ゼミ 事前学習・当日資料
sksat
4
35k
AE Rust 勉強会: github-webhook-rs
sksat
0
330
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Leo the Paperboy
mayatellez
8
2.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Done Done
chrislema
186
16k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
210
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
探査機自作ゼミ 2026 sksat
講師⾃⼰紹介 • • • • • • • • これ中指じゃないです→
sksat(えすけーさっと) ArkEdge Space Inc. 衛星ソリューション部・ソフトウェア基盤部 筑波大学情報科学類(休学中) 宇宙オタク -> パソコンオタク -> 宇宙パソコン野郎 やってた: OS、x86エミュレータ、数値計算、小型ハイブリッドロケット、 自宅サーバ やってる: (超小型人工衛星の)OS/Framework、シミュレーション基盤、 CI/CD、姿勢制御系、社内システム、etc 趣味: 自宅サーバのオーバーエンジニアリング、VRChat 気持ちがあるところ: 実在する複雑性の咀嚼と妥当な対処の案組み
自己紹介タイム 雑なネタ帳 • どう呼んでほしいか(HN でも OK) • 応募課題の最初の方のやつ • どういったことをするのが好きか・得意か
• どういうことをやってみたいか
ここからが本番
探査機自作ゼミの目的
複雑な ものづくりへの 立ち向かい方を 体感してほしい
複雑 ものづくり 立ち向かい方 体感
考えることが多い 複雑 ものづくり 立ち向かい方 体感
考えることが多い 複雑 ものづくり 0→1 立ち向かい方 体感
考えることが多い 複雑 ものづくり 0→1 どう手札を 立ち向かい方用意するか 体感
考えることが多い 複雑 ものづくり 0→1 どう手札を 立ち向かい方用意するか やってみなくちゃ わからない 体感
問題設定
火星のような惑星
火星のような惑星 どうやって探査する?
1. 周回軌道から観測
周回軌道からの観測 • • 「リモートセンシング」 カメラで画像を撮ったり ◦ ◦ ◦ • センサーで値を取ったり
◦ ◦ • • 可視光? 赤外線? 電波? 磁気? 重力? メリット:広範囲な観測 デメリット:細部は分からない
具体例:MRO Mars Reconnaissance Orbiter 周回軌道からの観測 • • 「リモートセンシング」 カメラで画像を撮ったり ◦
◦ ◦ • センサーで値を取ったり ◦ ◦ 観測 • • 可視光? 赤外線? 電波? 磁気? 重力? メリット:広範囲な観測 デメリット:細部は分からない
具体例:MRO Mars Reconnaissance Orbiter 周回軌道からの観測 • • 「リモートセンシング」 カメラで画像を撮ったり ◦
◦ ◦ • センサーで値を取ったり ◦ ◦ 観測 • • 可視光? 赤外線? 電波? 磁気? 重力? メリット:広範囲な観測 デメリット:細部は分からない
2. 着陸して観測 着陸!
着陸しての直接観測 着陸! • • • • その場に行けば色々できる センサーでの観測 サンプルの採取 行って生えた疑問をより詳しく
◦ • • 「ここがこうならあっちは?」 メリット:詳細な直接観測 デメリット:広範囲は分からない
具体例:Perseverance 着陸しての直接観測 • • • • その場に行けば色々できる センサーでの観測 サンプルの採取 行って生えた疑問をより詳しく
◦ • • 着陸! 「ここがこうならあっちは?」 メリット:詳細な直接観測 デメリット:着陸するのは大変
具体例:Perseverance 着陸しての直接観測 • • • • その場に行けば色々できる センサーでの観測 サンプルの採取 行って生えた疑問をより詳しく
◦ • • 着陸! 「ここがこうならあっちは?」 メリット:詳細な直接観測 デメリット:広範囲は分からない
具体例:Perseverance 着陸しての直接観測 • • • • その場に行けば色々できる センサーでの観測 サンプルの採取 行って生えた疑問をより詳しく
しかし ◦ • • 着陸! 「ここがこうならあっちは?」 メリット:詳細な直接観測 デメリット:広範囲は分からない
具体例:Perseverance 着陸しての直接観測 • • • • その場に行けば色々できる センサーでの観測 サンプルの採取 行って生えた疑問をより詳しく
着陸は大変 ◦ • • 着陸! 「ここがこうならあっちは?」 メリット:詳細な直接観測 デメリット:広範囲は分からない
具体例:Perseverance 着陸しての直接観測 • • • • その場に行けば色々できる センサーでの観測 サンプルの採取 行って生えた疑問をより詳しく
着陸はすごく大変 ◦ • • 着陸! 「ここがこうならあっちは?」 メリット:詳細な直接観測 デメリット:広範囲は分からない
着陸はすごく大変 着陸! • • • 試行回数が稼ぎにくい あっちもこっちも見てみたい!!! でも1機しかない!!!!!
着陸はすごく大変 着陸! • • • 試行回数が稼ぎにくい あっちもこっちも見てみたい!!! でも1機しかない!!!!! 子機
具体例:Ingenuity 着陸はすごく大変 • • • 試行回数が稼ぎにくい あっちもこっちも見てみたい!!! でも1機しかない!!!!! 子機 Perseviarance
に搭載 分離して飛行 • • 着陸のダルさは親機におまかせ 別行動して試行回数を増やせる
具体例:Ingenuity 着陸はすごく大変 • • • 試行回数が稼ぎにくい あっちもこっちも見てみたい!!! でも1機しかない!!!!! ということで 子機
Perseviarance に搭載 分離して飛行 • • 着陸のダルさは親機におまかせ 別行動して試行回数を増やせる
具体例:Ingenuity 着陸はすごく大変 みなさんには 「子機」 子機 を作ってもらいます • • • 試行回数が稼ぎにくい
あっちもこっちも見てみたい!!! でも1機しかない!!!!! • • 着陸のダルさは親機におまかせ 別行動して試行回数を増やせる Perseviarance に搭載 分離して飛行
具体例:Ingenuity 着陸はすごく大変 • • • 試行回数が稼ぎにくい あっちもこっちも見てみたい!!! でも1機しかない!!!!! • •
着陸のダルさは親機におまかせ 別行動して試行回数を増やせる さて どうしましょうか? 子機 Perseviarance に搭載 分離して飛行
注意事項 • このゼミはいわゆる「講義」ではない • 「雑」にコミュニケーションしよう • ヒトも AI も活用しよう •
ゼミのメンバーはひとつのチーム • sksat は「先生」ではない • キャンプは短い
このゼミはいわゆる「講義」ではありません • 「正解」は存在しません • 明確な「ゴール」も存在しません ◦ 「ゴール」は作るものです ◦ 何を「探査」しましょうか?
「雑」にコミュニケーションしよう • 雑に発言をしよう - 更新終了 過去アーカイブ ◦ • • •
• 「きっちりと推敲したり計画立ててやってるわけじゃないおおざっ ぱな、しかしそれを契機に話を膨らませたり、世界観の一端を伝え たりできるような、適当に役に立つライトウェイトな発言」 とりあえず言ってみる、とりあえず書いてみる 思いついたり気になったりしたことを失うのはもったいないこと 筋がいいかとか、本当にやるかとかは行って/書いてから考える Discord の Y3 ゼミチャンネルではどんな話をしても OK
ゼミのメンバーはひとつのチーム • 「探査機」の開発は複雑 • ひとりで作りきることはできない • どう分担するか? ◦ スキルも性格もバラバラ •
分担したものをどうマージするか? • なかよく!!!
sksat は「先生」ではありません • sksat1:キャンプの準備・事務連絡人間 • sksat2:「ハードウェア担当」「親機担当」としての調整先 ◦ HW などは時間の都合でこちら側で用意します ◦
HW ももちろんやりたかったらみなさんでやって OK! • sksat3:いつでも雑に相談できる「経験者」 ◦ でも「答え」は提供しません。あったら僕が知りたい。 • sksat4:「複雑性」をたくさん増やしてくるめんどくさいやつ ◦ 「これも考えた方がいいかもね~~~?」
セキュリティ・キャンプは短い • 本当に短い!!! • 当日は5日 ◦ と思うじゃん? ◦ 開発に使えるのは実質3日 •
事前学習期間:今~8月
今後やること・予定 • • • • • 事前学習/同期的なミーティングの日程調整 探査機で何をやるか・そのために何が必要か議論 sksat がハードウェア一式を送る
ハードウェアの組み立て【当日まで】 あとはひたすら議論・開発
探査機自作ゼミ2026 ハードウェアと 組み込み入門 sksat
今回のハードウェア:基本構成 • 本体:タミヤ 楽しい工作シリーズ クローラタイプ ◦ • • • •
• これを改造して自律走行させる 電源:乾電池 マイコン:Raspberry Pi Pico(RP2040) x2 無線通信:TWE-Lite(特定小電力無線 2.4GHz) データ保存:microSD 基板はメイン部とミッション部に分かれた構成
今回のハードウェア:構造設計 今回の構造設計 通常のタミヤの設計 (あくまで sksat 想定なので変更可) (リモコンでの操作) 改造して 自律動作する 探査機に
Pic o ラ カメ 線 外 赤 ム アー リモコン Pico micro SD TWELite コ モ to モータ ドライバ ム リ アー タミヤの板 超音波 (距離計測) ン ギヤボックス ギヤボックス 無線通信( 2.4GHz) メイン基板 タミヤの板 電池ボックス 進行方向 タミヤの板 ギヤボックス 電池ボックス 進行方向 ギヤボックス
メイン部 • 探査機としての最低限の機能を満たす ◦ ◦ • • 自律走行 ▪ モータ操作
▪ 障害物検知 無線通信 データ保存 タミヤの板にメイン基板を乗せる センサーはあまり載っていない ラ カメ 線 外 赤 o Pic ◦ ム アー ミッション部 (上段) ギヤボックス タミヤの板 超音波 (距離計測) モータ ドライバ Pico micro SD TWELite 無線通信( 2.4GHz) メイン基板 タミヤの板 電池ボックス ギヤボックス
メイン部 • 探査機としての最低限の機能を満たす ◦ ◦ • • 自律走行 ▪ モータ操作
▪ 障害物検知 無線通信 データ保存 タミヤの板にメイン基板を乗せる センサーはあまり載っていない ラ カメ 線 外 赤 o Pic ◦ ム アー ミッション部 (上段) ギヤボックス タミヤの板 超音波 (距離計測) モータ ドライバ Pico micro SD TWELite 無線通信( 2.4GHz) メイン基板 タミヤの板 電池ボックス ギヤボックス 当日までにここは組み立てておいてほしい!!!
ミッション部 • 2つ目のタミヤの板を上に乗せる • ラ カメ 線 外 赤 ム
アー ギヤボックス ミッション基板に各種センサ ◦ ◦ • アーム用ギアボックス アーム ミッション基板 o Pic ◦ ◦ ◦ 温湿度センサ、磁気センサ カメラ、赤外線アレイセンサ 注意:アームの操作はメイン基板 タミヤの板 超音波 (距離計測) モータ ドライバ Pico micro SD メイン部 タミヤの板 (下段) TWELite 無線通信( 2.4GHz) メイン基板 電池ボックス ギヤボックス
「ハードウェア」の解像度を上げる • 「ハードウェア」はものすご~~~く雑な区切り ◦ • • 「電気(エレキ)」「構造」「機構」とか 今回の場合 ◦ ◦
◦ • 「ソフトウェア」だって色々ある:OS、コンパイラ、Web frontend/backend 電気(sksat):メイン基板、ミッション基板、ハーネス 構造(sksat + タミヤ):さっきのやつ 機構(タミヤ):キャタピラとか、アームとか 興味のあるところはハードウェアもどんどんやって OK! ◦ ただし、調達と製造に色々なコストがかかる
調達と製造のコスト • • ソフトウェア:本質的に「製造」が無い/比重がとても小さい ◦ ◦ それを動かすためのハードウェアにはコストがかかる(ex: 近年の GPU 確保競争)
開発のための人件費と時間的コストの比重が大きい(AI でやや変わりつつもある) ◦ (あくまで構造的な違いなのでソフトウェアにこの比喩の上に色々積み上げるような議論には意味が無いので注意) ハードウェアはモノが無いとそもそも機能しない ◦ ◦ 設計・開発はできた(はず)なのに、モノが無いので使えない時間が(結構)ある ex: 回路設計はできたけど秋月電子が近くに無い、CAD 上ではできたけど...... ▪ 基板の製造(依頼)は本番の2~3週間前まで!!!
ソフトウェアとハードウェアの作り方の違い
ソフトウェアとハードウェアの作り方の違い 当日までに 組み立てておいてほしい!!!
もうちょい論理的なところ
論理的な接続(メイン部) ミッション基板 無線 (2.4GHz) i2c (拡張用) microSD SPI 無線機 UART
メイン基板 超音波距離計 Raspberry Pi Pico モータドライバ 右モータ 無線機 左モータ UART 地上局 9軸センサ i2c モータドライバ アーム モータ
論理的な接続(ミッション部) ミッション基板 磁気センサ i2c 温湿度センサ i2c 赤外線アレイ センサ 可視光カメラ Raspberry
Pi Pico i2c SPI SPI microSD (optional)
実際どんなソフトウェアを 書くことになるのか
いわゆる 「組み込みソフトウェア」
組み込みシステムって何
つまり
ふつう/汎用の コンピュータではない
組み込みソフトウェア いつものソフトウェア 専用のアプリ リッチなアプリ(複数) e.g. Web server そんな余裕はない 汎用のミドルウェア e.g.
PostgreSQL (もちろん場合による) 色々なことができる汎用OS e.g. Linux, Windows, macOS すごく高スペックな汎用計算機 e.g. RAM 32GB, 64bit 数GHz CPU ショボいマイコン 謎のハードウェア 謎のハードウェア 謎のハードウェア
組み込みソフトウェア いつものソフトウェア もちろん トレードオフが ある リッチなアプリ(複数) e.g. Web server 専用のアプリ
そんな余裕はない 汎用のミドルウェア e.g. PostgreSQL (もちろん場合による) 色々なことができる汎用OS e.g. Linux, Windows, macOS すごく高スペックな汎用計算機 e.g. RAM 32GB, 64bit 数GHz CPU ショボいマイコン 謎のハードウェア 謎のハードウェア 謎のハードウェア
• • • 組み込みソフトウェア いつものソフトウェア 目的が単一 or 少ない ◦ 「探査機」
制約が多い ◦ 体積、電力、etc ◦ いつものは乾電池で動かない 普段できないことができる ◦ モータを動かすとか • • • 目的が事前にわからない ◦ サーバー?ブラウザ見る? 制約が少ない ◦ どうせコンセントはある ◦ 動かなくていい 「いつもの」範囲ならなんでも ◦ Web、ゲーム、多様な業務
• • • 組み込みソフトウェア いつものソフトウェア 目的が単一 or 少ない ◦ 「探査機」
制約が多い ◦ 体積、電力、etc ◦ いつものは乾電池で動かない 普段できないことができる ◦ モータを動かすとか • 強い制約条件の課題を ハードウェアと結託して 解決する • • 目的が事前にわからない ◦ サーバー?ブラウザ見る? 制約が少ない ◦ どうせコンセントはある ◦ 動かなくていい 「いつもの」範囲ならなんでも ◦ Web、ゲーム、多様な業務 「いつもの」高性能な ハードウェアがあれば 多くの課題を解ける
さて
今回の計算機
Raspberry Pi Pico • 正確にはこれは「マイコンボード」 ◦ ◦ • CPU とかが載ってるのは
“RP2040” というマイコンチップ ◦ ◦ ◦ • • CPU 以外にも多少の周辺機器が載ってる 「パソコン」みたいな単位 動作周波数 133MHz RAM:264KB、ROM:2MB 参考:4K画像1ファイルは20MBぐらい(圧縮して数MBとか) 当然 Windows、Linux、macOS は動かない(そもそも乗らない) 普段 OS がやってくれていたことを自分でやる必要がある(or できない) ◦ ハードウェアの資源管理、メモリ管理、「標準出力」、...etc
まずはLチカ by Arduino on シミュレータ • • 画面も stdout もない
→ Hello, World! できない!!! まず何をするのか ◦ • • LED をチカチカさせる Wokwi: https://wokwi.com/projects/401288015258586113 まずは Arduino(マイコン用フレームワーク)でやってみる ◦ 言語としてはほぼC言語※1 ※1: 正確には勝手に Arduino.h が include される C++ だが、少なくとも多くの場合デフォ ルトでは C++03 がちだし、ちょっとヘンなC言語、ぐらいに思っておくのがちょうどよい
Lチカ:結局何をやったのか? • ピンの状態を HIGH とか LOW とかに設定した ◦ ◦ ◦
これは電圧の設定 ラズピコの場合、HIGH:3.3V LOW:0V “HIGH” が何 V かはマイコンやセンサ、アクチュエータによって違 う • 設定するのに使った関数:digitalWrite() ◦ ◦ ◦ 察せられること1:設定値が HIGH と LOW の2値なので “digital” 察せられること2:digital があるなら analog もあるのでは? 察せられること3:write があるなら read もあるのでは?
デジタル信号 • • • HIGH と LOW の2値があると書いたが、世界はそんなに綺麗ではない ◦ 実際は「だいたい3.3V」「だいたい0V」みたいなかんじになる
もし完璧な HIGH と LOW を出せても、切り替わる瞬間は中途半端な電圧になる ◦ 実際はしきい値を決めて「~Vより高いと HIGH」「~Vより低いと LOW」と定義する 2値を定義できた → どちらかを1、どちらかを0とすると2進数として扱える → digitalWrite() して別のマイコンで digitalRead() したら、2進数で情報を送信できる!!!
Rust の環境構築 • VSCode ◦ ◦ • Live Share extention
は便利なので入れておこう wokwi の extention もあるので手元でも試せる ▪ 設定例:https://github.com/sksat/pico-wokwi-playground rustup ◦ とりあえず cargo init して cargo run して Hello できる状態にはしておいてほしい
さて、何を・どう 「探査」しようか?
ブレインストーミング 批判なしで、「雑」にアイデアを出し合う • そもそも「何」を探査しようか? • 何ができるとおもしろそうか?
探査機自作ゼミ2026 チーム開発 sksat
チームでの開発 • • • 労力・アイデアは人数分 得意・興味で分担できる ◦ 並列して動ける N人に対して O(N2)
の調整コスト ◦ 動き始めは遅い ◦ 思わぬすれ違い 個人での開発 • • • 労力もアイデアも1人分しかない 全部1人でやるしかない ◦ シングルスレッド開発 意思決定に調整が不要 ◦ 動き始めるのは早い ◦ すれ違いが無い
チームでの開発 • • • 労力・アイデアは人数分 得意・興味で分担できる ◦ 並列して動ける N人に対して O(N2)
の調整コスト ◦ 動き始めは遅い ◦ 思わぬすれ違い ボトルネックを最適化して より遠くへ 個人での開発 • • • 労力もアイデアも1人分しかない 全部1人でやるしかない ◦ シングルスレッド開発 意思決定に調整が不要 ◦ 動き始めるのは早い ◦ すれ違いが無い ひとつに集中して より深くへ
情報の種類 ストック情報 フロー情報 • 後でも役に立つことを貯める • その場でのクイックな共有 • Goole Docs
/ GitHub • Discord のチャット • 整理にコストがかかる • 整理不要、雑にやればいい • 重要情報が残っていると便利 • 重要情報が埋もれると大変
シンプルな問題をチームで考えてみよう • • • • シンプルな探査機のモデルを考えてみる ◦ 電源:バッテリーと太陽光電池(角度が可変) センサ:温度・照度 ミッション
◦ センサデータを送信する 要求 ◦ 発電量を最大化する ◦ 夜間はバッテリーをいたわる
Wokwi で模擬してみる • • https://wokwi.com/projects/401283184277430273 ミッションデータ ◦ • • 通信機は省略して
UART に出力 サーボモータで太陽光パネルの傾き制御 照度センサ(左と右) ◦ ◦ 明るさが分かる -> 発電量を推定 2箇所 -> 太陽光の方向を推定
Excalidraw • • • https://excalidraw.com/ オンラインホワイトボード これもリアルタイム共有できる
VSCode Live Share • • • • • Live Share
- Visual Studio Marketplace VSCode で複数人同時編集を実現する extention “Live Share” を押すとセッションが開始される 発行されたリンクを共有・そのリンクから参加 終わったらセッションを停止
GitHub • Git(バージョン管理ツール)のホスティングサービス • 今ではソフトウェア開発の一大プラットフォーム ◦ Issues:チケット管理 ◦ Actions:自動化 •
organization: https://github.com/seccamp2026-y3 • まずは Issues とソースコード共有に使うとよい
探査機自作ゼミ2026 実機で遊ぶ sksat
送付物 タミヤのキット 色々 NC ボックス
タミヤのキット • • • 基本的にキットそのまま モータ部分だけ別のコネクタを接続済み そのまま main 基板に接続可能
色々 NC ボックス中身(1) タミヤ ユニバーサルプレート
色々 NC ボックス中身(2):基板類 main 基板 mission 基板
色々 NC ボックス中身(3):デバッグツール PicoBridge Lite USB - UART 変換 ロジックアナライザ
色々 NC ボックス中身(4):コンポーネント類 PicoBridge Lite USB - UART 変換 ロジックアナライザ
色々 NC ボックス中身(5):配線類 PicoBridge Lite USB - UART 変換 ロジックアナライザ
色々 NC ボックス中身(6) USB ケーブル microSD Picoベーシックキット 電池ボックス
実機で L チカ by Rust • • ソースコード:rp-rs blinky example
ビルド:cargo build ◦ • ELF -> UF2 の変換:elf2uf2-rs pico-blinky.elf ◦ • elf2uf2-rs は cargo install elf2uf2-rs でインストール BOOTSEL ボタンを押しながら Pico を USB 接続 ◦ • ELF バイナリファイル:./target/thumbv6m-none-eabi/debug/pico-blinky USB マスストレージとして RPI-RP2 が見える RPI-RP2 に UF2 ファイルを drag & drop
結局何をやったのだろうか?
結局何をやったのだろうか? クロックの初期化
結局何をやったのだろうか? クロックの初期化 delay 関数の用意
結局何をやったのだろうか? クロックの初期化 delay 関数の用意 ピンの設定
結局何をやったのだろうか? クロックの初期化 delay 関数の用意 ピンの設定 メインループ
メインループ
メインループ Rust の無限ループの書き方 LED ピンを high にする 500ms 待つ LED
ピンを low にする 500ms 待つ
ピンの設定
ピンの設定 これなに? これなに? これなに? これなに?
delay 関数の設定 これなに? これなに? これなに?
クロックの初期化
これなに? クロックの初期化 これなに? これなに? これなに? これなに?
調べてみましょう
真実はいつも
真実はいつも データシートにある
注意:細部を詰めるのは大変 • 詳細を掘って掘って掘りまくるのはとても大変 ◦ ◦ • データシートにすべてが書いてあるわけでもない ◦ ◦ •
他の部品のデータシート、エラッタ、企画書、教科書...etc どこかに書いてあるとも限らない(計測せよ!) 大変であるということは、時間がかかるということ ◦ ◦ • 楽しい部分のひとつでもある 人類がこれまで積み上げてきたものを掘り下げるのもとっても大変 そして、時間は多くの場合すべての細部を詰めるのに十分ではない いつどんな細部をどれだけ詰めるかも考えながらやりましょう なんでもかんでも調べるのではなく、仮説を立てながらやる
Rust Arduino vs Rust Arduino
Rust Arduino vs Rust Arduino なぜこんなに少なく済む? なぜこんなに長い?
EasyとSimpleは違う
Easy • • • • • 容易に始められる 対義語は Hard(困難) 無理矢理蓋をすると中身は複雑に
中身を把握しにくくなりやすい 中身が複雑だと組み合わせにくい 始めるのはカンタン 組み合わせると 難しい(ことが多い) Simple • • • • • 構造が単純 対義語は Complex(複雑) Easy とは限らない(今回の Rust) やろうと思えば中身を把握しやすい 組み合わせても非自明になりにくい カンタンになるとは 限らないが 組み合わせやすい
探査機自作ゼミ2025 当日資料 sksat
ここからが本当の本番
探査機自作ゼミの目的
複雑な ものづくりへの 立ち向かい方を 体感してほしい
考えることが多い 複雑 ものづくり 0→1 どう手札を 立ち向かい方用意するか やってみなくちゃ わからない 体感
「複雑なシステム」としての「探査機」 • デプロイ先がどんなところがわからない ◦ それを「探査」しに行くのだから! • 非修理系 ◦ 「ちょっと壊れたので直そう」ができない!!! •
考えることが多い ◦ ◦ ◦ 開発体制、構造設計、機構設計、搭載ソフトウェア、通信、地上 局、...etc 開発期間が短い!!!(今回は1週間) しかも、それらの要素が相互に影響する
どうやるのか?
よくある課題
知らないことは知らない
Unknown-Unknowns
気付いていること・理解していること 気 付 い て い る Unknown Unknowns 知らないことを知らない
Unknown Knowns 知っていると知らない Known Unknowns 知らないと知っている Known Knowns 知っていると知っている 理解している
どんどん気付く どんどん知る 気付いていること・理解していること 気 付 い て い る Unknown
Unknowns 知らないことを知らない Unknown Knowns 知っていると知らない Known Unknowns 知らないと知っている Known Knowns 知っていると知っている 理解している
Q. どう気付き、 どう知るか?
A. やる
やるしかない • 目の前に存在する実課題は教科書的ではない ◦ なんならこの講義にはあんまり資料がありません • = 課題はみなさんの目の前にしか存在しない • 目の前の問題を観察し、解釈し、バラすしかない
◦ バラして既知の/教科書的な問題になると便利 • どうやるか?
どうやるか?
とはいっても何が何だかわからん • 複雑なミッション • 複雑な ToDo • 複雑なシステム • 複雑なエラー
• 複雑なバグ • 複雑な組織
とはいっても何が何だかわからん • 複雑なミッション • 複雑な ToDo • 複雑なシステム • 複雑なエラー
• 複雑なバグ • 複雑な組織 大きな方針 大きな方針 解きほぐす 大きな方針
シンプルに作る Rules of Optimization: Rule 1: Don't do it. Rule
2 (for experts only): Don't do it yet. • 複雑な目的や状況 → すぐに解決も複雑になる ◦ それって結局なにをどう解決してるんだっけ? • 最適化の法則:「まだするな!」 • ムズカシイけど色々解決する、みたいな手段がありがち ◦ もちろんトレードオフ ◦ ムズカシイ = 認知負荷が大きい ◦ 変更しにくくなる:試行回数が減ってしまう • 複雑なことも、まずはじめはシンプルに ◦ ex:ブレッドボードで試す、ユニットテスト
高速に「やったことがある」状態に持ち込む • 複雑な問題 ◦ ◦ ◦ Unknown-unknowns だらけ 事前の想定が良くも悪くも覆る 経験の鮮度が重要
• 仮説を立て、検証するループ • 高速に細かく Iteration を回す ◦ 手戻りは早い方がいい SpaceX (2012). System Engineering: A Traditional Discipline in a Non-Traditional Organization
事実を観測せよ! • 推測しすぎない ◦ ◦ 事象 A が起きているとき、「たぶん B だから~」と言っていないか?
事実関係を区別してコミュニケーションしよう ▪ 事象そのもの、事象の仮説、仮説の前提条件 • 事実をできるだけ観測し、仮説を検証せよ!!! ◦ ◦ ex:そもそも電源入ってる?導通してる?信号は流れてる? 観測手段の例 ▪ テスター、ロジックアナライザ、USB シリアル変換、lldb、... • 観測手段(手札)をたくさん確保しておく
手札とメタ手札 • 自分やチームが持っている手札を把握する ◦ 技術、観測手段、LLM、相談できる人(ex:sksat)... • • • • 手札は目的に対して不足していないか?
手札は精度を高めたり、増やしたりできる 手札を増やすための手札(メタ手札)を獲得しよう 「こういう手札があるはず」があると応用がすごく効く ◦ ex:「Rust/マイコンにこれを解決する機能があるのでは?」 • 「こういう事実を観測する手段を作れれば......?」
やることが......やることが多い......!!! • 考えることが多い!!! • しかし時間が無い!!!!! ◦ 開発期間は正味3日 • 盲点:焦れば焦るほど効率が下がる https://alu.jp/series/金田一少年の事件簿外伝_犯人たちの事件簿
/crop/uxivvfocbWTUJ3NAWw2w
やることが......やることが多い......!!! • 考えることが多い!!! • しかし時間が無い!!!!! ◦ 開発期間は正味3日 • 盲点:焦れば焦るほど効率が下がる https://alu.jp/series/金田一少年の事件簿外伝_犯人たちの事件簿
/crop/uxivvfocbWTUJ3NAWw2w
やることが......やることが多い......!!! • 考えることが多い!!! 使える 使える 使える • しかし時間が無い!!!!! ◦ 開発期間は正味3日
使える 使える 使える • 盲点:焦れば焦るほど効率が下がる https://alu.jp/series/金田一少年の事件簿外伝_犯人たちの事件簿 /crop/uxivvfocbWTUJ3NAWw2w
時間は 本当にない やることが......やることが多い......!!! • 考えることが多い!!! 使える 使える 使える • しかし時間が無い!!!!!
◦ 開発期間は正味3日 使える 使える 使える • 盲点:焦れば焦るほど効率が下がる https://alu.jp/series/金田一少年の事件簿外伝_犯人たちの事件簿 /crop/uxivvfocbWTUJ3NAWw2w
「やること」は DAG • 「やること」は1次元のリストではない! • それぞれに依存関係がある • 依存が被らない実行経路を作ることができる • •
◦ → 複数人で並列実行できる ◦ ex:B→C と B→D 実行中にノードや依存関係を増やすこともできる ◦ タスクの分割/解像度が上がった 並列度の高いタスク分割 → チームの「実行効率」を高められる
「やらないこと」を決める • 「やること」「やった方がいいこと」を決めるのはカンタン • しかし、実際に「やる」のは大変 • 同時にあれもこれもやっていると混乱する ◦ 「コンテキストスイッチのコストが大きい」 •
「何をやらないか」を決める(強い気持ちで!) • 「やらないこと」にも色々ある ◦ 「今やらない」「**が分かるまでやらない」「絶対やらない」
焦らず 協力して たくさん試そう
脇道:LLM とその活用 • 広大な知識のあいまい検索としてはとても便利 Claude Fable 5 作 持ちにくそうな マグカップ
◦ 「こういう概念あるんじゃない?」とか • あくまで大規模「言語」モデル ◦ 実世界に接地した「感覚」は(まだ)無い ◦ たとえば、ボールペンをバラした時の感覚は持っていない • 書かせたコードは自分の手札にはならない ◦ 「なんかよくわからんけどできた」 ◦ 「コードを書かせる」という手札は深い理解とセット
脇道:LLM とその活用(2) • LLM 自体は強力な手札のひとつ • LLM に考えさえたものは自分の手札にはならない ◦ 「なんかよくわからんけどできた」
◦ ↑これはこれで重要な事実(それはそれで便利) • 複雑なドメイン/長期で向き合うときは深い理解とセット ◦ 「データシートを読む」「コードを書かせる」とか
None
None
ChatGPT の回答は正しいとは限りません
Gemini の回答は正しいとは限りません
Claude の回答は正しいとは限りません
AI の回答は正しいとは限りません
None
sksat の回答は正しいとは限りません
sksat の回答は正しいとは限りません ※講師なので、意図的に直接的な回答を避ける場合もあります
人間 の回答は正しいとは限りません
人間 の思考は正しいとは限りません
じゃあ どうすんねん 人間 の思考は正しいとは限りません
正しいこと ないのか 人間 の思考は正しいとは限りません
事実 は正しい
物理法則 は正しい
正しくないことは悪いことではない
正しくないことは悪いことではない 正しいこと 正しくない(かもしれない)こと • 事実 • 物理法則 • 事実から立てた仮説 •
直感/当てずっぽう
正しくない(かもしれない)ことは悪いことではない 正しいこと 正しくない(かもしれない)こと • 事実 • 物理法則 • 事実から立てた仮説 •
直感/当てずっぽう 何が正しくないかもしれないか 知ることが大事
ちょっと まてよ 正しくない(かもしれない)ことは悪いことではない 正しいこと 正しくない(かもしれない)こと • 事実 • 物理法則 •
事実から立てた仮説 • 直感/当てずっぽう 何が正しくないかもしれないか 知ることが大事
正しい って なんだ?
正しいってなんだ? • 物理法則は正しい ◦ 実用上のほとんどすべての場合は • 「物理法則」と呼ばれているもの ◦ これまでの人類が観測した事実から立ててきた仮説 ◦
前提が変わらなければほとんど正しい • 前提は変わりうる ◦ 量子力学:ミクロな世界ではそれまでの仮説が外れた
正しい ≒ 何を信じることにするか
正しい ≒ 何を信じることにするか 信じられること 信じられない(かもしれない)こと • 事実 • 物理法則 •
事実から立てた仮説 • 直感/当てずっぽう
正しい ≒ 何を信じることにするか 信じられること 信じられない(かもしれない)こと • 事実 • 物理法則 •
事実から立てた仮説 • 直感/当てずっぽう 何が信じられないかもしれないか 知ることが大事
メタ認知 • 自分が何を知っていて、何を知らなさそうかを知る • 自分や周囲の人の思考のクセを把握する
メタ認知 • 自分が何を知っていて、何を知らなさそうかを知る • 自分や周囲の人の思考のクセを把握する 知ってる 知ってる 知ってる
メタ認知 • 自分が何を知っていて、何を知らなさそうかを知る • 自分や周囲の人の思考のクセを把握する 知ってる 知ってる なんか あるのでは? 知ってる
仕組み/原理を知ると幅が効く • 電気信号:電圧をピコピコして LOW/HIGH としている • 電圧:電位差がある ◦ 電位そのものは観測しにくいが、電圧は観測・用意しやすい •
GND:基準となる電位 ◦ 完全無欠な 0V というのは存在しない • ということは......? ◦ ◦ GND が激しく揺れているとわけがわからないことになりそう とはいえ、しきい値を十分に越える電圧がかかっていれば観測できそう
全部の仕組みを 知らないと いけない? 仕組み/原理を知ると幅が効く • 電気信号:電圧をピコピコして LOW/HIGH としている • 電圧:電位差がある
◦ 電位そのものは観測しにくいが、電圧は観測・用意しやすい • GND:基準となる電位 ◦ 完全無欠な 0V というのは存在しない • ということは......? ◦ ◦ GND が激しく揺れているとわけがわからないことになりそう とはいえ、しきい値を十分に越える電圧がかかっていれば観測できそう
仕組み/原理を知ると幅が効く • 電気信号:電圧をピコピコして LOW/HIGH としている • 電圧:電位差がある そんなことはない ◦ 電位そのものは観測しにくいが、電圧は観測・用意しやすい
• GND:基準となる電位 ◦ 完全無欠な 0V というのは存在しない • ということは......? ◦ ◦ GND が激しく揺れているとわけがわからないことになりそう とはいえ、しきい値を十分に越える電圧がかかっていれば観測できそう
ブラックボックス • よくわからんけど動く:それはそれで便利 ◦ ex:AI • でもそれってマジでクール(便利)なこと • よくわからんけど ◦
↑これを認識していれば OK • よくわからないことによって困ったら...... ◦ そのときに仕組みを調べに行く