ロボットに必要な「言語 → 行動」の変換システム。 人間のコマンドを理解し、行動コードに変換する。
- 知らないコマンド → 人間が教える
- LLM 不要
- シンプルな学習
- 知らないコマンド → LLM に聞く → 人間が確認
- 学習が早い
- Ollama 必要
| action | name | description |
|---|---|---|
| carry | 運ぶ | 物を持って移動する |
| hold | 保持する | 物を持ち続ける |
| follow | 追従する | 対象についていく |
| stop | 停止する | 動きを止める |
| pick_up | 拾う | 物を拾い上げる |
| put_down | 置く | 物を下に置く |
| come | 来る | 呼んだ人の方へ移動する |
| wait | 待機する | その場で待つ |
| search | 探す | 対象を探し回る |
| look | 見る | 対象を確認する |
| fetch | 取ってくる | 物を取りに行って戻ってくる |
| push | 押す | 物を押して動かす |
| pull | 引く | 物を引っ張る |
| open | 開ける | ドアや容器を開ける |
| close | 閉める | ドアや容器を閉める |
python phase12_language_to_action.pyコマンド: これ運んで
→ 理解: carry (運ぶ) [★記憶から]
【行動】物を持って移動します...
コマンド: あれ持ってきて
→ 飛騨: わかりません。教えてください。
行動コード: fetch
→ 覚えました
# Ollama 起動してから
python phase12b_action_with_llm.pyコマンド: あれ持ってきて
→ 記憶にない。LLM に聞きます...
【LLM の回答】
行動: fetch
理由: 「持ってきて」は物を取りに行って戻る動作なので fetch が適切
→ 推測: fetch (確信度: 80%)
これで覚えていい? (y/n): y
→ 覚えました: 「あれ持ってきて」 → fetch
| コマンド | 動作 |
|---|---|
| q | 終了 |
| s | 統計表示 |
| l | 学習内容一覧 |
| ファイル | 説明 |
|---|---|
| hida_action_memory.json | 基本版の記憶 |
| hida_action_memory_v2.json | LLM 支援版の記憶 |
記憶はファイルに永続化される。 次回実行時、前回の学習内容を引き継ぐ。
コマンド入力
↓
記憶を検索
↓
知ってる → 行動実行
知らない → 人間が教える → 覚える
↓
次から自分で理解
コマンド入力
↓
記憶を検索
↓
知ってる → 行動実行
知らない → LLM に聞く
↓
LLM が推測 → 人間が確認
↓
OK → 覚える
NG → 人間が訂正 → 覚える
↓
次から自分で理解
知らないコマンドに対して、既存の行動コードにないものも教えられる。
コマンド: また明日
→ わかりません
行動コード: power_off
行動名: 電源オフ
→ 覚えました
- 複合コマンドの理解(「取って、持ってきて」)
- クオリアとの統合(重い → 不快)
- 行動コード → モーター制御
- センサー入力との連携
- Python 3.x
- Python 3.x
- Ollama(https://ollama.ai/)
- Gemma 4B(
ollama pull gemma3:4b) - requests(
pip install requests)