RDLwicked/gim_arm_pick_n_place_teleop_3cam_joint
gim_arm_pick_n_place_teleop_3cam_joint Human teleoperation demonstrations of a single 6-DOF GIM XL arm with a parallel gripper, recorded at 30 Hz with three RGB cameras. Task prompt: pick up the object and place it into the box Episodes 135 Frames 123,376 Duration ~1.1 h Control / logging rate 30 Hz Episode length 388-2971 frames (median 578, mean 914) Cameras 3 x Intel RealSense D405, 720x1280 colour Format LeRobot v3.0 Robot GIM XL 6-DOF, right arm… See the full description on the dataset page: https://huggingface.co/datasets/RDLwicked/gim_arm_pick_n_place_teleop_3cam_joint.
gimarmpicknplaceteleop3cam_joint
Human teleoperation demonstrations of a single 6-DOF GIM XL arm with a parallel gripper, recorded at 30 Hz with three RGB cameras.
Task prompt: pick up the object and place it into the boxEvery episode is pure human teleoperation. No policy rollouts, no corrective takeovers, no synthetic or replayed trajectories.
Loading
from lerobot.datasets.lerobot_dataset import LeRobotDataset
ds = LeRobotDataset("RDLwicked/gim_arm_pick_n_place_teleop_3cam_joint")
sample = ds[0]
sample["observation.state"] # torch.float32, shape (7,)
sample["action"] # torch.float32, shape (7,)
sample["observation.images.top_left"] # torch.float32, shape (3, 720, 1280)
sample["task"] # "pick up the object and place it into the box"For action-chunking policies, request a temporal window with delta_timestamps rather than indexing repeatedly:
ds = LeRobotDataset(
"RDLwicked/gim_arm_pick_n_place_teleop_3cam_joint",
delta_timestamps={"action": [i / 30 for i in range(50)]},
)Observation and action space
Both are 7-D and joint-space:
observation.stateis the measured joint position (qpos) plus measured gripper opening.actionis the commanded absolute joint position target (qpos_target) plus commanded gripper opening, as sent to the arm at that timestep.
`action` is absolute, not a delta. At 30 Hz consecutive commands are close together, so |action[t] - state[t]| is small relative to action.std(). Policies that regress absolute targets over a long open-loop chunk can therefore reach low training loss while barely conditioning on the proprioceptive state. If you train an action-chunking policy on this data, either predict state-relative targets (action[t] - state[t]) or verify state-sensitivity explicitly before trusting the loss curve.
Cameras
All three streams are hardware-synchronised RealSense D405 colour streams at 30 fps with fixed manual exposure (22000) and gain (16) -- no auto-exposure drift across an episode. top_left is the third-person scene view; wrist_left and wrist_right are the two wrist-mounted views.
What is not included
observation.images.top_right-- a fourth camera stream present in the raw recordings, omitted here to keep the release to a standard 3-camera setup.observation.ee_wrench_latent-- a learned 16-D end-effector wrench/force embedding. Omitted because it is only interpretable together with the frozen encoder that produced it.- No validation split:
meta/info.jsondeclares a singletrainsplit over all 135 episodes. Hold out episodes yourself viaLeRobotDataset(..., episodes=[...]).
Robot description
robot/ bundles the URDF and STL meshes for the arm, so forward/inverse kinematics can be computed from the joint data without access to the original rig:
robot/gim_arm_xl_6dof.urdf # single arm (this dataset)
robot/dual_gim_arm_xl_6dof.urdf # dual-arm variant of the same description
robot/meshes/*.STLThe joint names in the URDF match the names field of observation.state and action exactly (arm6_joint1 .. arm6_joint6). These are manufacturer-supplied robot description files, redistributed here as-is for convenience.
Provenance
meta/source_manifest.json records, per episode, which raw teleoperation log and which collection session it came from. Episodes are ordered by collection timestamp.
Recordings were quality-screened before conversion: unreadable or truncated logs were dropped, and each episode was trimmed to the operator's engage/release window with leading and trailing joint-position jumps removed.
License
Released under apache-2.0.
