This repository deploys OpenPnP software automatically on an aarch64
compatible hardware, currently targetting rpi3, rpi4 and Jetson Nano SBCs.
So, how do I get this to work on my Raspberry Pi 4 or Jetson nano quick?
First, follow steps 1 to 4 on balena.io.. instead of balena-dash use this openpnp-kiosk repository (the one you are reading this README.md from).
When those steps are completed, deploy the openpnp-kiosk "app" using the Balena CLI tools.
The building is accomplished by bundling the dependencies and some library hacks (due to ongoing pending work upstream) on a docker container. The release engineering and deploy management is handled by Balena.
Balena (:whale: in Catalan) allows to deploy a "kiosk" version of OpenPnP. Think of Balena as a free (as in beer) alternative to AWS IoT Greengrass, Google Cloud IoT or Azure IoT, to name a few payware platforms.
Great! You want to add some tweaks to this project? To build locally before pushing to Balena cloud (or use it somewhere else):
docker buildx build --platform linux/arm64 . -f Dockerfile.raspberrypi3-64
Alternatively, you can just install the software on the RPi itself running the commands found in the Dockerfile itself, no cloud nor docker involved ;)
It works!
But as always there are some tweaks left to do:
- Make sure udev and USB docker container pass-through is stable for cameras and control board.
- Upgrade to upstream's OpenCV 4.x, taking advantage of system's Debian packages and removing the custom-compiled
libopencv_java342.so
. Report upstream on OpenPnP that JNErator and JNA/JNI need to be updated to at least 4.5.1, otherwiseobj/libjnidispatch.so
andLD_LIBRARY_PATH
hacks are needed for newer Linux distributions.- Investigate on upstream's OpenPnP migration to Java11 so that, potentially, we could run with GraalVM for
aarch64
... current performance is a bit worrying. Get PRs for openpnp-capture-java and openpnp-capture merged upstream.- Provision different machines, not just the LitePlacer.
- Provision properly populated
parts.xml
andpackages.xml
. Come up with a better provisioning mechanism than updating those two files periodically. - Find testers for the (untested yet) Jetson Nano Dockerfile.
- Make Java UI style more modern looking-like, the default awt look is horrible :P