CoolFace
Datasetpublic

Kota0612/umi-okra-lab-20260723

UMI Okra Harvesting — Lab Indoor Session (2026-07-23) Unitree Dex1-1 グリッパに改造した UMI (Universal Manipulation Interface) で、研究室内でオクラ収穫動作を撮影したデモンストレーションデータ。 このセッションは 8 本撮影して 8 本すべてが採用された(歩留まり 100%、生データの 99% を使用)。 Orboh が取得した全 6 セッション中で最もクリーンな結果。 English summary: Human demonstrations of okra-harvesting motions recorded in a lab room with a hand-held UMI gripper (modified with a Unitree Dex1-1) and a GoPro. All 8 recorded demos passed SLAM relocalization and quality filters. Contains a… See the full description on the dataset page: https://huggingface.co/datasets/Kota0612/umi-okra-lab-20260723.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes94downloads
Dataset Card

UMI Okra Harvesting — Lab Indoor Session (2026-07-23)

Unitree Dex1-1 グリッパに改造した UMI (Universal Manipulation Interface) で、研究室内でオクラ収穫動作を撮影したデモンストレーションデータ。

このセッションは 8 本撮影して 8 本すべてが採用された(歩留まり 100%、生データの 99% を使用)。 Orboh が取得した全 6 セッション中で最もクリーンな結果。

English summary: Human demonstrations of okra-harvesting motions recorded in a lab room with a hand-held UMI gripper (modified with a Unitree Dex1-1) and a GoPro. All 8 recorded demos passed SLAM relocalization and quality filters. Contains a diffusion-policy-ready replay buffer, raw videos, ORB-SLAM3 trajectories, and calibration files. Read the Limitations section before training — the gripper width channel is constant and the TCP offset is uncalibrated for this hardware.


収録内容

ファイル内容
data/train-*.parquet閲覧用。Data Studio でブラウザから中身を見られる(28 MB / 2,394 行)
dataset.zarr.zip学習用リプレイバッファ(43 MB)。train.py にそのまま渡せる
videos/生の mp4(999 MB)。デモ 8 本 + mapping + gripper_calibration
dataset_plan.pkl06_generate_dataset_plan.py の出力
trajectories/ORB-SLAM3 が出力した生の軌跡(CSV + evo 用 TUM)
figures/evo で生成した軌跡の可視化 8 枚
calibration/tx_slam_tag.json / gripper_range.json / ArUco 設定 / GoPro 内部パラメータ

dataset.zarr.zip の構造

episode_ends              (8,)                        エピソード境界
camera0_rgb               (2394, 224, 224, 3) uint8   魚眼のまま。ArUco は inpaint 済み
robot0_eef_pos            (2394, 3)   float32   [m] 重力 z-up の世界座標
robot0_eef_rot_axis_angle (2394, 3)   float32   [rad] 回転ベクトル
robot0_gripper_width      (2394, 1)   float32   [m] ※定数。Limitations 参照
robot0_demo_start_pose    (2394, 6)   float64
robot0_demo_end_pose      (2394, 6)   float64
  • —エピソード長: 269 / 270 / 287 / 299 / 310 / 313 / 319 / 327 フレーム
  • —合計 2,394 フレーム = 39.9 秒 @ 59.94 fps
  • —UMI 既定の学習設定(action_horizon=16, down_sample_steps=3)で 2,034 サンプル
  • —全エピソードが 46 フレーム以上あるため、捨てられるエピソードはゼロ

data/*.parquet(閲覧用)

zarr は Hugging Face のビューアが解釈できないため、同じ中身を parquet でも置いている。 学習には `dataset.zarr.zip` を使うこと(parquet は画像を JPEG 再圧縮しているため非可逆)。

列型内容
episode_indexint32エピソード番号 0〜7
frame_indexint32エピソード内のフレーム番号
timestampfloat32[s] エピソード先頭からの経過時間
imageImage224×224 の魚眼画像(JPEG q92)
eef_pos_x/y/zfloat32[m] 手先位置(重力 z-up の世界座標)
eef_rot_x/y/zfloat32[rad] 回転ベクトル
gripper_widthfloat32[m] ※定数
python
from datasets import load_dataset
ds = load_dataset("Kota0612/umi-okra-lab-20260723", split="train")
ds[0]["image"]        # PIL.Image

videos/ の構成

videos/mapping.mp4                地図構築用(85.9 s / 647 MB)
videos/gripper_calibration.mp4    開度キャリブ用(49 MB)
videos/demos/<HH.MM.SS>.mp4       デモ 8 本(304 MB)

ファイル名は撮影開始時刻で、trajectories/<同じ名前>.csv と対応している。 2704×2028 / 59.94 fps の生映像(GoPro の魚眼、無加工)。


撮影条件

項目値
撮影日2026-07-23 18:44〜18:54 (JST)
場所研究室内
カメラGoPro 1 台(serial C3441326441423)、2704×2028 / 59.94 fps
グリッパUMI 改造版(Unitree Dex1-1 搭載)
撮影本数デモ 8 本 + 地図用 1 本(85.9 s)+ 開度キャリブ 1 本

なぜこのセッションは歩留まり 100% だったのか

地図用動画の総移動距離が 22.94 m と、Orboh の全セッション中で最長だった。

セッション地図の総移動距離最大変位デモ採用率
本データ(研究室内 07-23)22.94 m0.720 m8/8 (100%)
屋外・草地 07-24pm19.25 m0.339 m5/9 (56%)
屋内 08-0415.76 m0.519 m14/41 (34%)
オクラ圃場 07-277〜9 m0.22〜0.31 m0/9 (0%)

単眼 SLAM は視差(カメラの平行移動)がないと奥行きを復元できないため、 地図用動画でどれだけ動き回ったかが歩留まりを決める。20 m 以上が目安。


⚠️ Limitations(学習前に必読)

1. robot0_gripper_width は定数(学習信号として使えない)

gripper_calibration 動画でグリッパを開閉していないため、 キャリブ範囲が 21.85〜21.95 mm(可動域 0.1 mm) しかない。 結果として zarr の robot0_gripper_width は 0.100 mm の完全な定数になっている。

UMI 既定の action は 10 次元(pos 3 + rot6d 6 + gripper 1)だが、10 次元目は情報を持たない。 normalize_util.py の range_eps=1e-7 によりゼロ分散でも学習は破綻しないが、 把持動作を学習したい場合はこのデータでは不可能。

2. tcp_offset が Dex1-1 用に較正されていない

06_generate_dataset_plan.py の --tcp_offset は UMI 純正の 0.205 m のまま。 指先タグの実測距離が UMI 想定と 2 cm 以上ずれていることから、 TCP 姿勢には数 cm の系統的オフセットが残っている可能性が高い。

指タグ z の実測
UMI 公式サンプル0.0672 〜 0.0735 m(既定 nominal_z=0.072 に 100% 適合)
本データ (Dex1-1)0.0899 〜 0.0965 m

本データの生成には --nominal_z 0.0935 を使用。 UMI 既定の 0.072 のままだと get_gripper_width() が全フレーム None を返し 06 が落ちる。

注意: nominal_z は同じグリッパでもセッションごとに 5 mm 以上ばらつく (草地 0.0907 / 屋内 0.0882 / 本データ 0.0935)。他データに流用せず、 tag_detection.pkl から実測して決めること。

3. デモの動作範囲が小さい

手先の移動範囲は x 方向 0.42 m / y 方向 0.46 m / z 方向 0.33 m。 UMI 公式サンプル(1 デモあたり経路長 1.2〜1.6 m)に比べると動作が限定的で、 「掴む→引き抜く→籠へ運ぶ」といった収穫動作の全工程は含まれていない。

4. SLAM 精度は外部基準で検証していない

軌跡は ORB-SLAM3 の推定であり、MoCap 等の独立した基準と照合していない。 絶対スケールの正しさは保証されない。


再現方法

real-stanford/universal_manipulation_interface のパイプラインを使用。videos/ に生の mp4 を含めてあるので 00 から全工程を再現できる。

bash
# 学習
python train.py --config-name=train_diffusion_unet_timm_umi_workspace \
  task.dataset_path=dataset.zarr.zip

パイプラインを最初から回す場合は videos/ の mp4 を <session>/raw_videos/ に置いて run_slam_pipeline.py を実行する (mapping.mp4 と gripper_calibration.mp4 はファイル名で役割が自動判定される)。

本データ生成時に既定値から変更したパラメータは 1 つだけ:

bash
python scripts_slam_pipeline/06_generate_dataset_plan.py -i <session> --nominal_z 0.0935

軌跡の可視化(evo)

evo で生成した図。 trajectories/ に CSV と TUM の両方を同梱してあるので、下記コマンドで再現できる。

bash
pip install evo
cd trajectories
evo_traj tum mapping.tum <デモの時刻>.tum -p --plot_mode xy    # 地図とデモの位置関係
evo_ape  tum mapping.tum mapping_during_build.tum -a --t_max_diff 0.01   # APE

mapping.tum は完成地図に再測位した軌跡(精度が高い方)、 mapping_during_build.tum は地図構築中に推定された軌跡。

-a / -as を付けると軌跡が整列されて地図との位置関係が壊れるため、 地図とデモを重ね描きするときは付けないこと(APE の計算では必要)。

地図とデモの位置関係(xy 平面)

地図とデモの位置関係(xy 平面)

青が地図用動画の軌跡、色つきが採用されたデモ。デモが地図のカバー範囲の内側にあることが確認できる。

同じものを 3D で

同じものを 3D で

高さ方向を含めた位置関係。地図が覆う空間にデモが収まっているかを見る。

位置の時系列(x / y / z)

位置の時系列(x / y / z)

各軌跡の位置成分。単位は [m]、重力 z-up の世界座標。

姿勢の時系列(roll / pitch / yaw)

姿勢の時系列(roll / pitch / yaw)

グリッパの向きの変化。単位は [deg]。

速度

速度

フレーム間の移動速度 [m/s]。追跡が飛んでいれば異常なスパイクとして現れる。

APE を軌跡上に色で表示

APE を軌跡上に色で表示

「地図構築時の推定」と「完成地図への再測位」の差。赤いほど 2 つの推定が食い違っている。

APE の時系列

APE の時系列

誤差がどの時刻に集中しているかが分かる。冒頭のスパイクは ORB-SLAM3 の IMU 初期化によるもの。

地図のカバー範囲とデモの内外判定

地図のカバー範囲とデモの内外判定

水色の網掛けが地図軌跡の凸包(=地図が覆った範囲)。緑は完全に内側、橙ははみ出しているデモ。

APE の数値

RMSE最大誤差
全区間15.1 mm259.4 mm
先頭 2 秒を除去9.2 mm39.6 mm

冒頭 2 秒は ORB-SLAM3 が IMU 初期化(スケール・重力・バイアス)を収束させる前の 姿勢を書き出しているため誤差が大きい。定常区間の自己整合性を見るときは除外する。

⚠️ この APE は SLAM の絶対精度の指標ではない。 比較している 2 つの推定は 同じ動画・同じ IMU から出ており、示されるのは自己整合性だけ。実際、デモが 1 本も 通らなかったセッション(オクラ圃場)のほうが APE が小さいという逆転が起きている。 絶対精度は MoCap 等の独立した基準がないと検証できない。

関連データセット

同じ Dex1-1 版 UMI で撮影した他セッション:


出典

  • —UMI: Chi et al., Universal Manipulation Interface: In-The-Wild Robot Teaching Without In-The-Wild Robots, RSS 2024
  • —撮影・処理: Orboh, Inc.