planktoscope/docs/contribute/software_development.md
Sebastian Wendel 15fa729dc1
latest changes
2022-12-20 07:31:13 +01:00

2 KiB

How to help development for the PlanktoScope code

We are using the Github Flow approach for our development efforts.

If you want to join us, have a look at the currently opened issues and pick one where you feel like you can have an impact. Let us know you want to work it in the comments and get started.

For working on Node-Red, we recommend to install it directly on your development machine to allow for faster cycles of testing (and ease of use). But feel free to setup a Pi Zero as a portable and compact development environment! (One of us is using one configured as usb gadget to do so!)

If you don't know how to code, the documentation could use your help!

Node-Red

{ width="100" }

Node-Red is our main process. We use the flow to manage our user interface through a dashboard instance.

Python

{ width="200" }

The python code is separated in four main processes, each with a specific set of responsibilities:

  • The main process controls all the others, starts everything up and cleans up on shutdown
  • The stepper process manages the stepper movements.
  • The imager process controls the camera and the streaming server via a state machine.
  • The segmenter process manages the segmentation and its outputs.

Those processes all communicates together using MQTT and json messages. Each message is adressed to one topic. The high level topic controls which process receives the message. The details of each topic is at the end of this commit message. You can learn more about the MQTT Messages here.

The code is architectured around 6 modules and about 10 classes. I encourage you to have a look at the files, they're pretty straightforward to understand.