Skip to content

TeamSOBITS/sobits_vla_tools

Repository files navigation

JA | EN

Contributors Forks Stargazers Issues License

SOBITS VLA Tools

目次
  1. 概要
  2. 環境構築
  3. 実行・操作方法
  4. 参考文献

Warning

本リポジトリは現時点で「データ収集」のみに対応しています.今後,収集されたRosbagをLeRobotデータセット型に変換できるパッケージも提供する予定です.

概要

SOBITS VLA ToolsはSOBITS自作ロボットをVLAモデルで制御するため,ロボットデータの収集から推論の行動をROS上で通信できるように必要なリソースが用されているリポジトリです.

(上に戻る)

セットアップ

ここで,本リポジトリのセットアップ方法について説明します.

(上に戻る)

環境条件

まず,以下の環境を整えてから,次のインストール段階に進んでください.

System Version
Ubuntu 22.04 (Jammy Jellyfish)
ROS Humble Hawksbill
Python ≥3.10

Note

UbuntuROSのインストール方法に関しては,SOBITS Manualに参照してください.

(上に戻る)

インストール方法

  1. ROSのsrcフォルダに移動します.
    $ cd ~/colcon_ws/src/
  2. 本リポジトリをcloneします.
    $ git clone https://github.com/TeamSOBITS/sobits_vla_tools
  3. 本リポジトリに必要な依存パッケージをインストールします.
    $ cd sobits_vla_tools
    $ bash install.sh
  4. パッケージをコンパイルします.
    $ cd ~/colcon_ws
    $ rosdep update
    $ rosdep install --from-paths src -y --ignore-src
    $ colcon build
    $ source install/setup.bash

(上に戻る)

データ収集セットアップ

ロボットからデータ収集を開始するには,まず record_settings.yaml を設定する必要があります.

  1. record_settings.yaml を同じフォルダ内でコピーし,record_settings_{robot_name}.yaml という名前で保存してください.

  2. 新しいyamlファイルを作成したら,メタデータの更新を始めましょう.ここでは,ロボットの説明情報(必須)ユーザー情報(任意) を記入します.ロボットの種類を把握し,データセットに関してユーザーに連絡できるようにします.

# ロボット情報
robot_info:
    # ロボット名
    name: "robot_name"
    # ロボットのバージョン
    version: "1.0.0"
    # ロボットの説明
    morphology:
    # ロボットのタイプ(例:"mobile_manipulator", "humanoid", "quadruped" など)
    type: "mobile_manipulator"
    parts:
        - head
        - manipulator
        - end_effector
        - mobile_base
        # - legs
    head:
        joint_names:
        - "head_pan"
        - "head_tilt"
    manipulator:
        joint_names:
        - "arm_joint_1"
        - "arm_joint_2"
        - "arm_joint_3"
        - "arm_joint_4"
        - "arm_joint_5"
        - "arm_joint_6"
    end_effector:
        joint_names:
        - "gripper"
    mobile_base:
        joint_names:
        - "base_wheel_left"
        - "base_wheel_right"
    # legs:
    #   joint_names:
    #     - ""
    # ロボットに搭載されているセンサーの一覧
    sensors:
    types:
        - rgbd # カラー・深度カメラ
        - lidar # ライダーセンサー
        - imu # 慣性計測装置
        - camera # 通常カメラ
        - depth_camera # カラーなし深度カメラ
        - fish_eye # フィッシュアイカメラ
    rgbd:
        names: [""]
        models: [""]
    lidar:
        names: [""]
        models: [""]
    imu:
        names: [""]
        models: [""]
    camera:
        names: [""]
        models: [""]
    depth_camera:
        names: [""]
        models: [""]
    fish_eye:
        names: [""]
        models: [""]

# 連絡用ユーザー情報
user_info:
    # ユーザー名
    name: ""
    # ユーザーの所在地
    location: ""
    # ユーザーの連絡先メールアドレス
    email: ""
  1. 次に,どのデータをRosbagとして収集し,どのように圧縮・変換するかを決めます.
# ROS bag記録設定
rosbag_config:
    # 記録したbagファイルを保存するディレクトリのパス
    record_directory: "/path/to/recorded_bags"
    # 記録するトピックのリスト(カメラ,joint_states,tf,センサーなど)
    topics_to_record:
    - "/camera/image_raw"
    - "/camera/camera_info"
    # 記録するサービスのリスト(TODO: ROS 2 Jazzyまで未対応)
    services_to_record:
    - "/camera/get_image"
    # 記録するアクションのリスト(TODO: ROS 2 Kiltedまで未対応)
    actions_to_record:
    - "/robot/move_base"
    # 記録するbagファイルのフォーマット(例:"mcap", "sqlite3")
    conversion_format: "mcap" 
    # 圧縮モードの指定("none", "file", "message")
    compression_mode: "none"
    # 圧縮を有効にする場合の圧縮フォーマット("zstd" のみ対応)
    compression_format: "zstd"
  1. (非推奨)コントローラの設定を変更できますが,テレオペ設定と重複する可能性があるため,変更は推奨しません.
# ゲームパッドのコントロール設定
gamepad_config:
    # ゲームパッドの種類(例:"dualshock4", "keyboard")
    name: "dualshock4"
    # ゲームパッドボタンのアクション割り当て
    dualshock4:
        button_mapping:
            record: 7 #
            save  : 6 #
            delete: 6 #
    keyboard:
        button_mapping:
            record: "r"
            save  : "s"
            delete: "d"

Warning

現時点ではデータ収集に対応しているコントローラは dualshock4 のみです.今後,他のコントローラにも対応予定です.

(上に戻る)

起動と使い方

収集したいデータに合わせてyamlファイルを設定したら,プログラムを起動する準備が整います.

  1. コントローラ(ここでは DualShock4)をUSBまたはBluetoothで接続します.

  2. ロボットを起動します.

  3. rosbag_collection.launch.py ファイル内のロボット名(yamlファイルで設定した名前)を更新します.

def generate_launch_description():
    robot_name = "sobit_light" # ここを目的のロボット名に変更
  1. 変更を保存し,以下のコマンドで起動します.
ros2 launch sobits_vla_rosbag_collection rosbag_collection.launch.py
  1. 最後に,タスク名を更新して記録を開始します.
ros2 service call /{robot_name}/vla_task_update sobits_interfaces/srv/VlaUpdateTask "label: '{タスク名}'" 
  1. タスクラベルを更新したら,記録を開始できます.
  • 上ボタン: 記録開始
  • 左ボタン: rosbag保存
  • 右ボタン: rosbag削除
  1. データ収集をお楽しみください!

(上に戻る)

参考文献

(上に戻る)

About

This repository enables SOBITS-developed robots to VLA models

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors