homing: run every leg of a synchronized home sequence together - #4577
Open
grandixximo wants to merge 1 commit into
Open
grandixximo wants to merge 1 commit into
grandixximo wants to merge 1 commit into
Conversation
A negative HOME_SEQUENCE only synchronized the final move. Search, back-off and latch ran per joint, so on a gantry one side moved while the other held, or the two moved in opposite directions, for distances the software cannot know: how deep a side sits in its switch, how far the switches are out of line. Each such leg racks the frame, and on a stepper gantry with encoders that is a following error that comes and goes with where the previous cycle left the frame (LinuxCNC#4572). Run every leg together: back off together when any side starts on its switch, search together, finish the search at latch speed once the first side has tripped, back off at latch speed once all have tripped, latch together. The sides are then never driven apart by more than the misalignment of their switches plus the latch overshoot: 0.56 mm of strain instead of 1.02 mm with Sigma1912's settings on a simulated bridge. A stuck-on switch drives the group together to the end of travel and aborts there instead of twisting the frame. tests/home-sync-backoff couples two joints through a limit3 bridge and homes the pair from far away, from HOME with one switch active, and with both sides inside their switches; the old code peaks at 1.2 to 1.3 mm of strain against a 1.05 mm limit.
Contributor
Author
Contributor
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.




A negative HOME_SEQUENCE only synchronized the final move. Search, back-off and latch ran per joint, so on a gantry one side moved while the other held, or the two moved apart, for distances the software cannot know (depth into the switch, misalignment of the switches). Each such leg racks the frame. On a stepper gantry with encoders it shows as a following error that comes and goes with where the previous cycle left the frame, which is what #4572 looked like.
This runs every leg of the group together: back off together when any side starts on its switch, search together, finish the search at latch speed once the first side has tripped, back off at latch speed once all have tripped, latch together. The sides are never driven apart by more than the switch misalignment plus the latch overshoot. On a simulated bridge with @Sigma1912's joint settings the peak strain drops from 1.02 mm to 0.56 mm, and a stuck-on switch drives the group together to the end of travel and aborts there.
Behaviour change for every negative-sequence config: the back-off from the switch runs at HOME_LATCH_VEL instead of HOME_SEARCH_VEL, and the legs wait for each other, so a cycle takes a little longer. Docs updated.
New test tests/home-sync-backoff: two joints coupled through a limit3 bridge (strain capped in size and rate), homed from far away, from HOME with one switch active, and with both sides inside their switches. The old code peaks at 1.2 to 1.3 mm of strain against a 1.05 mm limit.