Warning
本リポジトリは現時点で「データ収集」のみに対応しています.今後,収集されたRosbagをLeRobotデータセット型に変換できるパッケージも提供する予定です.
SOBITS VLA ToolsはSOBITS自作ロボットをVLAモデルで制御するため,ロボットデータの収集から推論の行動をROS上で通信できるように必要なリソースが用されているリポジトリです.
(上に戻る)
ここで,本リポジトリのセットアップ方法について説明します.
(上に戻る)
まず,以下の環境を整えてから,次のインストール段階に進んでください.
| System | Version |
|---|---|
| Ubuntu | 22.04 (Jammy Jellyfish) |
| ROS | Humble Hawksbill |
| Python | ≥3.10 |
Note
UbuntuやROSのインストール方法に関しては,SOBITS Manualに参照してください.
(上に戻る)
- ROSの
srcフォルダに移動します.$ cd ~/colcon_ws/src/
- 本リポジトリをcloneします.
$ git clone https://github.com/TeamSOBITS/sobits_vla_tools
- 本リポジトリに必要な依存パッケージをインストールします.
$ cd sobits_vla_tools $ bash install.sh - パッケージをコンパイルします.
$ cd ~/colcon_ws $ rosdep update $ rosdep install --from-paths src -y --ignore-src $ colcon build $ source install/setup.bash
(上に戻る)
ロボットからデータ収集を開始するには,まず record_settings.yaml を設定する必要があります.
-
record_settings.yaml を同じフォルダ内でコピーし,
record_settings_{robot_name}.yamlという名前で保存してください. -
新しい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: ""- 次に,どのデータを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"- (非推奨)コントローラの設定を変更できますが,テレオペ設定と重複する可能性があるため,変更は推奨しません.
# ゲームパッドのコントロール設定
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ファイルを設定したら,プログラムを起動する準備が整います.
-
コントローラ(ここでは
DualShock4)をUSBまたはBluetoothで接続します. -
ロボットを起動します.
-
rosbag_collection.launch.py ファイル内のロボット名(yamlファイルで設定した名前)を更新します.
def generate_launch_description():
robot_name = "sobit_light" # ここを目的のロボット名に変更- 変更を保存し,以下のコマンドで起動します.
ros2 launch sobits_vla_rosbag_collection rosbag_collection.launch.py- 最後に,タスク名を更新して記録を開始します.
ros2 service call /{robot_name}/vla_task_update sobits_interfaces/srv/VlaUpdateTask "label: '{タスク名}'" - タスクラベルを更新したら,記録を開始できます.
- 上ボタン: 記録開始
- 左ボタン: rosbag保存
- 右ボタン: rosbag削除
- データ収集をお楽しみください!
(上に戻る)
(上に戻る)