Ronaldo-GOAT/pose6daug
pose6daug Real-world Franka manipulation episodes with object-swap and action augmentation artifacts. 120 training episodes over 4 objects (blue_cup, green_pear, kanu, white_spray), dual ZED cameras (exo static + ego wrist-mounted). Layout Per-frame PNGs are packed into uncompressed tars per episode — the dataset has ~427k mask/plate frames and loose files hit Hugging Face's per-repo file recommendation and API rate limits hard. data/<object>/<NNNN>/ masks.tar… See the full description on the dataset page: https://huggingface.co/datasets/Ronaldo-GOAT/pose6daug.
0757
1import os, json, glob, h5py, numpy as np, random2WS="/lp-dev/jonghoon/sim_action_aug/ws"3SRC="/home/nvidia/jonghoon/rebuttal/migrator_data/episodes"4EPS=["0004"]+[f"{i:04d}" for i in range(7,17)]5random.seed(0)6out={}7for ep in EPS:8 r={}9 r["n_exo"]=len(glob.glob(f"{WS}/{ep}/frames_exo/*.png"))10 r["n_ego"]=len(glob.glob(f"{WS}/{ep}/frames_ego/*.png"))11 # contiguity12 ex=sorted(int(os.path.basename(p)[:-4]) for p in glob.glob(f"{WS}/{ep}/frames_exo/*.png"))13 r["exo_contig"]= ex==list(range(len(ex)))14 with h5py.File(f"{SRC}/{ep}/teleoperation.h5","r") as f:15 r["h5_rows"]=f["observation/robot_state/gripper_position"].shape[0]16 gp=f["observation/robot_state/gripper_position"][:]17 cap=f["observation/timestamp/cameras/37149196_estimated_capture"][:]/1000.018 rts=f["observation/timestamp/robot_state/robot_timestamp_seconds"][:]+f["observation/timestamp/robot_state/robot_timestamp_nanos"][:]*1e-919 with h5py.File(f"{WS}/{ep}/depth.h5","r") as f:20 d=f["exo/depth_left"]21 r["n_depth"]=d.shape[0]; r["depth_shape"]=list(d.shape); r["depth_dtype"]=str(d.dtype)22 idxs=sorted(random.sample(range(d.shape[0]),3))23 ff=[]24 for i in idxs:25 a=d[i]; ff.append(float(np.isfinite(a).mean()))26 r["finite_idx"]=idxs; r["finite_frac"]=ff27 # frame0 vs last finite28 z=np.load(f"{WS}/{ep}/traj.npz",allow_pickle=True)29 r["npz_keys"]={k:list(np.shape(z[k])) for k in z.files if k!="meta_json"}30 r["grasp"]=int(z["grasp_frame"]); r["release"]=int(z["release_frame"]); r["close_onset"]=int(z["close_onset_frame"])31 g=z["gripper_position"]32 pk=float(g.max())33 r["grip_peak"]=pk34 r["g_at_grasp"]=float(g[r["grasp"]]); r["g_at_grasp_m1"]=float(g[r["grasp"]-1])35 r["g_frame0"]=float(g[0]); r["g_at_release"]=float(g[r["release"]]); r["g_release_p1"]=float(g[min(r["release"]+1,len(g)-1)])36 # is grasp = first crossing 50% peak?37 thr=0.5*pk38 fc=int(np.argmax(g>thr))39 r["first_cross_50pk"]=fc40 r["mono_plateau_frac_above_thr"]=float((g>thr).mean())41 # number of separate runs above thr42 ab=(g>thr).astype(int); r["n_runs_above"]=int(np.sum(np.diff(np.concatenate([[0],ab,[0]]))==1))43 r["T_traj"]=len(g)44 # timestamps45 r["cap0_minus_rt0"]=float(cap[0]-rts[0])46 r["cap_last_minus_rt_last"]=float(cap[-1]-rts[-1])47 r["fps_est"]=float((len(cap)-1)/(cap[-1]-cap[0]))48 r["dur_s"]=float(cap[-1]-cap[0])49 out[ep]=r50print(json.dumps(out,indent=1))51 