Add SO-ARM101 miniature palletizing workshop#5181
Open
Nick Hehr (HipsterBrown) wants to merge 29 commits into
Open
Add SO-ARM101 miniature palletizing workshop#5181Nick Hehr (HipsterBrown) wants to merge 29 commits into
Nick Hehr (HipsterBrown) wants to merge 29 commits into
Conversation
…oses are world poses Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EdtYcpEHeA2yvQ2ksBzZHH
… hand) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EdtYcpEHeA2yvQ2ksBzZHH
Structured stubs for the WorldState obstacle-avoidance phase (milestone two) and the optional inline-module phase, completing the phase 1-6 sidebar chain for the SO-ARM101 palletizing workshop.
…e checkpoint Phase 3's capture_pose.py is now framed as a self-contained script the learner saves and runs directly with the SDK, not something pulled from the companion repo; the learner just records the two anchor poses by hand. Phase 4 is now the first place the companion repo is cloned, and is where the recorded poses get pasted into helpers.py. Also reworks the place() checkpoint to verify against the first cycle of pack() instead of an unsupported standalone place(0) call.
…module' naming Capitalizes "Phase N" in body prose across the workshop to match the sibling workshop's convention, and standardizes on "SO-ARM101 module" instead of "SO-101 module" when referring to the Viam module.
… refs, drop unknown-context negatives)
…nent, parent arm)
Immediate consistency fixes from the format audit plus the wrap-up page: - Use sh code fences (was bash) to match the reference workshop - Add a "Where to start" routing section to the overview - Add forward-transition sentences to phases 1 and 3 before workshop-nav - Add 07-wrap-up.md (what you built / exercised / where to go next), wire the overview pointer and phase 6 next link to it
- More engaging, phase-free overview intro (story + audience) - Host is a personal computer; add printable cube/pallet template - Drop per-phase time estimates and the core/optional framing - Remove the overview 5-DOF section (too much upfront context) - Rename companion repo to viam-devrel/mini-palletizer - Drop LeRobot install from prerequisites - Phase 1: adapt the seed's three-layers (ASCII) and SDK-connect sections; frame system is part of viam-server, not a service; rename to "three robotics concepts"; drop "why a real arm" section; fix the checkpoint objective - Phase 2: use family/model names (so101/arm); remove the calibrate section (a prerequisite), the LeRobot mention, "not a simulation", and the gripper-frame/TCP asides - Phase 3: capture poses from the arm test card in the app instead of a Python script - Phase 4: "packing routine"; drop "no obstacle avoidance yet"
- Overview: drop redundant "What you'll build"; require only viam-server - Phase 1: trim intro; drop viam-agent from the three-layers (not on macOS); remove frame-system from components/services; trim motion line - Phase 2: explain what parenting the arm to the world frame means - Phase 3: add a DoCommand intro; drop stray lines; move the grid derivation out to Phase 4 - Phase 4: add "The pallet grid" section with a stacked-grid diagram (plus an isometric ASSET); drop "You do not rewrite any of this"
- Phase 1: motion service is a builtin service (no config); reframe the
frame system ("where is everything and how is it related") and
WorldState ("what is in the world": obstacles + transforms), with
links to the frame-system and obstacles docs
- Phase 3: add mat/staging marker placement (align to arm axes, tape down)
- Phase 4: replace the ASCII grid with a rendered isometric diagram
Phase 5 walks through modeling placed cubes and the held cube in WorldState so the motion planner routes around the growing stack, completing the collision-free two-layer pack (milestone two). Phase 6 mirrors the pick-and-place workshop's inline-module pattern, wrapping the pack loop in a generic-service module with dependency injection and a do_command entry point. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EdtYcpEHeA2yvQ2ksBzZHH
End-to-end review fixes: drop viam-agent and the calibration sensor from the wrap-up recap (neither is part of this workshop), remove the untaught 5-DOF-orientation claim, and point Phase 1's frame-system link at the same overview page Phase 2 uses.
Phase 5: positive reframe ("What the planner already knows") clarifying
the default WorldState is configured components with frames; introduce
geometries before RectangularPrism; split the obstacles method build-up
into an obstacles section and a transforms section; move the cube-center
and held-cube tuning caveats into aside callouts; reword the config-
obstacle line with a table example. Phase 6: reword the dependency-
injection lead-in and rename the run section. Reduce "real hardware".
Mark screenshot/video/diagram placements for the shot list (rig photos, test-card and 3D-scene UI shots, the teach-by-hand and milestone videos, inline-module build/trigger shots). Full list in plans/.
…raft flags) Remove draft: true from the overview and all six phase pages plus the wrap-up so the workshop builds into production and appears in the Netlify preview. The headless _phase-template.md stays draft.
✅ Deploy Preview for viam-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Author diagram-cell-layout as a top-down SVG plan of the cell (arm base at the world origin, staging spot, 2x2 pallet grid with origin + x/y axes, pick-then-place flow, and a two-layer inset) and embed it via imgproc, matching the frame-system docs' SVG-diagram style. grid-iso (phase 4) was already produced; these are the two DIAGRAM assets from the shot list.
…diagram Replace the two-stick arm with a base, articulated upper-arm and forearm (joint circles, tube outline+fill), and a two-finger gripper, matching the style of the frame-system docs' arm SVGs.
Reroute the arm lower so the forearm clears the 'feed one cube here' label, and move the two-layer inset caption beside the cube stack instead of above it.
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
Adds a new sequential-workshop tutorial, Miniature Palletizing with the SO-ARM101, at
docs/tutorials/so-arm101-palletizing/— the second workshop in the collection seeded by pick-and-place, reusing that format with no new layouts or shortcodes.An affordable desktop 5-DOF arm packs eight cubes (two layers of four) onto a printed pallet mat:
palletizer.pyfor a static bottom-layer pack — milestone oneCompanion code lives in
viam-devrel/mini-palletizer:helpers.py, the finishedreference/palletizer.py, a machine-config fragment, and a printable cube + pallet-mat template (20 mm cubes, 30 mm pitch). A rendered isometric grid diagram ships inassets/; the remaining screenshots/videos are marked with<!-- ASSET ... -->placement comments (shot list tracked separately).Test plan
make build-prodpasses; the workshop builds into production and the overview appears as a card on/tutorials/grid-isodiagram rendersPages are published (draft flag removed) so this content is included in the Netlify preview for review.
🤖 Generated with Claude Code
https://claude.ai/code/session_01EdtYcpEHeA2yvQ2ksBzZHH