Skip to content

Gate trajectory settling on progress, not elapsed ticks - #29

Open
Jepson2k wants to merge 5 commits into
mainfrom
fix/settle-progress
Open

Gate trajectory settling on progress, not elapsed ticks#29
Jepson2k wants to merge 5 commits into
mainfrom
fix/settle-progress

Conversation

@Jepson2k

Copy link
Copy Markdown
Collaborator

The segment player's settle phase completed a trajectory after a fixed 20-tick cap even when the firmware was still closing on the target, and the mock transport freezes all residual motion once the command stream goes idle. On a CPU-starved host the simulated plant falls behind the waypoint stream, the cap fires, and the command is reported complete with the robot stranded short of its target — observed in Waldo-Commander's hand-eye CI (Jepson2k/Waldo-Commander#29), where a home(wait=True) "completed" with J1 still 29° from standby and subsequent relative moves then ran out of joint range.

Settling now resets the tick counter whenever the position error shrinks, so the cap only fires after 20 ticks with no progress. This preserves the anti-hang escape for real hardware's steady-state residual (error stops changing → escape after 200 ms, as before), while a plant that is still converging is always allowed to finish — completion is never reported mid-motion. An unconverged completion now logs a warning with the residual step count instead of passing silently.

Verified with the parol6 suite (275 passed) and the full Waldo-Commander suite against this branch (312 passed). Also included on claude/eye-hand-calibration-waldo-nrb1sf (#28) so the WC PR's CI picks it up via branch matching; merging this PR first will shrink #28 back to its own change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EdLG1uiKKZJ6aAeiojeRwd

Jepson2k and others added 5 commits July 27, 2026 16:07
The settle phase completed a segment after a fixed 20-tick cap even with
the firmware still closing on the target, and the mock transport freezes
all residual motion once the command stream goes idle — on a starved
host the simulated plant falls behind the waypoint stream, the cap
fires, and the robot is reported complete while stranded short of the
target (waldo-commander's hand-eye CI observed home "complete" with J1
29 deg from standby). Settling now resets the tick counter whenever the
position error shrinks, so the cap only fires after 20 ticks without
progress — preserving the anti-hang escape for real hardware's
steady-state residual — and an unconverged completion logs the residual
instead of passing silently.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EdLG1uiKKZJ6aAeiojeRwd
scipy-stubs 1.18 types bc_type derivative values as array-likes only,
while scipy requires scalars for 1-D y. ty narrows a bare-declared Any
on assignment, so the tuple branch failed overload resolution; an
annotated assignment keeps bc at its declared Any.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LkVPPMQg33tFuGCVLkyrJQ
ty 0.0.69 resolves ndarray.tolist() without the ty-specific suppression
and infers the frame memoryview union directly; it now warns on both
leftovers, and warnings fail the lint hook.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LkVPPMQg33tFuGCVLkyrJQ
Unpinned stub releases have broken the ty lint hook twice; ty itself
stays unpinned deliberately while it is still in beta.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LkVPPMQg33tFuGCVLkyrJQ
scipy-stubs 1.18.x requires Python >=3.12, so a single exact pin is
uninstallable on the 3.11 CI jobs; 3.11 pins the last 1.17 release.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LkVPPMQg33tFuGCVLkyrJQ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant