Fiatlux
A long-horizon benchmark in which a simulated Unitree G1 humanoid climbs a ladder and replaces a light bulb, built in NVIDIA Isaac Lab.
What it is
Changing a ceiling light is a small job for a person and a long one for a humanoid. Fiatlux turns it into a single task for a simulated Unitree G1 in NVIDIA Isaac Lab: move the ladder under the fixture, climb it, remove the old bulb, carry it down to the disposal crate, pick up a new bulb from the table, climb again holding it, screw it in and climb down. The fixture hangs above standing reach, so the robot cannot skip the ladder.
The task is split into 12 subtasks, each with its own environment, start state and success gate. A policy can be trained and scored on one subtask at a time, or run through the whole chain.
The paper is under review at IEEE ICRA 2027. The four first authors, me among them, contributed equally and are listed alphabetically.
What I built
- The 12 subtask environments. Flat navigation, manipulation and climbing, each registered as its own Isaac Lab environment. Start states are chained, so a subtask begins in the state the previous one leaves behind. Every episode has a 120 s horizon, and success is a quantitative gate, not a judgement call. The bulb shows how strict that gets: the hand may press on the 35 g bulb with at most 50 N, or the attempt fails.
- The scene hierarchy and asset pipeline. One scene tree shared by all 12 subtasks, with a preset layout per task and domain randomization over layout, friction, lighting and materials. Objects come from an image-to-mesh pipeline that writes USD assets, and a structural verifier checks each asset before it goes into a scene.
Result
The benchmark ships 12 subtasks with one environment each, a G1 with 53 actuated degrees of freedom, a 50 N fragility bound on the bulb and 107 teleoperated takes. The paper, the project page with video, and the code are linked below.