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.
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_cpgsometimes 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-humanoidEmbodimentTag/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).
actionis 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_*.npz—observation.state(T,16),action(T,16),timestamp(T,) float32 arrays, one per episodeepisodes/ep_*.json— episode metadata (pilot, task, channels, frames, duration, agreement)meta_info.json— schema, channel names, embodiment note, honest wiring-status flagsmeta_stats.json— real computed mean/std/min/max/q01/q99 over all 2,350 frames forobservation.stateandactionseed_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)
