Skip to content

Latest commit

 

History

History
54 lines (36 loc) · 3.25 KB

README.md

File metadata and controls

54 lines (36 loc) · 3.25 KB

OpenPnP kiosk

This repository deploys OpenPnP software automatically on an aarch64 compatible hardware, currently targetting rpi3, rpi4 and Jetson Nano SBCs.

Quickstart

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.

How does this work?

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.

Developing

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

TODO

It works!

rpi3openpnp

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, otherwise obj/libjnidispatch.so and LD_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 and packages.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