this post is not a question/announcement, just sharing something i have found useful …
… which is using a raspberry pi for every workcell. The pi in our case runs in headless mode (no screen / monitor), and has all devices in the workcell plugged into it. People connect to it using their personal computer over ssh, or use vscode (or god forbid c*rsor) over ssh. Some pis run a jupyter notebook service using systemd.
What I like:
- every workcell has a dedicated computer, which is convenient for long-running tasks. your laptop is not responsible for running 24/7 while attached to a machine
- a single computer means doing installations / assigning com ports once
- rpis are a cheap ($60 + $5 for microsd) way to achieve this, but you might use bigger computers if desired of course
- everyone at the co can connect to it using
workcellX.local
. - linux: sane file system, real terminal, cron, systemd. it’s a good developer experience.
- we haven’t done this yet, but it will be trivial to create simple websites exposed on the host that non-programmers use to use the workcell
Limitations are:
- some machines don’t have a linux-compatible driver (all backends in PLR are compatible)
- one situation we have at Retro now is using an rpi for a workcell, and running a server on a windows computer to control the one remaining device through the dll. it’s a bit hacky, but it means minimal windows exposure. The backend is written in such a way that we can easily switch it out for a firmware-level backend when ready.
- raspberry pis are slower than your laptop
- which matters for typechecking during dev,
- or doing heavy compute (can use aws for this)
networking can be difficult in some environments. In the Esvelt lab, we set up our own router (not connected to the main university network) that our devices connect to. It is entirely possible one router got registered as a computer and was able to connect to the main network. One can also use an ethernet switch with self assigned ips.
There is a doc on how to set up plr on rpis: Setting up PLR on a Raspberry Pi — PyLabRobot documentation