自律ごみ収集ロボット(FSM)プロジェクトの紹介

Other

概要

このリポジトリは「自律ごみ収集ロボット」を想定した、有限状態機械(FSM)ベースの制御フレームワークをArduino(ATmega328P)向けに実装したプロジェクトです。NAVIGATING(巡回)、EVADING(回避)、DATA_LOGGING(データ記録)のような明確に分離された状態を持ち、HC-SR04超音波センサでの障害物検出、DHT22による温湿度取得、モーター制御を組み合わせて安全な動作と環境テレメトリの同時処理を実現します。可読性を優先した設計で、教育・プロトタイピング用途に適しています。

GitHub

リポジトリの統計情報

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

主な特徴

  • Finite State Machine(FSM)アーキテクチャで動作ロジックを分離し、If/Elseのスパゲッティ化を防止
  • 超音波センサ(HC-SR04)による障害物検知で閾値(例: 25cm)未満で回避モードへ遷移
  • DHT22による温湿度の非同期データロギングを状態外/非同期処理で扱う
  • Arduino(ATmega328P)互換環境で動作し、教育・実験環境に容易に導入可能

技術的なポイント

本プロジェクトの中心は「FSMによる明確な状態管理」です。従来のループ内で大量のif/elseを使う手法と比べ、状態ごとに入力(センサ)・出力(モーター、通信)・遷移条件を明示的に切り分けることで保守性と拡張性が向上します。NAVIGATING状態はデフォルト動作で、前進しつつHC-SR04の距離をポーリングします。距離が閾値(例:25cm)を下回るとEVADINGへ遷移し、アクチュエータを停止して安全なベクトル(旋回やバック)を計算して障害物を回避します。DATA_LOGGINGは非同期(アクチュエーションに影響を与えない)状態として設計され、DHT22から温湿度を取得してシリアルや無線で送信できます。

ハードウェア面ではArduino/ATmega328P、HC-SR04、DHT22という低コスト・汎用部品を想定しており、電源やモータードライバの実装次第で屋内外のプロトタイプに対応可能です。ソフトウェアはC++(Arduinoスケッチ形式)で記述され、FSMの実装は状態遷移の明示やタイムアウト、非同期処理の管理(例えばミリ秒単位の経過検知)を行う工夫が見られます。拡張点としてはPID制御やセンサフュージョン(IMUの追加)、通信プロトコルの安定化(MQTTやROSブリッジ)などが挙げられます。コードは教育的に読みやすく設計されているため、学習教材としても有用です。(約700字)

プロジェクトの構成

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

  • .gitignore: file
  • CONTRIBUTING.md: file
  • HybridRoboticsEngine.ino: file
  • LICENSE: file
  • README.md: file

使い方(簡易)

  1. 必要なハードウェア(Arduino、HC-SR04、DHT22、モータードライバ)を接続する。
  2. HybridRoboticsEngine.ino をArduino IDEで開く。
  3. ピン設定や閾値(距離、ロギング間隔)をREADMEやスケッチ内の定数で調整する。
  4. ボードに書き込み、シリアルモニタでデバッグする。

拡張と改善の提案

  • 障害物回避アルゴリズムを単純な停止→旋回→前進から、センサの角度分布に基づく安全経路選択へ拡張する。
  • モーター制御をPWMの速度制御/エンコーダ付きのフィードバック制御(PID)にすることで軌跡精度を向上。
  • DHT22以外に気圧・照度・カメラを追加して環境認識を強化、データはSDカードやMQTTで長期保存。
  • FSMをライブラリ化し、他のロボットプロジェクトでも再利用できる設計にする。

まとめ

教育的で拡張性の高いFSMベースの自律ロボット入門プロジェクトです。(約50字)

リポジトリ情報:

READMEの抜粋:

🧠 System Architecture: Finite State Machine (FSM)

This project moves away from standard ‘If/Else’ scripting to a robust FSM architecture:

  • NAVIGATING: Default state; moves forward while polling ultrasonic data.
  • EVADING: Triggered at <25cm; halts actuation to recalculate safe vectors.
  • DATA_LOGGING: Asynchronous state for transmitting DHT22 climate metrics.

🛠️ Hardware Requirements

  • Arduino / ATmega328P
  • HC-SR04 Ultrasonic Sensor
  • DHT22 Temperature/Humidity Sensor
  • L…