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.
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.
収録内容
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 再圧縮しているため非可逆)。
from datasets import load_dataset
ds = load_dataset("Kota0612/umi-okra-lab-20260723", split="train")
ds[0]["image"] # PIL.Imagevideos/ の構成
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 の魚眼、無加工)。
撮影条件
なぜこのセッションは歩留まり 100% だったのか
地図用動画の総移動距離が 22.94 m と、Orboh の全セッション中で最長だった。
単眼 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 の系統的オフセットが残っている可能性が高い。
本データの生成には --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 から全工程を再現できる。
# 学習
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 つだけ:
python scripts_slam_pipeline/06_generate_dataset_plan.py -i <session> --nominal_z 0.0935軌跡の可視化(evo)
evo で生成した図。 trajectories/ に CSV と TUM の両方を同梱してあるので、下記コマンドで再現できる。
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 # APEmapping.tum は完成地図に再測位した軌跡(精度が高い方)、 mapping_during_build.tum は地図構築中に推定された軌跡。
-a/-asを付けると軌跡が整列されて地図との位置関係が壊れるため、 地図とデモを重ね描きするときは付けないこと(APE の計算では必要)。
地図とデモの位置関係(xy 平面)

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

高さ方向を含めた位置関係。地図が覆う空間にデモが収まっているかを見る。
位置の時系列(x / y / z)

各軌跡の位置成分。単位は [m]、重力 z-up の世界座標。
姿勢の時系列(roll / pitch / yaw)

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

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

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

誤差がどの時刻に集中しているかが分かる。冒頭のスパイクは ORB-SLAM3 の IMU 初期化によるもの。
地図のカバー範囲とデモの内外判定

水色の網掛けが地図軌跡の凸包(=地図が覆った範囲)。緑は完全に内側、橙ははみ出しているデモ。
APE の数値
冒頭 2 秒は ORB-SLAM3 が IMU 初期化(スケール・重力・バイアス)を収束させる前の 姿勢を書き出しているため誤差が大きい。定常区間の自己整合性を見るときは除外する。
⚠️ この APE は SLAM の絶対精度の指標ではない。 比較している 2 つの推定は 同じ動画・同じ IMU から出ており、示されるのは自己整合性だけ。実際、デモが 1 本も 通らなかったセッション(オクラ圃場)のほうが APE が小さいという逆転が起きている。 絶対精度は MoCap 等の独立した基準がないと検証できない。
関連データセット
同じ Dex1-1 版 UMI で撮影した他セッション:
- Kota0612/umi-okra-indoor-20260804 — 屋内・観葉植物(14 エピソード)
- Kota0612/umi-okra-grassland-20260724 — 屋外・草地(5 エピソード)
出典
- UMI: Chi et al., Universal Manipulation Interface: In-The-Wild Robot Teaching Without In-The-Wild Robots, RSS 2024
- 撮影・処理: Orboh, Inc.
