Describe the bug
In a clean IsaacLab origin/develop checkout, there is a large position mismatch in a Newton scene that contains only the public KUKA_ALLEGRO_CFG robot.
When the Kuka-Allegro hand collides with itself (e.g., 2 fingers touching), the reported contact point should be close to the two collision shapes that created that contact. Instead, on the first simulation step, some contact points are more than 1.4 m away from those shapes. With self-collisions disabled, the same setup produces zero contacts and no bad rows.
Steps to reproduce
Use a clean IsaacLab develop checkout with isaaclab_newton available. Save the attached script isaaclab-01-repro_newton_kuka_self_contact_frame.py at the IsaacLab repo root.
Run the self-contact case:
./isaaclab.sh -p isaaclab-01-repro_newton_kuka_self_contact_frame.py \
--headless --num_envs 8 --steps 1 --pose_mode random --self_collisions
Run the no-self-collision control:
./isaaclab.sh -p isaaclab-01-repro_newton_kuka_self_contact_frame.py \
--headless --num_envs 2 --steps 1 --pose_mode random --no_self_collisions
I validated this with the same attached script on clean origin/develop at 01099bbe678fac5ec5894430b6eb833d4a8d56e4.
Observed self-contact output:
[repro] num_envs=8 steps=1 pose_mode=random self_collisions=True
[capture after_convert index=0] contacts=85 rows=85 bad=44 max_contact_geom=1.42575
[repro rollup]
"first_bad_capture_index": 0
"max_bad_row_count": 44
"max_contact_to_geom_mid_m": 1.4257527354700714
One of the worst rows is a middle-finger / ring-finger self-contact:
world = 5
middle_link_2/collisions/collisions_31 <-> ring_link_2/collisions/collisions_34
contact_to_geom_mid_m = 1.4257527354700714
contact_equals_input_mid_m = 1.1391210440720057e-07
Observed no-self-collision control output:
[repro] num_envs=2 steps=1 pose_mode=random self_collisions=False
[capture after_convert index=0] contacts=0 rows=0 bad=0 max_contact_geom=0
[repro rollup]
"first_bad_capture_index": null
"max_bad_row_count": 0
"max_contact_to_geom_mid_m": 0.0
System Info
- IsaacLab source tested: clean
origin/develop, commit 01099bbe678fac5ec5894430b6eb833d4a8d56e4, VERSION=3.0.0
- IsaacLab
origin/main note: commit b4c321024792976150ca55fddb26fa34480d974e, VERSION=2.3.2, does not contain source/isaaclab_newton, so I did not test this Newton repro on clean main
- Isaac Sim runtime used for validation: standalone Isaac Sim
5.1.0, Kit 107.3.3+production.229672.69cbf6ad.gl
- OS: Ubuntu
24.04.4 LTS
- GPU: NVIDIA RTX 6000 Ada Generation
- GPU Driver:
570.211.01
- Runtime Python/Torch used for validation: Python
3.11.13, Torch 2.11.0+cu128
Additional context
The script measures the contact data immediately after Newton writes it into MJWarp's contact buffer. At that point, the contact point is still almost exactly equal to Newton's input point (~1e-7 m difference for the row above), but the two matching collision shapes are more than a meter away.
Controls run so far:
Clean IsaacLab develop / attached Kuka repro:
num_envs=8, pose=random, self_collisions=True
contacts=85, bad rows=44, largest mismatch=1.4257527355 m
Clean IsaacLab develop / attached no-self control:
num_envs=2, pose=random, self_collisions=False
contacts=0, bad rows=0, largest mismatch=0.0 m
Small Newton-only two-link robot control:
contacts=4, largest mismatch=0.0 m
Simple IsaacLab box controls:
two_boxes / InteractiveScene: contacts=16, largest mismatch=0.176890 m
box_ground / InteractiveScene: contacts=16, largest mismatch=0.0 m
These controls suggest the problem is not present in every Newton contact case and not present in the simple box tests I tried. So far, I only reproduce the large mismatch with Kuka-Allegro random self-contact in cloned IsaacLab environments.
Checklist
Acceptance Criteria
For each contact, the reported contact point should be close to the two collision shapes that created it. In this repro, the largest contact-to-shape distance should stay near the size of the contact, not reach 1.4257 m.
Describe the bug
In a clean IsaacLab
origin/developcheckout, there is a large position mismatch in a Newton scene that contains only the publicKUKA_ALLEGRO_CFGrobot.When the Kuka-Allegro hand collides with itself (e.g., 2 fingers touching), the reported contact point should be close to the two collision shapes that created that contact. Instead, on the first simulation step, some contact points are more than
1.4 maway from those shapes. With self-collisions disabled, the same setup produces zero contacts and no bad rows.Steps to reproduce
Use a clean IsaacLab
developcheckout withisaaclab_newtonavailable. Save the attached script isaaclab-01-repro_newton_kuka_self_contact_frame.py at the IsaacLab repo root.Run the self-contact case:
Run the no-self-collision control:
I validated this with the same attached script on clean
origin/developat01099bbe678fac5ec5894430b6eb833d4a8d56e4.Observed self-contact output:
One of the worst rows is a middle-finger / ring-finger self-contact:
Observed no-self-collision control output:
System Info
origin/develop, commit01099bbe678fac5ec5894430b6eb833d4a8d56e4,VERSION=3.0.0origin/mainnote: commitb4c321024792976150ca55fddb26fa34480d974e,VERSION=2.3.2, does not containsource/isaaclab_newton, so I did not test this Newton repro on cleanmain5.1.0, Kit107.3.3+production.229672.69cbf6ad.gl24.04.4 LTS570.211.013.11.13, Torch2.11.0+cu128Additional context
The script measures the contact data immediately after Newton writes it into MJWarp's contact buffer. At that point, the contact point is still almost exactly equal to Newton's input point (
~1e-7 mdifference for the row above), but the two matching collision shapes are more than a meter away.Controls run so far:
These controls suggest the problem is not present in every Newton contact case and not present in the simple box tests I tried. So far, I only reproduce the large mismatch with Kuka-Allegro random self-contact in cloned IsaacLab environments.
Checklist
Acceptance Criteria
For each contact, the reported contact point should be close to the two collision shapes that created it. In this repro, the largest contact-to-shape distance should stay near the size of the contact, not reach
1.4257 m.