Skip to content

three_parallel (UR arms) returns a spurious >1e-7 branch at near-singular poses #362

Description

@siddhss5

Repro (deterministic, on main)

```python
import numpy as np
from ssik.prebuilt import ur16e_ik as U
q = np.array([0.0, -2.4834242925436327, -2.446578501260409, -2.6545207067859944, -2.5361296670486584, 0.0])
T = U.fk(q)
sols = U.solve(T, respect_limits=False)

7 sols, worst FK = 7.44e-06 (> the 1e-7 fuzz ceiling; allow_refinement doesn't help)

```

At this near-singular pose (q0 = q5 = 0 → wrist/shoulder alignment) the ikgeo.three_parallel solver returns a branch that FK-closes to only ~7e-6 — above its own FK tolerance, so it should have been filtered. max_fk over the returned set exceeds the arm's 1e-7 ceiling.

Impact

Directions

  • The FK-tolerance gate in three_parallel should drop the spurious branch (or the non_singular_q6r fuzz strategy should exclude q0=q5=0-type alignments).
  • Investigate why LM refine (allow_refinement=True) can't pull the 7e-6 branch in.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions