Skip to content

fix(controller): Stop holds position instead of writing the max-speed sentinel - #54

Draft
Nick Hehr (HipsterBrown) wants to merge 1 commit into
mainfrom
fix/stop-holds-position
Draft

Nick Hehr (HipsterBrown) wants to merge 1 commit into
mainfrom
fix/stop-holds-position

Conversation

@HipsterBrown

Copy link
Copy Markdown
Contributor

Follow-up from #48. Goal_Velocity = 0 is the max-speed sentinel, so the old Stop did not stop a mid-move servo.

  • controller.Stop(ctx, ids) reads Present_Position and writes it back to Goal_Position: one SyncRead, one SyncWrite, goal register only (Speed/Acc untouched). A failed read is an error; nothing is written.
  • Takes the caller's servo IDs because the session always holds 1–6 and SyncRead waits on every ID, so an arm-only bus would otherwise never stop. arm.Stop passes servos 1–5; StopServo (gripper servo_stop) delegates to it.
  • CalibratedServo.SetVelocity removed (no callers).
  • Docs and CLAUDE.md updated.

Not yet verified on hardware. Needed before undrafting: stop a paced move, a streamed trajectory, and a gripper move mid-travel; watch the shoulder-lift joint for ringing on the hold.

🤖 Generated with Claude Code

https://claude.ai/code/session_0143XEcQfbDcub9vusPR8zP7

…he max-speed sentinel

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143XEcQfbDcub9vusPR8zP7
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