
2026/06/28 13:17
ハードウェア経験ゼロから scratch でカスタムオクタコプターを製作する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本テキストは、個々のモーターや全電子スロットルコントローラ(ESC)を失うような重大な故障发生后でも、ドローンの安定性と複雑な復元動作の実行を維持するための高度な強化学習制御アーキテクチャを概説する。従来の固定 PID ループに依存するシステムとは異なり、このアプローチはリアルな MuJoCo シミュレーション環境で訓練された非対称型アクター・クリティック構造を持つ Proximal Policy Optimization(PPO)エージェントを使用する。実世界への即時導入における堅牢性を確保するために、訓練プロセスは物理的な不確実性を厳密に模倣する:質量や慣性などのパラメータは CAD モデルではなく実際の測定値に基づいて決定され、バッテリーのねばりやすさやセンサーノイズなどの因子に対して意図的なランダム化が適用される。特に重要なのは、シミュレーション内に 15–30 ms のランダムなループ遅延を含み、ポリシーが非現実的な即座のスラスト変化(「チッピング」)を学習することを防止し、実 Hardware のタイミング変動下でも安定性を確保することである。本システムは、個別的な故障検出器を必要とせず、アクターに期待されるセンサー応答と比較して実際のセンサー応答を直接識別することで故障を特定するように訓練されている。最終的には、この画期的技術により、ドローンは重度の非対称な故障シナリオ(例:90° のモーター損失)にもかかわらず、部分的電力下で動作し続けても約 2.8 kg という全負荷容量を維持し、安全な推力重量比を実現できるようになる。
本文
シリアルリンク制御による強化学習型マルチモータードローンプロジェクト報告
X で公開以降本プロジェクトの詳細な計画について多数のご質問をいただきました。以下の通り、現状の技術アプローチと今後の進捗をご報告いたします。
1. アーキテクチャ:PID ループからの脱却
従来の PID コントローラーを経由せず、強化学習(RL)によって訓練されたポリシーが直接フライトコントローラーへ接続される構成を採用します。
- 制御周波数: シリアルリンクを通じて 50 Hz で動作。
- 制御対象: フライトコントローラー経由で 全 8 つのモーターを直接制御。
- 耐故障性の根拠: この構成のみが、モーター故障時にポリシーに推力再配分への完全な権限を与えられます。
2. 故障モードとシナリオ分析
回転方向の同等性を無視した上で、以下の 6 つの固有の故障モードを対象としています:
- シングルモーター故障
- 隣接するペア(45°間隔、CCW/CW 混在)
- 90° 間隔・同じ回転方向(Same-type)
- 135° 間隔・混在
- 180° 間隔・同じ回転方向(Same-type)
- ESC 全体損失(各 ESC がそれぞれのクアッドを独立して制御)
🔴 最も困難なケース:90° 同じ回転方向の故障
このシナリオは同時に以下の 2 つの問題に直面するため、最もリスクが高いと判断されています。
- ヨー・トルクの不平衡: 停止した 2 つのモーターが同じ回転方向であるため生じる。
- 空間的非対称性: 残存する推力幾何構造における非対称性。
シナリオ別データ比較表
| パラメータ | 全 8 モーター構成(正常時) | 90° 同じ回転方向故障時(残り 6 モーター) |
|---|---|---|
| 最大総推力 | 11,144 gf | 5,572 gf (ヨーバランス確保時) |
| ホバリング時の CW モーター負荷 | 〜9% | 〜18% |
| T/W 比 2:1 を満たす最大重量 | 〜5.6 kg | 〜2.8 kg |
| ヨー・オーサリティ(操舵力) | 全方向対応 | ゼロに近い |
解説:
同じ回転方向の 2 モーターが失われると、稼働するのは「CW モーター 2 つ」と「CCW モーター 4 つ」(または逆)となり、等しいスロットル設定ではトルクバランスが取れません。これを補うためには、CW モーターを約 2 倍の出力で駆動させる必要があります。
- 各モーター最大推力:1,393 gf
- 推定推力上限(バランス確保時):5,572 gf
- 維持可能な重量:約 2.8 kg (現状は約 1 kg)
残存する 6 モーターが 270°の弧を形成するため、ロールおよびピッチ制御(オーサリティ)は依然として可能であり、安全な誘導・着地までホバリングが可能です。
3. シミュレーション環境構築
MuJoCo を用いた独自シミュレータを採用し、以下の理由から他のソリューション(Isaac Lab など)を選定していません。
- 実装: CPU 上で高速動作。Mac 環境との互換性を考慮。
- 性能: 単一剛体モデル(推力点 8 つ)で、ノート PC 並列計算により約 128 エンバロメントを動作させ可能。
データ収集方針
CAD データではなく、実際の計測データに基づいてモデルを構築します。
- 総質量
- 慣性テンソル(二糸振り子法測定)
- モーター推力曲線
- モーター時間定数
- ホバリング時のスロットル設定値
🔬 シム・トゥ・リアル転送への対応要素
実機とのギャップを埋めるため、以下の 2 つの要因をシミュレータに厳密にモデル化します。
1. モーター応答遅延(Motor Lag)
- 実態: 指令された速度到達まで 20〜50 ms の時間がかかる。
- 問題点: 瞬時変化するモーターで学習すると、微細な振動(チウィッチ)が発生する。
2. ループ遅延(Loop Latency)
- 実態: IMU 読み取りから推力変化までの 15〜30 ms の遅れ(通信・推論・書き込み・ESC 応答)。
- 対策: 零遅延学習は発振を招くため、エピソード間およびエピソード内で遅延を激しくランダム化して訓練する。
4. 訓練戦略とアルゴリズム
Algosrm スタック
- 採用手法: PPO (Proximal Policy Optimization) を PufferLib を経由して採用。
- 理由: サンプル効率よりも「サンプルコストの低いシミュレーション」環境において、並列エンバロメントでの安定性と拡張性が重視されるため。
重要な技術決定事項
-
非対称型アクター・クリティック(Asymmetric Actor-Critic)の採用
- 批評機(Critic): 訓練中のみ「真値」(故障状況、正確な推力定数など)を観察する。実装コストはゼロ(訓練後に廃棄)。
- アクター: 現実のセンサー情報のみを使用。
- 効果: 物理学を強くランダム化する環境下での学習効率向上が期待される。
-
過誤検出器なし(暫定)
- ポリシー自体が、過去 5 フレームの観測と指令とのギャップから故障を自律的に検出する能力を持たせる。
異常挙動への対応(ヨー制御不可時)
- 同じ回転方向のダブルフォールト時、物理的にヘディング維持は不可能なため、ヨー制御をあきらめる。
- 垂直軸を中心にゆっくり旋回しながら水平姿勢を維持する動作を実装し、報酬関数で罰則をかけることで学習させる。
5. 実装・導入計画
シミュレーションでの有望結果が出た場合の展開手順です。
- エクスポート: トレーニング完了モデルを ONNX 形式へエクスポート。
- ハードウェア: Raspberry Pi 4(推測)等マイクロコントローラー上で実行。
- 約 45,000 パラメータ、推論時間 1 ミリ秒未満のためボトルネックにならない。
- 動作ループ (50 Hz):
- シリアル経由で姿勢・ジャイロ読み込み
- ポリシー実行
- 8 モーターへのコマンド書き込み
6. ドメインランダム化と物理パラメータの変化
シム・トゥ・リアルの一般化を高めるために、以下をランダム化実装します。
- 質量: ±10%
- モーター推力定数: ±15%(安価なモーターの個体差に対応)
- 重心位置の偏り
- 飛行中の電池電圧低下
- センサーノイズ
7. 今後のロードマップ
- 検証: 実際にドローンを飛行させ、送信機からモーターを停止させる実験を行う。
- 確認: 数百万回のシミュレーションクラッシュで得た知見を実際のハードウェアでの耐故障挙動として再現・検証する。
参考文献
- Schulman et al., "Proximal Policy Optimization Algorithms," arXiv:1707.06347, 2017.
- Pinto et al., "Asymmetric Actor Critic for Image-Based Robot Learning," RSS, 2018.
- Mueller & D'Andrea, "Stability and control of a quadrocopter despite the complete loss of one, two, or three propellers," IEEE ICRA, 2014.
- Tobin et al., "Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World," IROS, 2017.