Skip to content

PicnicPlace

An open source controller for PCB pick-and-place machines, built network first: a headless core runs the machine, and every interface connects to it over a documented API.

Try the simulator Read the specification

Early development

PicnicPlace can't assemble a board yet. Manual control (homing, jogging, vacuum, cameras) and visual homing work against the built-in simulator; the first tests on a real LumenPnP are next. Follow along on GitHub.

PicnicPlace Studio's machine view, running against the simulator

PicnicPlace Studio connected to the simulator: the machine map with staging plates, feeder rails, and the area every nozzle can reach, live camera views, and the head with vacuum, pumps, valves, and lights.

Why PicnicPlace

  • Network first


    The core (picnicd) runs on the machine's computer. The Studio GUI, scripts, and your own tools connect over a versioned REST and WebSocket API. Closing a browser never stops a job.

  • Safety in the core


    Moves travel at safe Z, a physical safe-Z sensor is authoritative when the machine has one, only one client controls the machine at a time, and STOP works from anywhere.

  • Vision built in


    OpenCV-based fiducial finding, visual homing on the machine's datum, and camera calibration, with part alignment and board fiducials to come.

  • Develop without a machine


    A built-in simulator renders camera images from the machine's real geometry, and a fake Marlin firmware exercises the real driver, so most work needs no hardware.

  • Machine profiles


    One TOML file describes a machine: axes, nozzles, cameras, staging plates, keep-outs, and I/O. Where boards can go is computed from where every nozzle can reach.

  • Open, and staying open


    Licensed under the MPL-2.0: improvements to PicnicPlace stay open, while separate add-ons and API clients may use any license.

Machines

The first machine is the LumenPnP v4.1, with a machine profile built from the machine's published design files and real OpenPnP configurations. A Quad 4c conversion is planned next, and the driver and profile design avoid LumenPnP-only assumptions. See the LumenPnP notes.

Roadmap

Milestone Scope Status
M0: Skeleton Core, simulator, event socket, Studio shell Done
M1: Manual control Machine profiles, machine view, jogging, safe-Z interlock, control lease, Marlin driver, camera streams Done, awaiting real-machine tests
M2: Calibration Visual homing and camera scale (done); lens calibration, nozzle offsets and runout, guided wizards In progress
M3: Single placement Parts and packages, Photon feeders, pick, bottom-camera alignment, place Planned
M4: Jobs KiCad and CSV import, board fiducials, planner, run history Planned
M5: 1.0 Strip and tray feeders, packaging, user documentation, OpenPnP library import Planned

Get involved

PicnicPlace is written in Python (the core) and TypeScript with React (the Studio), on Linux first, with macOS supported for development. Start with Contributing, and open an issue or a discussion on GitHub.

LumenPnP and Opulo are trademarks of Opulo. PicnicPlace is an independent project and is not affiliated with or endorsed by Opulo.