CoolFace
Datasetpublic

Brose21/ainex-gapfill-kinematics-v1

AiNex Gap-Fill Kinematics v1 LeRobot-schema motion dataset for the Hiwonder AiNex 24-DOF humanoid, covering the motion behaviors a bare walking-gait generator leaves out: gait initiation/termination, idle-standing "life" (breathing, weight wander, head glances), gaze control, in-place yaw steering, and shove-recovery reflexes. Generated 2026-07-21. What this is 5 episodes (one per "swagger" style — default, strut, sneak, march, tired), 2,350 frames total (47.0s @… See the full description on the dataset page: https://huggingface.co/datasets/Brose21/ainex-gapfill-kinematics-v1.

sourceHugging Facemitupdated 2mo agoView on Hugging Face
0likes40downloads
Dataset Card

AiNex Gap-Fill Kinematics v1

LeRobot-schema motion dataset for the Hiwonder AiNex 24-DOF humanoid, covering the motion behaviors a bare walking-gait generator leaves out: gait initiation/termination, idle-standing "life" (breathing, weight wander, head glances), gaze control, in-place yaw steering, and shove-recovery reflexes. Generated 2026-07-21.

What this is

5 episodes (one per "swagger" style — default, strut, sneak, march, tired), 2,350 frames total (47.0s @ 50Hz), 16 joint channels per frame. Each episode scripts the full behavior repertoire in sequence:

idle (2.0s) -> gait ramp-in (1.8s) -> steer (1.0s) -> gaze look (1.0s)
   -> reflex shove + decay (0.8s) -> gait ramp-out (1.8s) -> idle settle (1.0s)

action is the commanded channel vector from a hierarchical whole-body controller: an operational-space Jacobian balance task (CoM position + stance-foot flatness, built from AiNex's real URDF leg geometry) as the primary task, with the gait/swagger generator's joint targets projected into its null-space as the secondary task — so style can influence the walk but can never override balance, by construction. observation.state is that same trajectory offset by a real servo read-back taken from the physical robot immediately before recording (see seed_pose_and_manifest.json — all 16 servos, standing pose, read via ros_robot_controller/bus_servo/get_position), so frame 0 of every episode matches the physical robot exactly.

What this is NOT (read before using)

  • Not torque control. AiNex's HiWonder bus servos are position-command only (no torque input, no torque sensing). The controller is the kinematic form of hierarchical WBC — position/velocity targets through a damped-pseudoinverse Jacobian + null-space projector — not the torque form tau = J^T F + N tau_cpg sometimes quoted for this architecture.
  • Not directly compatible with GR1-humanoid GR00T training. NVIDIA's Isaac-GR00T pipeline (unified_trainer.py's GR00T stage in this project) trains against a fixed 44-dim GR1-humanoid EmbodimentTag / modality_config. This dataset is a 16-dim AiNex-specific schema — a real dimensional mismatch, not a formatting issue. Using it for GR00T fine-tuning requires adding a real AiNex embodiment definition to Isaac-GR00T first; that has not been done yet.
  • Not motion-captured from a walking robot. The robot was standing still during recording (physically safe, pre-bench-walk). action is the controller's own commanded trajectory, which is the real quantity a policy imitating this controller would need to learn — but it is not an external mocap/vision measurement of the robot in motion.

Files

  • episodes/ep_*.npzobservation.state (T,16), action (T,16), timestamp (T,) float32 arrays, one per episode
  • episodes/ep_*.json — episode metadata (pilot, task, channels, frames, duration, agreement)
  • meta_info.json — schema, channel names, embodiment note, honest wiring-status flags
  • meta_stats.json — real computed mean/std/min/max/q01/q99 over all 2,350 frames for observation.state and action
  • seed_pose_and_manifest.json — the real robot pose used to seed every episode + per-profile episode IDs/frame counts

Channels (16, in array order)

l_hip_roll, l_hip_pitch, l_knee, l_ankle_pitch, l_ankle_roll,
r_hip_roll, r_hip_pitch, r_knee, r_ankle_pitch, r_ankle_roll,
l_shoulder, r_shoulder, l_hip_yaw, r_hip_yaw, head_pan, head_tilt

(all radians; leg channels pass a balance filter + joint-limit avoidance; downstream hardware adapter applies pulse clamping + a 12-pulse/tick velocity limit not reflected in these values)