技術調査(部品・構成)
Web調査結果(2026-07-18実施)。前提: AI/ML・Jetson/Raspberry Pi不使用、マイコン完結・低コスト。
1. ブラシレスモータ + ESC/ドライバと低速制御性
選択肢比較
| 構成 | 低速制御性 | コスト | 難易度 | 備考 |
|---|---|---|---|---|
| ドローン用ESC (BLHeli系) + センサレス | × 極めて悪い | ◎ | 低 | 高速回転専用設計。低速でデシンク・失速。停止付近の制御は事実上不可 |
| RCカー用センサレスESC | △ | ○ | 低 | 始動時コギングあり。逆起電力検出方式のため極低速が苦手 |
| RCカー用センサ付きESC (クローラー用) | ○〜◎ | △ 1〜2万円 | 低 | ホールセンサで停止からの滑らかな発進。Hobbywing QuicRun Fusion SE等はFOC駆動 |
| SimpleFOC + ジンバルモータ(2804/5010) + AS5600 | ◎ | ◎ 数千円 | 中〜高 | 正弦波FOCで停止〜最高速まで滑らか。速度/位置/トルク閉ループ。ESP32/STM32/RP2040で直接駆動可 |
| VESC | ◎ | × 1万円超・大型 | 中 | ミニカーにはオーバースペック |
| DCブラシ + エンコーダ + PID(比較用) | ○ | ◎ | 低 | フォールバック先。置き換えの動機を明確にしておく |
推奨
- 本命: SimpleFOC + センサ付き小型BLDC(例: Makerbase 2804/5010 + AS5600磁気エンコーダ)。 マイコン上でFOCが動き「マイコン完結・低コスト」の方針に最適。停止〜極低速までコギングなしの速度閉ループ。
- 次点: クローラー用FOC一体型ESC(QuicRun Fusion SE等)。実装最速だが1万円級、速度フィードバックは別途。
- センサレスは原理的に低速が弱いため不採用。「センサ付き(ホール or エンコーダ)」を必須条件とする。
参考: SimpleFOC / ESP SimpleFOC (Espressif公式) / SimpleFOCmini / Makerbase 2804+AS5600 / QuicRun Fusion SE / BLHeli_S低スロットル失速問題
2. マルチマイコン構成の設計パターン
| パターン | 画像処理側 | 制御側 | 通信 | 特徴 |
|---|---|---|---|---|
| A. ESP32-S3 + RP2040/RP2350 | ESP32-S3(カメラI/F, PSRAM) | RP2040(PIOでエンコーダ/PWM得意) | UART | 両方安価。市販品(SenseCAP Indicator)にも同構成の実績。Wi-Fiデバッグ可 |
| B. スマートカメラ + メインMCU | Pixy2 / HuskyLens / OpenMV / M5 UnitV | STM32/ESP32/RP2040 | UART/I2C/SPI | 画像処理を完全オフロード。メインMCUは結果を受けるだけ |
| C. 高性能MCU 1個 | — | Teensy 4.1等 | — | 性能的には可能だがカメラI/Fと制御の両立が煩雑 |
マイコン間通信
| 方式 | 注意点 |
|---|---|
| UART(推奨) | 最も定石。非同期で互いをブロックしない。共通GND必須、パケット化(ヘッダ+チェックサム)を自作 |
| I2C | ESP32はスレーブ実装が弱い(クロックストレッチ問題)。ToF用バスと分離必須 |
| SPI | 高速だが配線増。スレーブ側DMA必須 |
| CAN(ESP32はTWAI内蔵) | ノイズ耐性最強だがトランシーバ外付け。2ノード間ではオーバーエンジニアリング気味 |
- モータノイズ対策: UART配線は短く・ツイスト・GND太く。
- 通信断でも制御側が安全に走り続ける(タイムアウトで直近値保持→加点機能停止)設計にする。
参考: ESP32-S3⇔RP2040 UART通信 (Zenn) / ESP-IDF TWAI / Pixy2設計思想
3. マイコンでの簡易画像処理(矢印・LED信号認識)
| デバイス | 方式 | フレームレート | 自由度 | 価格帯 |
|---|---|---|---|---|
| Pixy2 | 色ブロブ+ライン検出(専用FW) | 60fps固定 | 低 | 〜1万円 |
| HuskyLens (K210) | 色/ライン/物体追跡など内蔵7機能 | 11〜30fps | 低 | 〜7千円 |
| OpenMV (H7) | MicroPythonで自由記述(blob/テンプレートマッチ) | QVGAで数十fps | 高 | 1〜2万円 |
| M5 UnitV (K210) | MaixPyでblob/色抽出 | QVGAで実用fps | 高 | 〜4千円 |
| ESP32-S3カメラボード | 自作: RGB565色しきい値→blob検出 | 処理込み数〜十数fps | 高(全自作) | 2〜3千円 |
| ESP32-CAM(無印) | 同上だが性能劣る | 〜7fps | 高 | 〜1500円 |
LED矢印認識の現実的な手法
- 色抽出+ブロブ検出(推奨): 露出を意図的に下げるとLED発光部だけが残り、しきい値処理が安定。 左右判定はブロブ重心のx座標や画素分布の偏りで可能。最軽量で全デバイスで実装可能。
- テンプレートマッチ(OpenMV find_template): 距離が既知の場面向け。スケール変化に弱い。
- 学習系(HuskyLens物体分類): 最速で動くが照明変化への頑健性は現場調整次第。
推奨: コスト優先なら ESP32-S3で色抽出+blob自作(2〜3千円)。開発期間優先なら HuskyLens / Pixy2。 国内ではマイコンカーラリー カメラクラス(GR-PEACH)がマイコンのみのカメラ走行を確立している好例。
参考: M5 UnitV / HuskyLensレビュー (diyrobocars) / OpenMVライントレース / ESP32-CAMカメラ設定
4. 白線(ゴールライン)検知 — グレーカーペット上
| センサ | 応答速度 | 適性 | 備考 |
|---|---|---|---|
| フォトリフレクタ(RPR-220, LBR-127HLD等) | ◎ μs級 | ○ | 1個100円前後。設置高さ数mm〜1cm。2〜3個で十分 |
| ラインセンサーアレイ(Pololu QTR-3A/8A) | ◎ | ○ | キャリブレーションAPIが優秀 |
| カラーセンサ(TCS34725) | △ 積分2.4ms〜 | △ | 応答遅・設置シビア。生産終了情報あり、新規採用非推奨 |
| カメラ流用 | △ | ○ | 高位系に負荷が寄り、制御系自立の方針と相性が悪い |
カーペット特有の注意点と定石
- 毛足の乱反射・距離変動でアナログ値が揺れる → ①低め(5〜10mm)固定 ②複数センサのAND/多数決 ③起動時にカーペット面と白線上でキャリブレーション ④しきい値にヒステリシス ⑤遮光フード。
- ゴール検知は通過1回検出できればよいので、横一列2〜4個+時間差判定が誤検知に強い。
推奨: フォトリフレクタ2〜4個(またはQTR-3A)+起動時キャリブレーション。
参考: Pololu QTRシリーズ / 秋月 LBR-127HLD / フォトリフレクタの使い方
5. ToFセンサー(VL53系)の仕様と5個同時使用の定石
| センサ | 最大測距 | FoV | レート | 特徴 |
|---|---|---|---|---|
| VL53L0X | 〜2m | 25° | 高速モード〜50Hz(精度低下) | 最安・実績最多(現行構成) |
| VL53L1X | 〜4m | 27°(ROIで絞込可) | Shortモード20msで50Hz | ROIで実効FoVを制御可能。5個構成の本命 |
| VL53L5CX | 〜4m | 63°対角・8×8ゾーン | 8×8で15Hz、4×4で60Hz | 1個で深度マップ。壁の傾き推定可能だが高価 |
複数個使用の定石
- I2Cアドレスは全個体0x29固定・不揮発でない → 起動時に全XSHUTをLow → 1個ずつ起こして ソフトからアドレス変更(0x30, 0x32, …)。毎起動時に必須。XSHUT用GPIOが個数分必要。
- 代替: I2CマルチプレクサTCA9548A、またはI2Cバス複数系統に分散。
- 光学干渉: FoVが重なる至近配置では相互干渉があり得る → 取付角度で重なり回避、 測定タイミングの互い違いトリガ、L1XならROIで受光範囲を絞る。
- 5個×50Hzのポーリングは割り込み(INTピン)駆動にすると制御ループを乱さない。I2Cは400kHz。
推奨: VL53L1X×5 + XSHUT個別GPIO + Shortモード50Hz。前方1個だけVL53L5CX(4×4/60Hz)で 壁面の向きを取る拡張はコーナー進入の姿勢推定に有効(コスト増と相談)。
参考: VL53L0X/L1X解説 / VL53L1X 50Hz設定 (ST) / 複数接続 (Qiita) / ESP32+VL53L0X複数接続 (DevelopersIO) / VL53L0X×3の自律走行車 (elchika)
6. IMU + エンコーダのデッドレコニング(スタック検知・自動復帰)
| 手法 | 精度 | 難度 | 備考 |
|---|---|---|---|
| 車輪エンコーダのみ | △ スリップで破綻 | 低 | カーペットはスリップ大きめ |
| エンコーダ(距離) + ジャイロ(方位) | ○ | 低〜中 | 定石。方位はジャイロyaw積分。MPU-6050/BMI160で実用 |
| 相補フィルタ/Madgwick | ○+ | 中 | yawは磁気なしではドリフト残る |
| EKF | ◎ | 高 | 本用途にはオーバーキル |
- 位置更新は
x += d·cos(θ), y += d·sin(θ)。10〜100Hzでマイコン余裕。起動時静止でジャイロバイアス較正。 - 壁あり周回コースなのでToF壁距離で横方向を随時リセットすれば累積誤差は実質問題にならない。 オドメトリは「どの区間にいるか」の粗い進捗管理・ゾーン制御に使う。
スタック検知・自動復帰の設計
- 指令 vs 実測の乖離: 目標速度が出ているのにエンコーダ速度≈0がN ms継続 → スタック判定。 FOC構成なら電流(トルク)上昇も併用可。
- 車輪空転型スタック(車輪は回るが進まない)は ToF距離の変化停止で検出。
- 復帰シーケンス: 停止 → 少し後退 → スタック直前のジャイロ方位へ旋回補正 → 再前進、を ステートマシンで実装。試行回数上限を設け、失敗時は逆方向へ。
SimpleFOC構成ならAS5600の回転情報がそのままエンコーダになるため、追加コストはIMU(数百円)のみ。
全体推奨構成(まとめ)
- 駆動: 小型BLDC + AS5600 + SimpleFOC(撤退先: DCブラシ+エンコーダ)。RCシャーシ流用ならQuicRun Fusion SEが次点
- 頭脳分離: 制御MCU(RP2350/STM32: ToF×5・白線・モータ・IMU)⇔ UART ⇔ 視覚MCU(ESP32-S3自作 or HuskyLens/Pixy2)
- ToF: VL53L1X×5、XSHUTでアドレス再割当、Shortモード50Hz、割り込み駆動
- 白線: フォトリフレクタ2〜4個 + 起動時キャリブレーション
- スタック対策: エンコーダ乖離 + ToF距離停滞で検知 → 後退・旋回・再前進のステートマシン