Skip to content

Keep a 3mm collision buffer on free traverses - #296

Merged
Nicolas Palpacuer (NickPPC) merged 1 commit into
mainfrom
worktree-collision-buffer
Aug 27, 2026
Merged

Keep a 3mm collision buffer on free traverses#296
Nicolas Palpacuer (NickPPC) merged 1 commit into
mainfrom
worktree-collision-buffer

Conversation

@NickPPC

Copy link
Copy Markdown
Member

Summary

Free traverses planned with armplanning's default CollisionBufferMM of 1e-8, letting the planner route the arm within a hair of the machine. Unconstrained moves now plan with a 3mm buffer; steps carrying a LinearConstraint keep the default, since they have to close the last millimetres onto hardware.

⚠️ Not verified on hardware. A larger buffer can make a previously-solvable move fail to plan — worth a full brew cycle before merging.

Also closes a gap in the no-spill carry, which builds its own PlanRequest: a no-spill step's clearance used to depend on no_spill_carry — off, the step fell through to planToRawPose and got the buffer; on, it routed to carryHeldLevel and got none. Both paths now match.

Pivot and circular moves lack a LinearConstraint too, but keep the tight default deliberately — they are the grinding, cleaning, and shake contact phases.

Testing

make lint (0 issues) and make test pass. No new tests — the change is planner configuration.

Claude Code prompts used
  • "Hi Claude, can you add a collision buffer of 3mm in the planner options for the movements which are do not have a linear constraint"
  • "We also need this to apply for the movements which have a no spill constraint. Will it apply to those as is?
    If not can you adjust to apply it then too?"
  • "commit push and open a PR"

🤖 Generated with Claude Code

Unconstrained moves now plan with CollisionBufferMM set to 3mm, so free
traverses hold their distance from the machine instead of grazing it at
armplanning's 1e-8 default. Steps carrying a LinearConstraint keep that
default — they have to close the last millimetres onto hardware.

The no-spill level carry builds its own PlanRequest, so it gets the buffer
explicitly. Without that, a no-spill step's clearance depended on the
no_spill_carry flag: off, it fell through to planToRawPose and got the
buffer; on, it routed to carryHeldLevel and got none.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@NickPPC
Nicolas Palpacuer (NickPPC) merged commit 0b970d9 into main Aug 27, 2026
4 checks passed
@NickPPC
Nicolas Palpacuer (NickPPC) deleted the worktree-collision-buffer branch August 27, 2026 17:58
Nicolas Palpacuer (NickPPC) added a commit that referenced this pull request Aug 28, 2026
Tunes the value #296 introduced. The clearance still applies to every
unconstrained move, including the no-spill level carry; steps carrying a
LinearConstraint are unaffected and keep armplanning's default.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nicolas Palpacuer (NickPPC) added a commit that referenced this pull request Aug 28, 2026
* Carry the milk bottle without the level-carry constraint

The bottle is tall and grasped high, so the no-spill pose cloud may
simply be unplannable for it — and an unplannable carry fails the order
rather than degrading. Free-plan both of its carries (to the pour
position and back to the fridge) until the poses are calibrated and we
know what the arm can actually hold.

The pour pivots are untouched: tilt speed stays on pour_vel_degs_per_sec
and pour_acc_degs_per_sec2. Cup and glass carries keep no_spill_carry.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Lower the free-traverse collision buffer to 2mm

Tunes the value #296 introduced. The clearance still applies to every
unconstrained move, including the no-spill level carry; steps carrying a
LinearConstraint are unaffected and keep armplanning's default.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

2 participants