Skip to content

言語指示によるナビゲーション#3

Open
kyo0221 wants to merge 26 commits into
mainfrom
lang_only
Open

言語指示によるナビゲーション#3
kyo0221 wants to merge 26 commits into
mainfrom
lang_only

Conversation

@kyo0221
Copy link
Copy Markdown
Collaborator

@kyo0221 kyo0221 commented May 21, 2026

概要

  • modality id = 7(言語指示のみ)でのナビゲーションシステムの構築と検証
  • データ収集,学習周りのインフラ整備

ToDO

  • 言語アノテーションツールの作成
  • 学習周りの整備(必要であれば)
  • シミュレータ環境での検証
  • 実環境での検証

@kyo0221
Copy link
Copy Markdown
Collaborator Author

kyo0221 commented May 21, 2026

アノテーションツールの作成

GUI画面から言語アノテーション付与範囲と言語指示を与え,データセットに加えるアノテーションツールを作成した
GUIにはtkinterライブラリを使用している

Screenshot from 2026-05-21 13-02-34

@kyo0221
Copy link
Copy Markdown
Collaborator Author

kyo0221 commented May 21, 2026

学習周りの整備

  • 今までtest/trainを学習前に分割し,それぞれ教師データのepisode毎に管理していたが,単一のプロジェクト内で動作したほうが利便性があると考え,train.py実行時に自動的にtest/trainの振り分けがされるようにした
    • デフォルト値でのtest/train振り分け割合は3:7
  • これにより,dataset.yamlにデータセットpathを記載するだけで学習が行えるようになった

@kyo0221
Copy link
Copy Markdown
Collaborator Author

kyo0221 commented May 21, 2026

シミュレータ環境での検証

実験の概要

  • シミュレータ環境にてコントローラ操作により約5000枚程度のデータを収集
  • 収集したデータに,言語指示のアノテーションを施す
  • 事前学習済みomnivla-edge重み(公式提供)をファインチューニング
  • 推論時に渡す言語指示により,行動が変化するか検証

言語の教師データ

  • 分岐路での行動に応じて,以下の中から無作為に抽出

  • 事前学習の教師データが主にGo to 〇〇や,Move toward ◯◯のようになっていたため,事前学習の良さを活かすために,そのような言語を選んだ

  • 直進を示す言語

    • Go to the door at the end of the corridor
    • Move toward the wall at the end of the hallway
    • Head to the room at the end of the corridor
  • 右折を示す言語

    • Go to the room on the right
    • Move toward the door on the right
    • Head to the corridor on the right
    • Go into the right hallway
  • 左折を示す言語

    • Go to the room on the left
    • Move toward the door on the left
    • Head to the corridor on the left
    • Go into the left hallway

使用データセット

https://drive.google.com/drive/folders/1nzDhZ0qlgvGVQv2IRQKHIcVKhpY-YxHT?usp=drive_link

言語指示による経路選択(成功例)

https://youtu.be/uvoTCi4T_nw

結果

  • 言語指示により行動が変化することを確認した
    • ただし画像のデータが支配的で,言語指示により教師データにない行動を生成させるといったことは無理そう
  • 分岐路で早く曲がりすぎていた
  • 同じ直進を示すプロンプトでも,指示に従うときと従わない場合があった
    • Head to the room at the end of the corridorでは直進するが,Go to the door at the end of the corridorでは分岐路で曲がってしまう等
    • 教師データに無いパターンだった可能性がある(特定の分岐路+特定の言語指示の教師データが無かったとか)

@kyo0221
Copy link
Copy Markdown
Collaborator Author

kyo0221 commented May 21, 2026

シミュレータ環境での検証にて,基本的には言語に依らず壁には当たらないように走行する様子が確認できた(教師データに無い場所含む)

おそらく,事前学習済みモデルの良さがでている

また,言語の変更は無しで,特定の分岐路を障害物で塞いだ際に,別の経路を選択する行動も見られた

以前調査したときに,教師データの中には塞がれた経路には行かないようなデータも含まれていることを確認しているので,そこも事前学習済みモデルの良さがでていると感じた

@kyo0221 kyo0221 mentioned this pull request May 22, 2026
3 tasks
@kyo0221
Copy link
Copy Markdown
Collaborator Author

kyo0221 commented May 28, 2026

言語アノテーションの利便性を上げるために,End indexに紐付いた言語指示がGUI表示で見れるようにしました(青字)

Screenshot from 2026-05-28 12-55-55

kyo0221 and others added 12 commits May 28, 2026 12:59
- 観測モデルを温度スケーリング exp(β·cos) に変更し likelihood を similarity へ整理
- 確率的運動モデル(-1/stay/+1/+2)を導入し停止時の前進ラチェットを抑制
- レトロスペクティブフィルタ用にライブ観測のスライディング窓(deque)を追加
- best_time_idx を重み付きヒストグラムによるMAP推定へ変更
- リサンプリングのインデックス選択を修正

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- PFoENodeのクラス宣言をPFoENode.hppへ切り出し
- パラメータをYAML必須化(automatically_declare_parameters_from_overrides)
- Method B/Cの調整パラメータ(obs_temperature, p_back/stay/forward/skip)を追加
- ノード名を pfoe_node→pfoe, clip_encoder_node→clip_encoder に統一
- launchのYAMLキー参照を更新

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- cv2のimport/image_to_cv2を削除
- 手動のクロップ・リサイズ・BGR変換をやめCLIP preprocessに委譲
- ROS画像をnumpy経由でPILへ直接変換

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kyo0221 and others added 2 commits May 30, 2026 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant