fix(pf400): restore monitor speed on init + expose speed control#105
Open
moeltae wants to merge 1 commit into
Open
fix(pf400): restore monitor speed on init + expose speed control#105moeltae wants to merge 1 commit into
moeltae wants to merge 1 commit into
Conversation
The PF400 scales every motion by its global monitor speed (mspeed, 1-100). Nothing in the stack ever set it, so the arm inherited whatever governor was left behind by manual jogging/teaching (commonly 10-30%), silently slowing every automated move. - driver: set mspeed to a configured value (default 100) on every initialize() via _ensure_system_speed(); non-fatal on failure. - config: add system_speed field (pf400.proto Config + RobotConfig), default 100; server reads it and maps unset(0) -> 100. - server: add SetSpeed/GetSpeed gRPC commands so a teach-pendant speed slider can drive mspeed live (plus Estimate* handlers for sim mode). - server: add a "transit" default motion profile (inrange=-1) enabling continuous-path blending on fast point-to-point legs; approach/place keep inrange=0 profiles for precise settling. Validated: proto compiles and generates the new symbols; mspeed clamping/default, SetSpeed/GetSpeed dispatch, and profile config are covered by stubbed checks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
moeltae
marked this pull request as ready for review
July 17, 2026 23:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why the PF400 was moving slowly
The PF400 scales every motion by its global monitor speed
mspeed(a 1–100 governor). The driver hadset_sys_speed/get_sys_speeddefined but never called anywhere — so the arm ran at whatevermspeedthe last manual jog / teach-pendant session left behind (commonly 10–30%), silently slowing all automated moves.Changes
driver.py— the fix:_ensure_system_speed()runs on everyinitialize()and setsmspeedto a configured value (default 100), clamped to 1–100. Non-fatal if it fails, so a bad governor can't block startup. Logs previous → new value.pf400.proto/RobotConfig: newsystem_speedconfig field (default 100; unset/0 → 100).server.py: wiressystem_speedinto the driver; addsSetSpeed/GetSpeedgRPC commands (+Estimate*for sim mode) so a teach-pendant speed slider can drivemspeedlive.server.py: adds atransitdefault motion profile (inrange=-1) enabling continuous-path blending on fast point-to-point legs — groundwork; approach/place keepinrange=0profiles for precise settling.Validation
mspeedclamping/default (0→100, 250→100, 30→30),SetSpeedclamping (150→100, 0→1),GetSpeedmeta_data, transit profile (inrange=-1).Notes / follow-ups
*_pb2are gitignored (built at install) — rebuild the package for the server to pick upConfig.system_speedand the new commands. Takes effect on next toolConfigure/initialize.transitprofile is not yet wired into sequences (prod loads profiles from the Galago DB); applying blending to transit legs is a follow-up needing hardware tuning.device-controllersPF400 init has the same omission (Robot.cshasmspeedplumbing but doesn't set it) — same one-line fix applies.This is Phase 1 of a larger PF400 / teach-pendant plan (jog overhaul, safety/recovery commands, richer status + teaching, pendant UI).
🤖 Generated with Claude Code