Commit d2aa309
committed
Use matrix mul to compose rotations in test_pink_ik
calculate_rotation_error used element-wise '*' between two 3x3 rotation
matrices where matrix multiplication '@' was intended. The Hadamard
product of two rotation matrices is not generally a rotation matrix --
its columns are not orthonormal and its determinant is not 1 -- so the
quat_from_matrix consumer downstream produced either a non-unit garbage
quaternion (pre-isaac-sim#5609) or NaN
(after the unit-norm guard added in that PR).
The bug was masked for ~9 months because the Hadamard product of two
near-identity matrices is also near-identity, so the resulting quat was
close enough to unit for quat_from_matrix to round-trip cleanly. Once
IK didn't converge to literal identity -- different seed, different
robot, more aggressive setpoint -- the assertion 'Left hand IK rotation
error (nan) exceeds tolerance' started firing on develop.
Local reproduction on isaaclab_physx with newton rc2 (current develop):
- Unfixed: Isaac-PickPlace-GR1T2-Abs-v0 horizontal_movement fails with
NaN rotation error on both hands.
- Fixed: same parameterization passes with rotation errors at 1e-4 to
1e-7, well within the 0.02 rad tolerance. 11 of 11 GR1T2 cases pass
deterministically across re-runs.
Bug introduced by
isaac-sim#3149.1 parent a5eb9ad commit d2aa309
2 files changed
Lines changed: 15 additions & 1 deletion
File tree
- source/isaaclab
- changelog.d
- test/controllers
Lines changed: 14 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
306 | 306 | | |
307 | 307 | | |
308 | 308 | | |
309 | | - | |
| 309 | + | |
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
| |||
0 commit comments