SCOUT x MulmoChat プロジェクト引き継ぎ記録

最終更新: 2026-02-21

1. プロジェクト概要

SCOUT(Moorebot Scout, roller_eye系巡回ロボット)にMulmoChatのGUI Chat Protocol思想を適用した対話型運用インタフェース。MulmoChatのコードには依存せず、思想のみを借りてPython独立構成で実装。
  • GitHub公開準備済み(英語README + 日本語README)
  • MIT License

2. 実装完了状況

Phase 1(基本操作)✅ 全て実機動作確認済み

ツール ROS API 状態
getScoutStatus カメラ画像 + odom + nav_get_status
moveCorrection /UtilNode/algo_move
rotateCorrection /UtilNode/algo_action
stopScout /NavPathNode/nav_cancel
askOperatorDecision LLM生成

Phase 2(パトロール)実装済み・一部未テスト

ツール ROS API 状態
showPatrolRoutes /NavPathNode/nav_list_path ✅ 実機確認済み
startPatrol /NavPathNode/nav_path_start 🔧 充電台からテスト必要
stopPatrol /NavPathNode/nav_patrol_stop 🔧 パトロール中にテスト必要
getPatrolStatus /NavPathNode/nav_get_status + カメラ 🔧 パトロール中にテスト必要

Phase 3(未実装)

  • VPR診断パネル(presentDiagnosis)
  • 失敗復帰レポート
  • Teach & Repeat 統合

3. 重要な技術的決定事項

algo_roll は使えない

  • /UtilNode/algo_roll はサービスとして存在するが、全パラメータパターンで ret=-1 を返す
  • 旋回は /UtilNode/algo_action を使用
  • 角度→時間変換: time_ms = (angle_deg * pi / 180) / rotatedSpeed * 1000
  • rotatedSpeed > 0 で左旋回、< 0 で右旋回

algo_move の仕様

  • xDistance は常に 0(この機体では横移動なし)
  • yDistance > 0 で前進、< 0 で後退
  • speed: 0.15 が標準

Python 3.8 制約

  • SCOUTのPC環境は Python 3.8
  • Gradio は動かない(markupsafe ImportError)→ Flask版を採用
  • python3 コマンドを使用(python は未登録)

文字化け問題

  • Windows環境でtar.gzを展開するとUTF-8のファイルがShift-JISに変換されることがある
  • 対策: Git Bash または WSL で展開する。PowerShellの > リダイレクトは使わない

4. ファイル構成(最新版)

scout-mulmochat/
├── app_flask.py          # Flask チャットUI + GUIレンダリング(メインエントリ)
├── llm_client.py         # Claude API通信 + tool_useループ
├── tool_definitions.py   # 9ツール定義 + System Prompt
├── tool_executor.py      # ツール実行エンジン(GUI Chat Protocol核心)
├── ros_client.py         # SCOUT ROS通信(7サービスクライアント)
├── interaction_log.py    # 構造化ログ(JSON Lines形式)
├── requirements.txt      # anthropic, flask
├── .gitignore
├── LICENSE               # MIT
├── README.md             # 英語版(メイン)
└── docs/
    ├── README_ja.md      # 日本語版
    ├── api-reference.md  # SCOUT API リファレンス
    └── images/           # スクリーンショット置き場

5. ROS Service 一覧(実機確認済み)

/UtilNode/algo_move          # 前後移動 ✅
/UtilNode/algo_action        # 旋回(時間指定) ✅
/UtilNode/algo_roll          # 角度指定旋回 ❌使用不可
/UtilNode/ai_get_detect_setting  # AI検知設定取得 🔧未テスト
/UtilNode/ai_set_detect_setting  # AI検知設定変更 🔧未テスト
/NavPathNode/nav_list_path   # ルート一覧 ✅
/NavPathNode/nav_path_start  # パトロール開始 🔧未テスト
/NavPathNode/nav_patrol_stop # パトロール停止 🔧未テスト
/NavPathNode/nav_get_status  # ナビ状態取得 ✅
/NavPathNode/nav_cancel      # ナビキャンセル ✅
/NavPathNode/nav_exit        # ナビ終了 🔧未テスト
/NavPathNode/nav_path_save   # パス保存 🔧未テスト
/NavPathNode/nav_delete_path # パス削除 🔧未テスト
/NavPathNode/nav_patrol      # パトロール実行 🔧未テスト
/NavPathNode/nav_waypoint_add    # ウェイポイント追加 🔧未テスト
/NavPathNode/nav_waypoint_query  # ウェイポイント照会 🔧未テスト
/NavPathNode/enable_vio      # VIO有効化 🔧未テスト
/CoreNode/night_get          # ナイトビジョン状態 🔧未テスト
/CoreNode/adjust_light       # 照明調整 🔧未テスト
/CoreNode/adjust_exposure_time   # 露出調整 🔧未テスト
/CoreNode/motion_set_zone    # モーション検知ゾーン 🔧未テスト
/CoreNode/stop_detect        # 検知停止 🔧未テスト

登録済みパトロールルート(実機確認済み)

  • table2 (size: 107796, created: 2025-11-19)
  • test (size: 108305, created: 2025-11-19)
  • table (size: 185653, created: 2025-11-19)

6. 起動方法

モックモード(ROS不要)

tar xzf scout_mulmochat.tar.gz
export ANTHROPIC_API_KEY=sk-ant-your-key
python3 scout_mulmochat/app_flask.py --mock
# http://localhost:7860

実機接続

# ROSが設定済みのターミナルで
export ANTHROPIC_API_KEY=sk-ant-your-key
python3 scout_mulmochat/app_flask.py
# http://localhost:7860

7. GUI Chat Protocol の核心設計

各ツールは2種類のデータを返す:
{
    "llm_text": "...",  # LLMの思考材料(テキスト)
    "gui_data": {       # UIにパネル表示(構造化データ)
        "type": "status_panel",  # レンダラを決定
        ...
    }
}
gui_data.type の種類:
  • status_panel: カメラ画像+状態テーブル
  • action_result: Before/After画像比較+成否
  • decision_form: クリック可能な選択肢
  • route_list: パトロールルート一覧
  • patrol_started: パトロール開始通知
  • patrol_status: パトロール進捗+カメラ画像
  • error: エラー表示
新ツール追加は3ステップ:
  1. tool_definitions.py にツール定義追加
  2. tool_executor.py に _exec_ツール名 メソッド追加
  3. app_flask.py の JavaScript に render関数追加

8. 関連ファイル・ドキュメント

  • 操作指令書: ユーザーが実際に使っているSCOUT操作コマンド集
  • Scout_User_Manual_V4_0.pdf: Moorebot公式マニュアル(Scratch API含む)
  • UIロードマップ: scout-mulmochat-ui-roadmap.html(実装済み/次/将来のUI一覧)
  • API リファレンス: docs/api-reference.md

9. 過去の会話トランスクリプト

  • /mnt/transcripts/2026-02-16-00-38-48-scout-mulmochat-architecture-design.txt → 初期設計・MulmoChatブログ記事分析・アーキテクチャ決定
  • /mnt/transcripts/2026-02-18-13-16-53-scout-mulmochat-phase1-implementation.txt → Phase 1実装・Flask版作成・Python 3.8対応・API Key設定

10. 次にやること(優先順)

  1. GitHub公開を完了する
    • 個別ダウンロードしたREADME.md, README_ja.mdをGit Bashで配置
    • スクリーンショットをdocs/images/に追加
    • git push
  2. 充電台からパトロールテスト
    • startPatrol / stopPatrol / getPatrolStatus の実機確認
  3. Phase 3 設計
    • VPR診断パネル(現在画像 vs Teach画像の比較)
    • 失敗復帰UX(stagnation検出→LLMが対処法提示)
    • Teach & Repeat統合
  4. 論文構成の具体化
    • GUI Chat Protocolによるロボット運用の新しいUXパターン
    • 構造化ログによる評価手法
    • Mixed-Initiative操作の定量評価

11. ハードウェア仕様(参考)

  • CPU: Quad-Core ARM A7 @1.2GHz
  • RAM: 512MB LPDDR III
  • Storage: 4GB eMMC
  • OS: Linux + ROS
  • Camera: 2MP 1080P, 広角120°, IRナイトビジョン
  • Wheels: 4x メカナムホイール
  • Battery: 18650 Li-ion 2000mAh(約2時間稼働)
  • Max Speed: 約2km/h

あわせて読みたい