Repository navigation
PreciseFlexArm: picks and places write a Cartesian station - #1576
Conversation
`StationType` empties a station set by `locAngles`, so every pick and place targeted 0, 0, 0. The station is now written with `locXyz` and `locConfig`. A rail arm is refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
a64d9ae to
095e19b
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It wraps the controller's locAngles, a real command, even with picks and places now writing a Cartesian station. A wire test pins what it sends, with and without a rail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The controller reaches a Cartesian station with the wrist at the heading wrapped to +-180, less the shoulder and the elbow. A station taught a full turn from that made `pickplate` turn the wrist 360 degrees on the way down, past a column check run on the taught wrist. The heading is rounded before it is wrapped, so the check and the station sent cannot differ at exactly +-180. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
tested this on a PF400 (extended reach, IntelliGuide gripper) - the station written by
found one gap - fixed in 2ddc73b - the check now uses the wrist the controller takes, and the check and one open item - one place stopped with −3122 about 42 mm above the station, the retry and every move after were clean, cause not found anything else you'd want run on the device before review? |
The Problem
Every pick and place on a PreciseFlex goes to the wrong place.
pick_up_at_*anddrop_at_*write the station withlocAngles, then sendStationType, which empties a station set that way. The station ends up at 0, 0, 0, so the controller works from a location nobody asked for: on the arm,pickplatedrove the gripper about 290 mm down and changed the elbow's side.The column and base plate check does not catch it, because it looks at the station that was asked for and not at where the controller goes.
PR Content/Solution
locXyzandlocConfig, computed from the same joint state the check ran on, then sendStationType. A station set this way stays throughStationType._unchecked_fw_set_joint_anglesstays, forlocAngles; nothing in a pick or place calls it now.NotImplementedErrorwhen the station would be written, since a rail station has not been run on an arm.wherecreadings from the arm, one on each elbow side.🤖 Generated with Claude Code