Problem
For a redundant 7R arm with narrow joint limits, solve(T, respect_limits=True) (the default) can return [] on a reachable, in-limits pose. Measured on OpenArm (joints 5,6 limited to ±0.785 rad):
| Arm |
empty rate, 200 in-limits poses, respect_limits=True |
OpenArm L (seven_r.srs, 16 swivels) |
~28% |
OpenArm L (seven_r.srs, 48 swivels) |
~26% |
OpenArm L (jointlock.seven_r) |
~62% |
| iiwa14 (wide limits) |
0% |
Root cause: the redundancy (elbow swivel) is sampled at 16 points over [-π, π]. When the arm's limits admit only a narrow swivel arc, the sampled solutions all fall outside limits and get filtered, even though an in-limits IK exists (the pose was generated from an in-limits q). Denser swivel sampling barely helps (16→48: 28%→26%), so it's not pure undersampling — the in-limits arc is genuinely narrow for many poses.
Not a regression, not the rescue's job
Possible directions
- Redundancy resolution toward the in-limits swivel arc: solve for the swivel value(s) that place the limit-binding joints inside limits (an interval intersection over the swivel circle), then sample within that arc instead of uniformly over [-π, π].
- Or a targeted densification pass when the uniform sweep yields no in-limits solution.
- Document as a completeness caveat in the interim (matches the existing per-solver caveat pattern).
Discovered while wiring #358.
Problem
For a redundant 7R arm with narrow joint limits,
solve(T, respect_limits=True)(the default) can return[]on a reachable, in-limits pose. Measured on OpenArm (joints 5,6 limited to ±0.785 rad):respect_limits=Trueseven_r.srs, 16 swivels)seven_r.srs, 48 swivels)jointlock.seven_r)Root cause: the redundancy (elbow swivel) is sampled at 16 points over [-π, π]. When the arm's limits admit only a narrow swivel arc, the sampled solutions all fall outside limits and get filtered, even though an in-limits IK exists (the pose was generated from an in-limits
q). Denser swivel sampling barely helps (16→48: 28%→26%), so it's not pure undersampling — the in-limits arc is genuinely narrow for many poses.Not a regression, not the rescue's job
Possible directions
Discovered while wiring #358.