自律型 Arduino 車両 — Greedy Best‑First Pathfinding

Other

概要

STEMフェアのロボティクス部門で1位を獲得した自律走行Arduinoロボットのリポジトリです。4輪のArduino Unoベース車両が6×6のグリッド上で貪欲最良優先探索(A*に着想)を用いて経路を決定し、超音波センサで障害物を検知するとリアルタイムに再経路化します。更に独自のAndroidアプリによるBluetooth制御も統合しており、低メモリ環境(2KB SRAM)に適したデータ構造とアルゴリズムの工夫が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 8
  • ファイル数: 5
  • メインの言語: C++

主な特徴

  • 6×6グリッド上での貪欲最良優先探索による経路探索(A*に着想)
  • Arduino Uno(2KB SRAM)向けにメモリ最適化された実装
  • 超音波センサによるリアルタイム障害物検知と動的再経路化
  • Bluetoothを用いたカスタムAndroidアプリによる遠隔制御

技術的なポイント

このプロジェクトの肝は「低リソース環境での合理的な経路探索」と「実世界センサを扱った動的な再経路化」にあります。6×6の限定されたグリッドに対しては、フルスケールのA*で使うような大きなオープン/クローズド集合を持つ必要がなく、貪欲最良優先探索(ヒューリスティック優先、f = hに近い)はメモリと計算双方のコストを抑えます。Arduino Unoの2KB SRAM制約下では、ノード情報やキュー、マップ表現をビット列や小型配列で格納する工夫が重要であり、本プロジェクトもその点を重視しています。

ハードウェア面では4輪駆動のシャーシに超音波センサを配置し、前方の障害物を連続的に監視します。障害物が検出されると現在の経路を無条件に続行するのではなく、障害物情報をグリッドマップに反映して再探索を行い、回避行動を実行します。これにより静的経路だけでなく動的環境への対応が可能です。モータ制御やセンサ読み取りは、ブロッキングを避けるために定期的なループで非同期的に更新される想定で、センサのノイズ除去や複数回平均化などの実運用上の対策も取り入れられています。

通信面ではBluetoothによるAndroidアプリと連携し、手動オーバーライドやゴール指定、デバッグ情報の取得が可能です。これによりフィールドテストや調整が容易になり、ユーザビリティも向上します。ドキュメントとハードウェア設計がリポジトリに含まれているため、再現や学習目的での利用にも適しています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • docs: dir
  • hardware: dir
  • main.ino: file

まとめ

低リソース環境で実用的な自律走行と動的回避を両立した教育・研究向けの良いサンプルです。

リポジトリ情報: