Repository navigation
position_bed control verb for the Bambu A1 (approved 2026-11-05) - #12
Merged
Merged
Conversation
Yang approved a fifth control verb for the A1 only, so the camera can see
the whole plate before a plate check after the bed was parked forward for
pickup, and so the bed can be returned to the pickup position.
POST /printers/{id}/control/position_bed takes
{"position": "inspect" | "pickup", "bed_path_clear": true} and moves the
bed to the Y configured under the printer's `bed_positions`. It sends
exactly `G90` / `G1 Y<y> F<feed>` through the backend: no X, no Z, no
homing, no caller-supplied coordinate. Gates: claim; idle, error-free
printer with no gateway job in flight; edge-verified caller; an agent also
needs agent mode on. Config accepts `bed_positions` on an A1 only. Each
move emits `bed.moved`; a refused or undelivered move is never retried.
AGENTS.md and AGENT_RULES.md rule 1 record the approval.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
First hardware test of
|
| Time (UTC) | Action | Result |
|---|---|---|
| 04:41:24 | Snapshot oi2Tv9oC…r5U6 |
Bed in the forward pickup position; front-left corner out of frame; visible plate empty |
| 04:41:40 | position_bed inspect |
Accepted: {"position":"inspect","y_mm":128.0,"moved_by_verified":true,…} |
| 04:42:00 | Snapshot JMdUBoY4…sdT50 |
Bed moved back towards the centre; front-left corner and notch visible and clear; far corner cut off at the frame edge and under glare |
| 04:42:13 | position_bed pickup |
Accepted: {"position":"pickup","y_mm":250.0,"moved_by_verified":true,…} |
| 04:42:32 | Snapshot SIoOMIfF…rIgc |
Bed back where it started, matching the first snapshot |
| — | Release | 204 |
- Printer screen: no warning during either move (reported by the person at the printer).
- No refusals, so nothing was retried.
Findings
inspect(Y 128) works for front-left jobs: the front-left corner is clearly in view. The far corner is still partly out of frame. A slightly higher Y (about 140) might show both corners; that needs checking by eye.- The printer doesn't report bed position. The response's
notesays so, so the snapshot is the only confirmation that the bed moved. - Tooling gap (not in this PR): the lab MCP client returns only the response body, so it can't show the exact status code of a successful call.
3 tasks done
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.
Summary
Yang approved (2026-11-05) a fifth control verb, A1 only: after a print the bed is parked forward at Y250 for the robot, where the camera cannot see the front of the plate, so agent plate checks fail.
POST /printers/{id}/control/position_bedwith{"position": "inspect" | "pickup", "bed_path_clear": true}moves the bed to the Y configured under the printer'sbed_positions(inspect_y_mm,pickup_y_mm,feed_mm_mindefault 3000).G90/G1 Y<y> F<feed>: no X, no Z, no homing, no caller-supplied coordinate.bed_path_clearmust be literallytrue.bed_positionson an A1 only, within the declared bed.allowed_actionslistsposition_bedwhen the gate is open; each move emits abed.movedevent; an undelivered move returns 502 and is never retried.AGENTS.mdandAGENT_RULES.mdrule 1; README, API reference, agent guide (the inspect step before the snapshot) and example config updated.Hardware unknowns
G1 Yafter the end gcode'sM18without re-homing. If it does not, the move is reported and nothing else happens.inspect_y_mm: start at 128 and check the camera view.Test plan
uv run pytest -q— 346 passed (13 new, all on fake backends)uv run ruff check .bambu_a1_01: inspect, confirm with camera, then pickup🤖 Generated with Claude Code