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ステップ:
- tool_definitions.py にツール定義追加
- tool_executor.py に _exec_ツール名 メソッド追加
- 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. 次にやること(優先順)
- GitHub公開を完了する
- 個別ダウンロードしたREADME.md, README_ja.mdをGit Bashで配置
- スクリーンショットをdocs/images/に追加
- git push
- 充電台からパトロールテスト
- startPatrol / stopPatrol / getPatrolStatus の実機確認
- Phase 3 設計
- VPR診断パネル(現在画像 vs Teach画像の比較)
- 失敗復帰UX(stagnation検出→LLMが対処法提示)
- Teach & Repeat統合
- 論文構成の具体化
- 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