理系的な戯れ

理工学系とくにロボットやドローンに関する計算・プログラミング等の話題を扱って、そのようなことに興味がある人たちのお役に立てればと思っております。

StampFlyハードウェア完全解説 - StampFly制御システム第2回

この記事で学ぶこと(2分で読める概要)

第1回で学んだ物理的連鎖(PWM→MOSFETドライバ→ブラシモータ→プロペラ→推力)を実現する、M5StampFlyの具体的なハードウェア構成を完全解説します:

  1. StampFlyの全体像:36.8gに凝縮された高性能システム
  2. 9つのセンサの役割:なぜこのセンサが必要なのか
  3. ESP32-S3の能力:240MHzデュアルコアが400Hz制御を可能にする理由
  4. 通信機能の価値:ESP-NOWがもたらすドローン制御の革新

重要な発見:StampFlyは単なる小型ドローンではなく、ドローン制御技術を学ぶために最適化された「空飛ぶ学習プラットフォーム」です。

M5StampFlyとは何か(基本理解)

StampFlyの実態

M5StampFlyは、教育・学習に特化した超小型ドローンです。一般的なドローンとは根本的に設計思想が異なります。

基本スペック一覧

項目 仕様 他機種との違い
重量 36.8g 超軽量(法規制100g未満)
SoC ESP32-S3 WiFi/Bluetooth標準搭載
制御周期 400Hz 高速リアルタイム制御
センサ数 9個 高密度センサ統合
通信 ESP-NOW 柔軟な送信機選択
サイズ 81.5×81.5×31mm 手のひらサイズ
バッテリー 300mAh HV LiPo 約4分飛行

なぜStampFlyが特別なのか

1. 学習プラットフォームとして最適化

  • オープンソース設計で改造・拡張が自由
  • Arduino/ESP-IDF両対応で学習レベルに応じて選択可能
  • 詳細な技術資料とサンプルコードを完備

2. 柔軟な送信機選択

  • ESP-NOW通信で高価なプロポは不要
  • 専用送信機(別売り)またはESP32自作送信機で制御
  • スマートフォンやPCから直接制御も可能
  • ペアリング設定も数秒で完了

3. 超軽量で安全性が高い

  • 100g未満で航空法の規制が大幅緩和
  • 室内飛行に最適な重量とサイズ
  • 衝突時の安全性を重視した設計

4. 高性能な制御システム

  • 400Hz制御で産業用ドローンと同等の応答性
  • 9種類のセンサによる高精度な状態推定
  • リアルタイムOS(FreeRTOS)による安定動作

9つのセンサが創る飛行システム

StampFlyに搭載された9つのセンサは、それぞれが重要な役割を担っています。

姿勢制御の心臓部

BMI270(6軸IMU - SPI接続)

役割:機体の傾きと回転速度を検出
接続:SPI(10MHz高速通信)
データ:角速度3軸 + 加速度3軸
更新頻度:400Hz(2.5ms毎)

なぜSPI接続なのか?

  • I2C(400kHz):1秒間に約400,000回通信可能
  • SPI(10MHz):1秒間に約10,000,000回通信可能

400Hz制御では2.5ms毎にIMUデータが必要なため、SPIの高速性が不可欠です。

環境認識センサ群

BMM150(磁力計 - I2C接続)

  • 役割:方位(北の方角)を検出
  • 重要性:GPS無しでも機首方向を維持
  • 精度:0.3μT(地磁気の微細な変化を検出)

BMP280(気圧センサ - I2C接続)

  • 役割:気圧変化による高度推定
  • 精度:数cm単位の高度変化を検出
  • 応答性:高度維持制御の基盤

VL53L3CX×2(距離センサ - I2C接続)

  • 役割:ToF(Time of Flight)方式で距離測定
  • 配置:前方・下方の2個で全方位カバー
  • 測定範囲:25mm〜300mm(実用的には200mm)
  • 用途:障害物回避、自動着陸

PMW3901MB(オプティカルフロー - SPI接続)

  • 役割:地面との相対移動を光学的に検出
  • 原理:マウスセンサーと同じ技術
  • 精度:数mm単位の水平移動を検出
  • GPS代替:屋内でのポジション保持

システム監視センサ

INA3221(電圧・電流モニタ - I2C接続)

  • 役割:バッテリー状態の監視
  • 測定項目:電圧、電流、電力消費
  • 安全機能:低電圧時の自動着陸トリガー

ESP32-S3による400Hz制御システム

なぜ240MHzで400Hz制御が可能なのか

デュアルコアの威力

Core 0(通信専用):
├─ WiFi関連タスク(ESP-IDFが自動配置)
├─ ESP-NOW通信処理
├─ システムモニタリング
└─ テレメトリ送信

Core 1(制御専用):
├─ センサデータ読み取り(400Hz)
├─ 姿勢制御演算(PID制御)
├─ モータミキシング計算
└─ PWM信号出力

計算能力の内訳

  • 400Hz制御 = 2.5ms周期で制御ループ実行
  • 240MHz CPU = 1秒間に2億4000万回のクロックで動作
  • 2.5ms間に60万回動作 = センサ読み取り〜制御演算〜PWM出力まで余裕で実行

他のマイコンとの比較

マイコン 周波数 制御周期 デュアルコア 通信機能
Arduino Uno 16MHz 50Hz程度 × なし
ESP32 240MHz 400Hz程度 WiFi/BT
ESP32-S3 240MHz 400Hz WiFi/BT + 省電力

ESP-IDFの重要な制約

WiFi/ESP-NOWの固定配置:ESP-IDFではWiFi機能(ESP-NOWを含む)が強制的にCore 0で実行されます。このため:

  • Core 0: ESP-NOW通信処理(ESP-IDFの制約)
  • Core 1: 400Hz制御演算(リアルタイム保証)

この制約により、リアルタイム制御はCore 1に集約する設計が必須となります。

ESP32-S3は、ドローン制御に必要な全ての要素を1チップに統合した理想的なSoCです。

通信機能がもたらす革新

ESP-NOWの価値(送信機選択の自由度)

従来のドローンシステム

ドローン本体 + 専用プロポ送信機 + 受信機 = 複雑で高コスト

StampFlyの革新

ESP32-S3内蔵通信 + 選択可能な送信機 = 柔軟で低コスト

ESP-NOWの特徴

技術的優位性

  • 低遅延:数msの応答速度
  • 低消費電力:バッテリー寿命向上
  • 高信頼性:2.4GHz帯の安定通信
  • ペア接続:最大20台のペア接続、ブロードキャスト通信で数百台対応(群制御対応)

学習・開発での価値

  • 独自コントローラーを簡単に作成可能
  • スマートフォンアプリからの直接制御
  • デバッグ情報のリアルタイム送信
  • 群制御実験も可能

この通信機能により、StampFlyは学習用プラットフォームとして最適な選択となっています。専用送信機(別売り)、ESP32自作送信機、PCなど、用途に応じて送信機を選択できます。

物理設計の工夫

36.8gに込められた設計思想

軽量化の理由

1. 法規制対応

  • 100g未満で航空法の規制が大幅緩和
  • 屋内飛行に最適な重量範囲
  • 許可申請不要で教育利用可能

2. 安全性向上

  • 軽いほど衝突時のリスクが低減
  • 人への危害を最小限に抑制
  • 教育現場での安全性確保

3. 機敏性向上

  • 慣性が小さく高速な姿勢変更が可能
  • 応答性の良い制御特性
  • アクロバティックな飛行も実現

StampFlyでできること(可能性の紹介)

学習用途

ドローン制御の基礎学習

  • 物理的連鎖の理解(PWM→推力)
  • PID制御の実装と調整
  • センサ融合の基本概念

プログラミング実習

  • C/C++でのリアルタイム制御
  • FreeRTOSを使ったマルチタスク
  • 通信プロトコルの実装

センサ融合の理解

  • IMU、磁力計、気圧計の統合
  • カルマンフィルタの実装
  • 状態推定アルゴリズム

教育現場での活用可能性(検討中)

  • 位置推定機能の実装による高機能化
  • Scratchのようなタイル型プログラミング言語への対応
  • 高価な教育用ドローンの代替教材として活用
  • 小中学生向けプログラミング教育への展開

研究用途

制御アルゴリズムの検証

  • 新しいPID調整手法
  • 適応制御の実装
  • ロバスト制御の評価

群制御実験

  • 複数機による連携飛行
  • 編隊飛行アルゴリズム
  • 分散制御システム

AI制御の実装

  • 機械学習による制御最適化
  • 強化学習エージェント
  • ニューラルネットワーク制御

拡張可能性

ハードウェア拡張

  • カメラ追加でFPV飛行
  • 独自センサ追加で特殊用途

ソフトウェア拡張

  • 独自の制御アルゴリズム
  • カスタム通信プロトコル
  • リアルタイム画像処理

センサ統合の重要性

なぜセンサフュージョンが必要なのか

単一のセンサでは正確な姿勢推定や位置推定はできません。各センサには以下のような限界があります:

ジャイロスコープ(角速度センサ)の限界

  • 角速度を積分して姿勢を求めるが、時間経過とともにドリフト(誤差の累積)が発生
  • 短期的には正確だが、長期的には信頼性が低下

加速度計の限界

  • 重力加速度を検出して姿勢を推定できるが、動的加速度(機体の移動)が加わると推定精度が低下
  • 静止時は正確だが、移動中は信頼性が低い
  • 重力加速度ベクトル周りの回転(ヨー回転)は検知できない

地磁気センサの限界

  • 地球の磁場を検出して方位を特定できるが、モータや金属部品による磁場の歪みの影響を受ける
  • 地磁気ベクトル周りの回転は検知できない(地磁気が垂直な極地では特に顕著)

センサフュージョン技術

StampFlyは複数のフィルタアルゴリズムを使用してセンサデータを統合し、より確からしい状態推定を実現します。

姿勢の表現方法

姿勢を表現する方法には主に3つあり、それぞれ特徴があります:

1. オイラー角(ロール・ピッチ・ヨー)

  • 直感的で理解しやすい
  • ジンバルロック問題(特定の姿勢で自由度が失われる)が発生
  • 制御則の記述には適している

2. 回転行列(3×3行列)

  • 数学的に厳密で、ジンバルロックが発生しない
  • 計算量が多い(9要素)
  • 正規直交性の維持が必要

3. 四元数(クォータニオン)

  • 4つの要素で3次元回転を表現
  • ジンバルロックが発生せず、計算効率が良い
  • 直感的な理解は困難だが、数値的に安定

主要なセンサフュージョンアルゴリズム

1. 相補フィルタ(Complementary Filter)

姿勢角 = α × (前回の姿勢角 + ジャイロ角速度 × Δt) + (1-α) × 加速度計による姿勢角
  • ジャイロの短期的な正確さと加速度計の長期的な安定性を組み合わせる
  • 計算量が少なく、リアルタイム制御に適している
  • αは通常0.98程度に設定(ジャイロを98%、加速度計を2%の重みで融合)

2. カルマンフィルタ(Kalman Filter)

  • センサの誤差特性を考慮した最適な推定値を計算
  • 各センサの信頼度を動的に調整
  • 計算量は多いが、より高精度な推定が可能

3. Madgwickフィルタ

  • 勾配降下法を用いた効率的なアルゴリズム
  • 相補フィルタよりも高精度で、カルマンフィルタよりも軽量
  • 計算効率と精度のバランスが優れている

3軸姿勢推定の実現

なぜ2つのベクトルで完全な姿勢推定が可能なのか

姿勢推定には、互いに平行でない2つの基準ベクトルがあれば、3次元空間での機体の向きを完全に特定できます:

重力加速度ベクトル(加速度計)

  • 常に地球の中心を向く(下向き)
  • ロール角とピッチ角の推定に使用
  • ただし、このベクトル周りの回転(ヨー)は検知不可

地磁気ベクトル(地磁気センサ)

  • 地球の磁北を向く(水平成分+垂直成分)
  • 重力ベクトルと組み合わせることでヨー角も推定可能
  • 2つのベクトルの外積により、完全な座標系を構築

数学的な原理

機体座標系 = [重力ベクトル × 地磁気ベクトル, 重力ベクトル, 外積ベクトル]

この2つの独立したベクトルにより、StampFlyの完全な3軸姿勢(ロール・ピッチ・ヨー)が一意に決定されます。ジャイロスコープは、これらの静的な姿勢推定値を動的に補完し、より高精度でリアルタイムな姿勢情報を提供します。

位置推定のセンサフュージョン

StampFlyは姿勢だけでなく、位置推定でも複数センサを統合します:

高度推定の統合

  • 気圧センサ(BMP280):相対的な高度変化を検出
  • 下方ToFセンサ(VL53L3CX):対地高度を直接測定
  • 加速度計のZ軸積分:短期的な上下動を検出

これらを組み合わせることで、気圧変化に影響されない正確な対地高度維持が可能になります。

水平位置推定の統合

  • オプティカルフロー(PMW3901MB):地面に対する相対移動を検出
  • 加速度計のXY軸積分:短期的な水平加速度を検出
  • 前方ToFセンサ:障害物までの距離で位置補正

GPS無しでも、これらのセンサフュージョンにより室内での安定したホバリングが実現できます。

実装における課題と解決

センサノイズの除去

  • 各センサデータにローパスフィルタを適用
  • 異常値の検出と除外
  • 移動平均による平滑化

更新頻度の同期

  • IMU:400Hz(最高頻度)
  • 気圧計:50Hz
  • オプティカルフロー:100Hz
  • 異なる更新頻度のデータを適切に統合

計算負荷の最適化

  • Core 1でセンサフュージョン演算を専用実行
  • 整数演算の活用による高速化
  • 必要最小限の精度での計算

センサフュージョンは、StampFlyが安定して飛行するための最も重要な技術です。複数のセンサデータを適切に統合することで、単一センサでは不可能な高精度な状態推定を実現しています。

まとめ:学習プラットフォームとしてのStampFly

M5StampFlyは、単なる小型ドローンではありません。ドローン制御技術を学ぶために最適化された「空飛ぶ学習プラットフォーム」です。

StampFlyの価値

1. 包括的な学習環境

  • 9つのセンサによる実践的なセンサ融合学習
  • 400Hz制御による本格的なリアルタイム制御体験
  • ESP-NOWによる通信システムの理解

2. 段階的な学習サポート

  • Arduino IDEでの入門から
  • ESP-IDFでの本格的な組み込み開発まで
  • 個人の学習レベルに応じた柔軟な対応

3. 実践的な応用可能性

  • 研究レベルの制御アルゴリズム検証
  • 群制御やAI制御の実装基盤
  • 産業応用への発展

4. 安全で始めやすい環境

  • 36.8gの超軽量設計による安全性
  • プロポ不要の簡単セットアップ
  • 室内飛行に最適な仕様

次回の第3回では、StampFlyの心臓部である「モータドライバ・プロペラシステム」について、推力がどのように生成され、制御されるのかを詳しく解説します。

StampFly技術仕様(リファレンス)

ピンアサイン一覧

I2C接続センサ(400kHz共通バス)

デバイス SDA SCL I2Cアドレス
BMP280(気圧センサ) G3 G4 0x76
BMM150(磁力計) G3 G4 0x10
VL53L3CX(距離センサ×2) G3 G4 0x52, 0x54
INA3221(電流監視) G3 G4 0x40

SPI接続センサ(高速通信)

デバイス MOSI MISO SCK CS 速度
BMI270(IMU) G14 G43 G44 G46 10MHz
PMW3901MB(オプティカルフロー) G14 G43 G44 G12 10MHz

モータPWM出力

モータ位置 ピン 回転方向 備考
M1(右前) G6 反時計回り(CCW) 左回り
M2(左前) G5 時計回り(CW) 右回り
M3(左後) G8 反時計回り(CCW) 左回り
M4(右後) G7 時計回り(CW) 右回り

Grove端子

コネクタ 機能 SDA/TX SCL/RX
赤(A) I2C G13 G15
黒(B) UART G1 G2

その他出力

デバイス ピン 用途
ブザー G12 状態通知
WS2812 RGB LED G39 外部LED
内蔵RGB LED G21 M5StampS3内蔵

モータ回転方向図(上から見た図)

        前方
         ↑
    [M2]    [M1]
     CW      CCW
      \      /
       \____/
       /    \
    [M3]    [M4]
     CCW      CW
         ↓
       後方

重要:対角モータが同じ回転方向になるよう配置され、トルクバランスを実現しています。


シリーズ: 基礎・ハードウェア編
対象読者: 全レベル
推定読了時間: 8分
前提知識: 第1回の物理的連鎖の理解
次回予告: 第3回「モータドライバ・プロペラの物理学」

コード例について: 本記事のコード例は学習目的で簡略化されています。実際の使用時は、エラーハンドリング、安全機能、最適化を追加してください。

参考資料:


免責事項

本記事の内容は教育・学習目的で提供されています。ドローンの製作・飛行に関しては以下の点にご注意ください:

  • 法規制の遵守:航空法、電波法等の関連法規を必ず確認し、遵守してください
  • 安全性の確保:機体の整備、飛行環境の安全確認は製作者・操縦者の責任です
  • 技術的内容:記事中のコードや設計は例示であり、実際の使用時は十分な検証が必要です
  • 損害の免責:本記事の内容に起因する損害について、著者は責任を負いかねます

安全第一でドローン技術を学び、楽しんでください。