# M5. Touch the skiff

> For agents: start with the [agent guide](https://parol6.build/llms.txt). Every page is Markdown by default; add `Accept: text/html` for HTML.

**Whole task:** register a Eurorack skiff in the robot's frame, then press a button and turn a knob to a set position.

**Our design.** The PAROL6 manual stops at pick-and-place. From here on the plan is ours, built on the [Python API](https://docs.source-robotics.com/PAROL-docs/1.1/programming/02-python-api/) and the [end-effector docs](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/).

## Parts

- The skiff. See [the skiff target](/lore/skiff-target); the choice is open.
- A rigid shared base plate for the arm and the skiff. The robot's base mounts on 30 by 30 mm profile ([Mounting](https://docs.source-robotics.com/PAROL-docs/1.1/04-installation/mounting/)).
- A knob-turning end effector: a printed knob socket or a TPU-padded finger.

## Concepts

- **Coordinate frames and registration.** Touch three fiducials on the skiff panel to find its pose in the robot's frame ([Reference frames](https://docs.source-robotics.com/PAROL-docs/1.1/theory/reference-frames/)).
- **Eurorack mechanics.** Rails, HP (5.08 mm, from [Doepfer's A-100 construction details](https://www.doepfer.de/a100_man/a100m_e.htm)), and the jack and knob geometry of each module.
- **Why compliance matters** when a rigid arm touches something rigid.

**needs\_source:** the jack and knob positions of each module, measured from the real panels.

## How-to

- Python API motion, the tool frame and slow approach moves ([Python API](https://docs.source-robotics.com/PAROL-docs/1.1/programming/02-python-api/)).
- Our registration script, written as a completion task.

## Practice

- Caliper measurement of the panel geometry.
- Touch-off drills.
- Tuning the approach speed.

## Done check

With the skiff at a fresh pose, Joel registers it in under 5 minutes. Then the arm turns a named knob from fully counter-clockwise to noon, measured by the voltage on a CV output, and presses a button 10 times out of 10.

## Terms

- **registration**: finding where an object sits in the robot's frame by touching known points on it. This is our design, built on the frames in [Reference frames](https://docs.source-robotics.com/PAROL-docs/1.1/theory/reference-frames/).
- **fiducial**: a known reference point on the skiff panel that the tool touches during registration. Our design.
- **compliance**: give in the tool, so that a small position error does not become a large force. Our design, needed because open-loop steppers cannot feel force ([Drives, ratios and resolution](https://docs.source-robotics.com/PAROL-docs/1.1/03-technical-data/drives-and-ratios/)).

## Video

[The M5 video](/lore/video-m5) is planned.

## Sources

1. [Python API, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/programming/02-python-api/)
   Source Robotics. Motion, the tool frame and slow approach moves, the base for our registration script. Accessed 2026-11-07.

2. [Reference frames, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/theory/reference-frames/)
   Source Robotics. The frames that registration maps between. Accessed 2026-11-07.

3. [Mounting, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/04-installation/mounting/)
   Source Robotics. The base mounts on 30 by 30 mm profile. Accessed 2026-11-07.

4. [Custom tools, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/custom-tools/)
   Source Robotics. Mounting and registering a printed knob-turning tool. Accessed 2026-11-07.

5. [A-100 construction details](https://www.doepfer.de/a100_man/a100m_e.htm)
   Doepfer Musikelektronik. Eurorack panel height and the HP grid of 5.08 mm. Accessed 2026-11-07.

## Lore on this page

- [The PAROL6 milestones](/lore/milestones)
- [The skiff target](/lore/skiff-target)

## What links here

- add-a-store → Add persistence through a service named for an application job, with validation, vendor Layers, migrations, bounded reads, and shared backend tests. → [Read page](https://parol6.build/skills/add-a-store)

- Agent guide → Joel builds a PAROL6 robot arm, one sourced and filmed milestone at a time. → [Read page](https://parol6.build/llms.txt)

- Build and run the PAROL6 wiki (README.md) → What is in the repo and how to run the wiki locally. → [Read page](https://parol6.build/README.md)

- Build steps by milestone → The official how-to pages for each milestone, in build order, gathered from the milestone pages. → [Read page](https://parol6.build/lore/build-steps)

- Change log → What changed in the files served here, newest first. → [Read page](https://parol6.build/log)

- Concepts by milestone → The mental models each milestone teaches, gathered from the milestone pages, with the glossary for single terms. → [Read page](https://parol6.build/lore/concepts)

- Full agent guide → Joel builds a PAROL6 robot arm, one sourced and filmed milestone at a time. → [Read page](https://parol6.build/llms-full.txt)

- Lint and type escape ledger (debt.md) → A source-linked count of repo-owned lint and type escapes. → [Read page](https://parol6.build/debt.md)

- M5 video: Touch the skiff → The video for milestone 5 is planned and not yet recorded. → [Read page](https://parol6.build/lore/video-m5)

- M6 video: Patch a cable → The video for milestone 6 is planned and not yet recorded. → [Read page](https://parol6.build/lore/video-m6)

- M6. Patch a cable → The sixth milestone grips a 3.5 mm patch cable, inserts it into a target jack, verifies the patch electrically and pulls it back out. → [Read page](https://parol6.build/lore/m6-patch-a-cable)

- M7. Play it → The capstone milestone runs a script that patches cables and moves knobs on cue to perform a short written piece. → [Read page](https://parol6.build/lore/m7-play-it)

- Milestone videos → Each milestone ends in one video, and every video is planned until Joel publishes it. → [Read page](https://parol6.build/lore/videos)

- PAROL6 build → Joel builds a PAROL6 robot arm, one sourced and filmed milestone at a time. → [Read page](https://parol6.build/)

- PAROL6 sources and licences → Every build fact on this wiki comes from the official PAROL6 manual and repository, which are linked here with their licences. → [Read page](https://parol6.build/lore/sources)

- PAROL6 wiki | PAROL6 build → The PAROL6 build wiki: the milestones, their videos and the official sources behind them. → [Read page](https://parol6.build/lore)

- Parts by milestone → What goes on the bench at each milestone, gathered from the milestone pages and the official bill of materials. → [Read page](https://parol6.build/lore/parts)

- Source change history (log.md) → The generated change log as Markdown. → [Read page](https://parol6.build/log.md)

- The PAROL6 milestones → Seven milestones take the build from a bare control board to a robot arm that plays a Eurorack skiff. → [Read page](https://parol6.build/lore/milestones)

- The skiff target → The skiff is the Eurorack case the robot plays from milestone 5 on, and its choice is still open. → [Read page](https://parol6.build/lore/skiff-target)

- write-a-wiki-page → Write or revise public wiki pages with short prose, cited claims, meaningful visuals, and pinned code snippets. → [Read page](https://parol6.build/skills/write-a-wiki-page)
