Date: Jun 18, 2026 (EDT). Question: the Pinocchio neutral configuration (all joints 0) sits at log s_min_G ≈ −11 to −13 — essentially singular. Past attempts to escape by geometry (lengthening links, counterweighting the base) did nothing, and it was never clear why. This document answers it from the determinant of the arm Jacobian, which is the one quantity that factors the cause apart — and settles a committed design claim that turned out to be false.
regen:
python3 validation/singularity_geometry.py (symbolic DH +
cpin, prints the factorization, the elbow law, and the corrected LEADS).
Pinned by validation/test_singularity_geometry.py (4 PASS).
CoM-cancellation study: 7-agent proof workflow (3 independent rebuilds +
3 adversarial skeptics + synthesis), verdict recorded in
logs/logs_Jun18_26/CLAIMS.md ~17:40.
Verdict up front. 1. Neutral is singular
because the determinant has a pure-angle factor sin θ₃ that
vanishes at θ₃ = 0 (the elbow is straight). No link length or
mass appears in that factor, so nothing geometric can move its zero. 2.
The legacy claim “lengthening links helps the bare arm but the
circumcentroidal CoM shift cancels it” is BROKEN. Lengthening
does raise σ_min(Γ), nearly in lockstep with the bare arm
(~×5). The CoM coupling is a bounded ~26 % multiplicative
haircut, not a cancellation. 3. The real reason past
lengthening failed is a fixed-standoff elbow
over-fold plus an operating posture
that parks the elbow near θ₃ ≈ 0 — a reach-margin/posture problem, the
same lever the speed-derate over-extension finding and the
singularity-root-cause analysis both point to.
The 6R arm Jacobian determinant, link lengths numeric (scaled UR3 ×1.18), angles symbolic, taken straight from the MJCF and cpin-verified to 2 × 10⁻¹⁶ against Pinocchio:
\[ \det \boldsymbol{J} = \underbrace{0.02080}_{\text{one constant}}\cdot \underbrace{\big[\cos\theta_2 + 0.8752\cos(\theta_2{+}\theta_3) + 0.2969\sin(\theta_2{+}\theta_3{+}\theta_4)\big]}_{\text{reach / shoulder}}\cdot \underbrace{\sin\theta_3}_{\text{elbow}}\cdot\underbrace{\sin\theta_5}_{\text{wrist}} \]
(exact constant 4160043662391023/200000000000000000). A
product is zero iff one factor is zero, so the
determinant separates the variables into three independent
singularity families:
| factor | family | depends on |
|---|---|---|
sin θ₃ |
ELBOW (hit at neutral) | θ₃ only — no length, no mass |
sin θ₅ |
WRIST | θ₅ only — no length, no mass |
cos θ₂ + (A₃/A₂)cos(θ₂+θ₃) + (D₅/A₂)sin(θ₂+θ₃+θ₄) |
SHOULDER / REACH | link lengths, as coefficients |
The normalized reach coefficients (1, 0.8752, 0.2969)
are exactly the link-length ratios (1, A₃/A₂, D₅/A₂) —
lengths live only in the reach factor, and there only
as coefficients, never as roots
(test_reach_bracket_coeffs_are_the_link_lengths).
pin.neutral is all-zeros, so θ₃ = 0 → sin θ₃ = 0
→ det J = 0 — the classic elbow singularity (arm straight). The
cpin elbow sweep shows σ_min is linear in that factor:
\[ \sigma_{\min}(\text{bare arm } \boldsymbol{J}) \;\approx\; 0.107\,\lvert\sin\theta_3\rvert \]
(constant ratio across the sweep). At θ₃ = 0 that is exactly 0, so
log s_min_G → −∞ (the observed −11/−13 is the numerical floor of
“zero”). The CoM coupling in Γ does not rescue it
(test_pinocchio_neutral_is_near_singular: s_min_G < 10⁻⁴
at neutral). The random walk that initializes q0 works only
because it moves the joint angle θ₃ off 0 — the single
variable that moves the dominant zero. To clear the derate floor σ_min ≥
0.025 needs |sin θ₃| ≳ 0.025/0.107 ≈ 0.23, i.e. |θ₃| ≳ 13–14°
off straight.
sin θ₃ has no length in it — it
cannot move the θ₃ = 0 zero. A longer arm is still
dead-straight-singular at neutral. (det J is homogeneous in the lengths:
scaling all links by α scales det by α³ but leaves every singular
surface fixed.)Jv_bar = M[:3,6:]/m), but the dominant
factor sin θ₃ is mass-blind —
counterweighting reshuffles the CoM coupling; it cannot create rank
where the geometry destroyed it.Both fixes operated on factors that are not the one that is zero. That is structural, not bad luck.
§3 proves length-independence at neutral. The legacy
script (singularity_geometry.py, formerly the
legacy/symbolic_math.py LEAD) asserted a stronger, dynamic
claim: that even at a fixed standoff — where a longer
arm genuinely should bend the elbow more and raise σ_min — the
circumcentroidal CoM shift cancels the gain, so
σ_min(Γ) stays flat. That would have meant “lengthening can never help.”
We tested it decisively.
Method (rule fixed in advance: σ_arm rises AND σ_Γ flat ⇒
CONFIRMED; both rise ⇒ BROKEN). Two independent mass-consistent
rebuilds of the free-flyer + UR3, byte-identical to the
live GiordanoRobot at α = 1 (σ_J+ = 0.0268, σ_Γ = 0.0262),
scaled the arm link lengths by α with link masses scaled consistently,
held the EE pose fixed by IK, and measured σ_min of the bare arm J, J⁺,
and full Γ. Cleanest leg — elbow bend held identical
(|sin θ₃| = 0.343) to isolate pure length scaling:
| α | |sin θ₃| | σ_arm | σ_Γ | Γ/arm |
|---|---|---|---|---|
| 1.00 | 0.343 | 0.0294 | 0.0219 | 0.747 |
| 1.18 | 0.343 | 0.0353 | 0.0260 | 0.739 |
| 1.40 | 0.343 | 0.0424 | 0.0309 | 0.729 |
| 1.70 | 0.343 | 0.0520 | 0.0373 | 0.717 |
| 2.00 | 0.343 | 0.0616 | 0.0435 | 0.706 |
σ_arm rises ×2.10, σ_Γ rises ×1.98 in lockstep;
Γ/arm holds a near-constant ~0.74. Verdict: BROKEN —
the CoM coupling is a bounded ~26 % haircut, not a cancellation. Robust
across 3 standoffs × 2 mass laws (Γ/arm stays in 0.55–0.75); all three
adversarial skeptics (mass-scaling, standoff-choice, mechanism) returned
refuted=false.
Why it cannot cancel (pencil-and-paper). J⁺ = J_νe − R_eb0·Jv_bar with R_eb0 = [R_eb; 0] (6×3), so the CoM correction touches only the 3 translation rows. Its magnitude ‖Jv_bar‖ saturates at a geometric ceiling (~12 % of ‖J_arm‖ ≈ 2.0): the arm-mass fraction m_arm/m_total ≤ 1, and the CoM lever grows at the same linear rate as the bare-arm columns, so the ratio is bounded. A bounded, rank-3, partially-misaligned subtraction cannot annihilate a multiplicative ~5× gain — it can only shave a near-constant fraction. Hence σ_min(Γ) ≥ ~0.53·σ_min(arm J) for every admissible mass law, and lengthening always nets a σ_min(Γ) increase.
So why did lengthening feel useless? Two real effects, neither of them a CoM cancellation:
Both are reach-margin / posture effects. This converges with two other threads: the speed-derate failure was over-extension (the arm driven toward full reach), and the singularity-root-cause analysis identified the near-singular regime as the arm at full extension. Three independent lines now indict posture/reach-margin.
config_sampling.deterministic.{enable,target_sigma},
utils/robot.py _deterministic_q_init): it sets
the elbow θ₃ and wrist θ₅ — the two vanishing
det-factors — to margin = arcsin(target_sigma/0.107),
RNG-free, vs the stochastic config search. The nominal gold standard was
re-pinned with it; the legacy random-search path remains available via
enable: false. Caveat (operating posture,
log-confirmed): in operation the elbow parks near the −π
fold at |sin θ₃| ≈ 0.31, and the operating slope is
s_min_J ≈ 0.048·|sin θ₃| — half the bare-arm
0.107, the same Γ/arm CoM haircut from §4. So the seed sets a good
start, but the operating floor is the modest elbow bend × the
coupling haircut; the reach-margin lever is to bend the elbow further
from both walls.validation/singularity_geometry.py,
validation/test_singularity_geometry.py (4 PASS).utils/robot.py; trend robust across 3 standoffs × 2 mass
laws; 3/3 skeptics refuted=false),
logs/logs_Jun18_26/CLAIMS.md ~17:40.as_independent +
bracket extraction (identity-checked to 0).generated_reports/math/threshold_derivation.md (sizing the
0.025 floor),
generated_reports/math/derate_impedance_vs_speed.md (why
the floor’s lever is posture, not a throttle).