名称 MVP設計書
番号 MIRS2502-DSGN-0003

版数 最終更新日 作成 承認 改訂記事
A01 2025.12.08 橋本 颯馬 初版

本ドキュメントは、MIRS2502プロジェクト「散水奉行」のMVP (Minimum Viable Product)構想に基づき、 「走行しながらの散水」を実現するための詳細な設計内容を記述した設計書である。

目次


1. MVP仕様概要


2. システム構成図

PC(ROS 2)、LiDAR、webカメラ、足回り(MG4)、散水機構(ポンプ・タンク・ノズル)、清掃用ブラシ、機材ケースで構成される。

全体のシステム構成図を図1に示す。

図1. 全体システム構成図

3. モジュール分担


4. ソフト詳細設計

本システムは上位系のPC(ROS 2)と下位系のマイコン(ESP32)で構成され、それぞれ以下の機能を分担する。詳細プログラムをgithubにまとめ以下のリンクにて示す。

GitHub(MIRS2502)

4.1. ROS 2モジュール構成 (PC側)

PC側ではUbuntu上で以下のノード群が連携し、認識・判断・経路計画を行う。

表1. ROS 2モジュール一覧

ノード / パッケージ名 概要・機能
Behavior_Tree 全体制御・状態管理
システムの統括制御を担当。探索フェーズや散水フェーズといった状態遷移の管理と、上位判断を行うノード。
micro-ROS Agent マイコン通信ブリッジ
micro-ROS用ノード。ESP32とシリアル通信を行い、マイコンをROS 2ネットワークの一部として組み込む。
sllidar_ros2 LiDARドライバ・フィルタ
RPLiDARとの通信を確立し、スキャンデータ(/scan)のパブリッシュおよび点群の一次フィルタリングを行う。
odometry_publisher オドメトリ計算
エンコーダー情報のサブスクライブを行い、ロボットの移動量(オドメトリ)を計算して /odom トピックとしてパブリッシュする。
cone_detector コーン認識
LiDARデータから散水対象となるコーンを認識し、その相対位置を出力するパッケージ。可動範囲定義の基礎となる。
Accum 位置関係保存
起動時に認識したコーンの位置関係データを蓄積・保存し、システム全体で共有できるようにするノード。
cluster 点群クラスタリング
点群データのクラスタリング処理を行うノード。ノイズを除去し、コーンなどの物体認識精度を向上させる。
Area 可動範囲定義
クラスタリングによって得られたコーンの位置関係を基に、ロボットが散水すべき可動範囲(多角形エリア)を定義する。
coverage_planner 走行経路生成
指定されたエリアを塗りつぶすような走行経路の生成を行うためのパッケージ。
Zigzag ジグザグ経路算出
Areaノードが定義した可動範囲内を満遍なく走行するためのジグザグ経路を生成する。算出したウェイポイントをNavigation2へ渡す。
Navigation2 自律走行・経路計画
自律走行の主要部分。自己位置推定と経路作成を行う。Zigzagノードからのウェイポイントをゴールとし、そこまでの局所的な経路生成と制御を行う。
Scan to PC データ記録
デバッグや解析用として、スキャンデータをPC内のファイルシステムに保存するノード。
図2. Ubuntu PCモジュール構成図

4.2. ESP32モジュール構成 (マイコン側)

ESP32のファームウェアはArduino(C++)ベースで実装されており、以下のファイル群で構成される。 メインループ内でmicro-ROSから、各コールバック関数を通じて制御を行う。

表2. ESP32モジュール詳細

ファイル名 概要・実装機能
mirs24_esp32.ino メインエントリポイント
setup()で各モジュールの初期化を行い、loop()内で rclc_executor_spin_some を呼び出し、ROS 2通信タスクを継続的に実行する。
config.h システム設定ヘッダ
GPIOピン配置(モータ、エンコーダ、電圧計)、ロボットの物理パラメータ(ホイール径、トレッド幅)、PIDゲイン定数、ROS Domain IDなどを一元管理する。
ros_setup.ino 通信セットアップ
micro-ROS Agentとの接続、ノード(ESP32_node)の作成を行う。Publisher/Subscriber/Service/Timerを初期化し、Executorに登録してイベント管理を行う。
topic_callback.ino トピック受信・定期処理
  • timer_callback: 定期的にPID制御を実行し、オドメトリ・電圧・現在速度をPublishするメインループ。
  • cmd_vel_Callback: /cmd_velを受信し、目標速度変数を更新する。
service_callback.ino サービス処理
PC側からのリクエストを処理する。
/esp_update: PIDゲイン等のパラメータを動的に変更する。
/reset_encoder: エンコーダのカウント値をリセットする。
vel_ctrl.ino 速度制御ロジック
PID_control()関数にて、目標速度と現在速度の偏差からモータへのPWM出力値を計算(PID)し、ハードウェアドライバに出力する。
encoder.ino エンコーダ割り込み処理
ハードウェア割り込みを使用してパルスをカウントする。左右のタイヤの回転方向判定と積算を行う。
vlt_obserber.ino 電圧監視
アナログピンからバッテリー電圧を読み取り、ROSトピック(/vlt)として送信するためのデータを作成する。
図3. esp32モジュール構成図

5. ハード詳細設計

散水奉行の全体図を以下の図4に示す。

図4. 全体図

回路部分およびPCを保護するケースの全体図面を図5に示す。また、ケースを構成するアクリル部品として、上部パネル・下部パネル・長辺側面パネル・短辺側面パネルをそれぞれ図6、図7、図8、図9に示す。さらに、中間仕切り、内側仕切り、外側仕切りについては、それぞれ図10、図11、図12に示す。

図5. ケース全体図面
図6. 上部パネル
図7. 下部パネル
図8. 長辺側面パネル
図9. 短辺側面パネル
図10. 中間仕切り
図11. 内側仕切り
図12. 外側仕切り

ポンプの各部位についての図面を以下の図13、図14、図15に示す。

図13. ポンプ本体部分図面
図14. ポンプ蓋部分図面
図15. ポンププロペラ部分図面

電源基板の回路図と電源基板図面を以下の図16、図17に示す。

図16. 電源基板回路図
図17. 電源基板図面

esp32基板の回路図とesp32基板図面を図18、図19に示す。

図18. esp32基板回路図
図19. esp32基板図面

6. 使用部品一覧

表 3. 部品リスト (散水機構中心)

部品名 型番・仕様 単価(円) 数量 備考
コンテナボックス M-BP-45 BK (43L) 3,098 1 タンクとして使用
ワンタッチ継手 MSCNL12-4 320 2 ポンプ・チューブ接続
ポリウレタンチューブ φ12mm 黒 999 1 送水用
デッキブラシスペア - 769 2 清掃用,機体後部に搭載
フレキシブルカップリング φ5,φ6 2,698 1 モーター軸接続用
ベアリング 内径6mm,外径15mm 151 10 ポンプ用
セットカラー 内径6mm,幅10mm 704 3 ポンプ用
セットカラー 内径8mm,幅12mm 836 2 モーター、ブラシ回転用
散水ジェットノズル メタル製 1,758 1 散水切り替え用
制御用PC - - 1 貸与品/自前

7. 動作フロー

基本はPCからのコマンド送信でスタート。

図20 全体のフローチャート

8. テスト計画とKPI評価


9. スケジュール / マイルストーン


10. 想定される課題と対策