Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

open-rdc/NavVLA

Repository files navigation

NavVLA

Overview

NavVLA は、OmniVLA-edge を用いた移動ロボット向けナビゲーション実装です。
本リポジトリには、以下の 2 つの機能が含まれます。

  • OmniVLA-edge のファインチューニング
  • ROS 2 ノードによるナビゲーション推論

OmniVLA 本体はサブモジュールとして管理され、本リポジトリ側では訓練スクリプト、データセット読み込み、ROS 2 ノード、設定ファイルを提供します。

データセット構成は dataset.yamldatasets ネストに記述し、複数データセットをまとめて学習できます。

Training

1. 事前準備

  • OmniVLA サブモジュールを取得する
  • OmniVLA-edge の重みを training/config/train.yamlweights_path に配置する
  • 学習用データセットを用意し、training/config/dataset.yaml を更新する
  • TensorBoard を使う場合は tensorboard をインストールする

2. 設定ファイル

3. 実行コマンド

python3 train.py \
 --config training/config/train.yaml \
 --network-config training/config/network.yaml \
 --dataset-config training/config/dataset.yaml

4. TensorBoard

学習時には TensorBoard ログを出力します。
デフォルトの出力先は training/runs/tensorboard です。

tensorboard --logdir training/runs/tensorboard

記録される主な loss:

  • loss/train_total
  • loss/train/<dataset_name>_train
  • loss/train_datasets_total
  • loss/eval/<dataset_name>_test
  • loss/eval_total

Dataset

要求ディレクトリ構成

各データセットは以下の形式を想定しています。

<DATA_FOLDER>/
 <traj_name_1>/
 traj_data.pkl
 traj_prompt.txt
 0.jpg
 1.jpg
 2.jpg
 ...
 <traj_name_2>/
 traj_data.pkl
 traj_prompt.txt
 0.jpg
 1.jpg
 2.jpg
 ...

train / test split 側は traj_names.txt を持つディレクトリを指定します。

<SPLIT_FOLDER>/
 traj_names.txt

traj_prompt.txt は、言語指示を使う modality_id で学習する場合に使用します。

例:

Go to the blue box
Go to the blue box
Turn left at the corner
...

言語指示を使わない modality_id では、traj_prompt.txt は goal modality として利用されません。

データセット設定項目

項目 内容
data_folder 画像と traj_data.pkl を含むデータセット本体ディレクトリ
train traj_names.txt を含む train split ディレクトリ
test traj_names.txt を含む test split ディレクトリ
end_slack 軌道末尾の余裕フレーム数
goals_per_obs 1 観測あたりに何回 goal をサンプリングするか
waypoint_spacing waypoint の時間間隔
modality_id 使用モダリティ ID

言語教師データを使う学習では、modality_id に language を含む ID を指定します。
現在の raw trajectory dataset では satellite/map 入力は未実装のため、実用上は 7 または 8 を使用します。

Navigation

概要

ROS 2 ノード navigation は、画像入力と言語指示などの goal modality を購読または設定し、OmniVLA-edge で推定した軌跡を nav_msgs/Pathgeometry_msgs/Twist に変換して出力します。

起動ファイル:

設定ファイル:

起動方法

ros2 launch navvla navigation.launch.py

Topic 一覧

Topic 方向 内容
/image_raw sensor_msgs/msg/Image Subscribe 現在観測画像
/autonomous std_msgs/msg/Bool Subscribe 自律動作の有効 / 無効
/prompt std_msgs/msg/String Subscribe 言語指示
/cmd_vel geometry_msgs/msg/Twist Publish 速度指令
/path nav_msgs/msg/Path Publish 推定 waypoint 列

/promptmodality_id が language を含む場合に goal instruction として使われます。
新しい message を受け取るたびに CLIP text encoder で特徴量を更新し、推論時の feat_text としてモデルへ渡します。起動直後、または language を使わない modality_id では "No language instruction" が使われます。

主な nav.yaml 項目

項目 内容
weights_path 推論に使う OmniVLA-edge 重み
context_size 観測履歴長
len_traj_pred 予測 waypoint 長
interval_ms 推論周期
modality_id 使用モダリティ
metric_waypoint_spacing waypoint のメートル換算係数
goal_pose 目標姿勢
goal_image_path ゴール画像パス
linear_max_vel 最大並進速度
angular_max_vel 最大角速度

言語指示は nav.yaml の固定値ではなく、/prompt トピックから std_msgs/msg/String として入力します。

modality_id の意味

ID 内容
0 satellite only
1 pose and satellite
2 satellite and image
3 all
4 pose only
5 pose and image
6 image only
7 language only
8 language and pose

ライセンス

本リポジトリの独自実装部分は MIT License を想定しています。
一方で OmniVLA/ はサブモジュールとして管理される別プロジェクトであり、OmniVLA 側のライセンスに従います。

  • 本リポジトリ独自コード: MIT
  • OmniVLA/: OmniVLA/LICENSE に従う

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /