# M4. Pick and place, repeatably

> 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:** fit a gripper and program a pick-and-place loop. Measure that it repeats.

## Parts

One gripper, chosen at the start of this milestone ([End effectors](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/)):

- the [pneumatic gripper](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/pneumatic-gripper/), which needs compressed air and a valve ([Pneumatics](https://docs.source-robotics.com/PAROL-docs/1.1/06-peripherals/pneumatics/));
- the [SSG-48](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/ssg-48/) or MSG electric gripper, on the CAN bus at the forearm's M8 connector;
- a printed gripper of our own design with TPU fingers on the joint 6 coupler ([Custom tools](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/custom-tools/)). This one is our design.

## Concepts

- **The tool frame and the TCP.** The software positions the tool centre point, so the tool must be registered with its offset from the flange ([Custom tools](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/custom-tools/); [Reference frames](https://docs.source-robotics.com/PAROL-docs/1.1/theory/reference-frames/)).
- **Joint moves and Cartesian moves**, and what a repeatability of 0.1 mm means ([Specifications](https://docs.source-robotics.com/PAROL-docs/1.1/03-technical-data/specifications/); [Drives, ratios and resolution](https://docs.source-robotics.com/PAROL-docs/1.1/03-technical-data/drives-and-ratios/)).
- **The 10 ms packet cycle**, and why a slow PC makes the arm stutter ([What you need](https://docs.source-robotics.com/PAROL-docs/1.1/01-overview/what-you-need/)).

## How-to

- Gripper setup and the homing offset for the tool ([Homing, "Before you press Home"](https://docs.source-robotics.com/PAROL-docs/1.1/05-operation/homing/); [End effectors](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/)).
- RBTscript programs in the commander ([Running programs](https://docs.source-robotics.com/PAROL-docs/1.1/05-operation/running-programs/); [RBTscript](https://docs.source-robotics.com/PAROL-docs/1.1/programming/03-commander/rbtscript/)).
- The [Python API](https://docs.source-robotics.com/PAROL-docs/1.1/programming/02-python-api/), and its [Tools and the TCP](https://docs.source-robotics.com/PAROL-docs/1.1/programming/02-python-api/tools-and-tcp/) page.

## Practice

- Teaching poses.
- Writing short scripts.
- The dial-indicator repeatability test.

## Done check

Twenty cycles of picking a 3.5 mm cable plug from a printed nest and placing it in a second nest. A dial gauge or feeler test shows the spread of the return-to-pose. Joel compares it to the spec and explains the gap.

**needs\_source:** the measurement method. The official docs state the spec and give no test procedure.

## Terms

- **TCP** and **tool centre point**: the point on the tool that the software positions, set as a transform from the flange ([Custom tools](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/custom-tools/)).
- **repeatability**: how closely the arm returns to a taught pose. PAROL6 specifies 0.1 mm ([Specifications](https://docs.source-robotics.com/PAROL-docs/1.1/03-technical-data/specifications/)).
- **RBTscript**: the program language of the commander software ([RBTscript](https://docs.source-robotics.com/PAROL-docs/1.1/programming/03-commander/rbtscript/)).

## Video

[The M4 video](/lore/video-m4) is planned.

## Sources

1. [End effectors, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/)
   Source Robotics. The pneumatic gripper, the SSG-48 and MSG electric grippers, and custom tools. Accessed 2026-11-07.

2. [Custom tools, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/end-effectors/custom-tools/)
   Source Robotics. Registering a tool and its tool centre point offset in the Python API. Accessed 2026-11-07.

3. [Specifications, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/03-technical-data/specifications/)
   Source Robotics. Repeatability of 0.1 mm. Accessed 2026-11-07.

4. [Drives, ratios and resolution, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/03-technical-data/drives-and-ratios/)
   Source Robotics. Why repeatability is specified at 0.1 mm rather than at the step size. Accessed 2026-11-07.

5. [Running programs, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/05-operation/running-programs/)
   Source Robotics. RBTscript programs in the commander. Accessed 2026-11-07.

6. [Python API, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/programming/02-python-api/)
   Source Robotics. Motion, tools and the TCP from Python. Accessed 2026-11-07.

7. [What you need, PAROL6 docs 1.1](https://docs.source-robotics.com/PAROL-docs/1.1/01-overview/what-you-need/)
   Source Robotics. The 10 ms packet cycle and why a slow PC stutters. Accessed 2026-11-07.

## Lore on this page

- [The PAROL6 milestones](/lore/milestones)
- [M3. The whole arm moves](/lore/m3-whole-arm)

## What links here

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

- 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)

- M4 video: Pick and place → The video for milestone 4 is planned and not yet recorded. → [Read page](https://parol6.build/lore/video-m4)

- 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)
