文章目錄
- @[TOC](文章目錄)
- 前言
- 1 BridgeData V2
- 1.1 概述
- 1.2 硬件環境
- 2 數據集
- 2.1 場景與結構
- 2.2 數據結構
- 2.2.1 images0
- 2.2.2 obs_dict.pkl
- 2.2.3 policy_out.pkl
- 3 close question
- 3.1 英偉達環境
- 3.2 LIBERO 環境更適合仿真
- 3.3 4090 運行問題
文章目錄
- @[TOC](文章目錄)
- 前言
- 1 BridgeData V2
- 1.1 概述
- 1.2 硬件環境
- 2 數據集
- 2.1 場景與結構
- 2.2 數據結構
- 2.2.1 images0
- 2.2.2 obs_dict.pkl
- 2.2.3 policy_out.pkl
- 3 close question
- 3.1 英偉達環境
- 3.2 LIBERO 環境更適合仿真
- 3.3 4090 運行問題
前言
按照筆者之前的行業經驗, 數據集的整理是非常重要的, 因此筆者這里增加原文中出現的幾個數據集和環境的學習
1 BridgeData V2
1.1 概述
skill 例如:抓取(pick), 放置(place), 推動(pushing), 清掃(sweeping), 堆疊(stacking), 折疊(folding)
trajectories 就是action集合:
其中數據集合結構圖如下:
圖像分辨率:640×480
1.2 硬件環境
BridgeData的整體環境如圖:
其中所有的硬件(包括支架, 導軌,工件 等等)描述鏈接如下:
https://docs.google.com/document/d/1si-6cTElTWTgflwcZRPfgHU7-UwfCUkEztkH3ge5CGc/edit?pli=1&tab=t.0
該平臺主要的內容:
一個固定視角(over-the-shoulder) 的RGBD(Intel D435),
一個固連在機器人腕部的RGB(custom Raspberry Pi),
兩個可變視角RGB(Logitech C920),在數據采集過程中會被更改。
我們關心的機械臂和攝像頭參數如下:
但是要注意的是openVLA沒有用腕部攝像頭(原因是方便 PK 其他工作), 因此只用了第三人視角的攝像頭
2 數據集
2.1 場景與結構
可以看到數據集合總共有兩種
類型 | 說明 |
---|---|
Human demonstrations | 人類通過遙操作(如鼠標/VR 手柄)控制機器人執行任務,系統記錄圖像、指令和動作 |
Scripted policies | 開發者用 Python/控制代碼編寫一套“規則程序”,在給定場景中自動執行任務,比如:“如果檢測到杯子在桌面中心,則移動 gripper 到目標點并下降” |
數據結構如下圖, 其中每個traj_group 都是相同場景,固定部分擺件,然后制造數據
再升一級目錄,我們可以看到 相同的場景,不同的拍攝時間對應不同的 擺件,而不是控制部分不同的擺件
我們, 再進入raw 數據,可以看到bridge_data的場景結構
其中這里作者還為數據的正確性做了驗證放了一張diagnostics.png 圖片以顯示當前 通過腳本給定數據的正確性.
名稱 | 意義 | 數據來源 |
---|---|---|
xpos | 實際執行到的位置 | 通過機器人反饋采集,每一幀記錄 |
despos | 計劃中的目標位置 | 來自控制策略(如 scripted policy)或人類操作輸入 |
2.2 數據結構
每一組數據里都包含三個文件:
2.2.1 images0
images0 是用于ViT的一組圖片, obj_dict 是場景信息
可以看出就是完成一個 trajetory的過程.
2.2.2 obs_dict.pkl
鍵名 | 含義 |
---|---|
joint_effort | 每個關節的施加力矩(關節力) |
qpos | 關節位置(Joint Position) |
qvel | 關節速度(Joint Velocity) |
full_state | 完整狀態向量(包含位姿、關節等) |
state | 簡化狀態(可能是觀測空間狀態) |
desired_state | 控制器期望狀態(即 despos 源) |
time_stamp | 每幀時間戳 |
eef_transform End-Effector | 的變換矩陣(即 gripper 位姿) |
high_bound / low_bound | 狀態空間上下界 |
env_done | 當前幀是否終止(布爾) |
t_get_obs | 獲取觀測時耗(調試用) |
其中
eef_transform代表的是 gripper 的六自由度位姿變換矩陣(通常是 4x4),可以從中提取出:
(1) 平移向量(x, y, z) 即我們要的 xpos
(2) 旋轉矩陣 , 可進一步轉為歐拉角(roll, pitch, yaw)
2.2.3 policy_out.pkl
索引 | 含義 | 示例值 | 說明 |
---|---|---|---|
[0:3] | Δx, Δy, Δz | -0.012, 0.037, 0.004 | 空間位置變化向量(平移動作) |
[3:6] | Δroll, Δpitch, Δyaw | 0.0043, -0.0037, -0.8251 | 歐拉角空間的姿態微調(旋轉動作) |
[6] | gripper_open | 1 or 0 | 夾爪開閉指令(1 表示張開,0 表示閉合) |
我這條case 共計49組,這張圖是記錄了 xyz的運動軌跡
這張圖分析了 爪子夾取東西的時間分布圖.
3 close question
3.1 英偉達環境
Can anyone provide a tutorial on how to use OpenVLA to control a robotic arm?
3.2 LIBERO 環境更適合仿真
In SimplerENV, select google robot or WidowX, unnorm_key=bridge_orig, the effect is not good, can not complete the task.
Status: Closed (completed).
#84 In openvla/openvla;· by zhou-pig was closed on Sep 5, 2024
3.3 4090 運行問題
Unable to Reproduce 6 Actions/s Inference on RTX4090 #66