CAMTRON PROCESSING PIPELINE
###########################
 A) setup / preparation
 B) recorder
 C) background-subtraction
 D) process scripts
 X) HPC
###########################
"tackle long-term complex projects from beginning to end"

B) recorder - camera produces frames and timestamps
###########################
	(depends on cam in A)!!!
	> use new api VimbaX
	> read manual (c++ / vimba)
============================
	> wait and detect cams
	> produce frames & timestamps
============================
	> new architecture: console app (later: gui app) + Core.
	CONSOLE APP:
		in extra thread to not block main thread!
		listen to user keys

	CORE APP
			functions / args:
			> out_dir:
				 parse dir arg and create it if it doesnt exist >> finish it / with proper user in/	output >> or cancel if it doesnt exist
				 	>> EASIER: + no userinput which could complicate GUI app later...
			> list cameras:
			> store/load cam settings
			> calibrate
			> record
			> stop recording
		> consider using app settings in a json-file / QSettings
			> cam mappings (IP/MAC/ID)
			> out_dir

	GUI APP:
		> build GUI
		> ... parse output for -LISTCAMERAS- and put into tablewidget

===============================
	> get pix, using
		- laptop - direct connection
		- laptop - local network
		- virtual machine
	> get video via vimbax-SDK
	> cam calibration (Use Viewer? Or own SW?)
	> configure cam settings
	* get video for 3 cams simultaneously
		> what SW?
		> calculate supported framerate+resolution+codec for hardware (CPU,RAM,HDD...)
			> or do tests and see if frames are dropped

	> central config
		> threads for started recordings [PID]
		> storage folder

	> export settings with viewer
	> load settings with sw
	> how and where to store frames?

A)
###########################
	> VM
	> light
		> 2*LEDs: 1*day + 1*night
		> find ecolux hw (Boxes, DMX per unit, DMX splitter/controller)
	> arenas
		> Acrylzylinder in 2 teile gesaegt.
	> floor
		> gips+color+lack..


C) background subtraction
###########################
	eval how much work to, update
		> opencv
		> bgs-algorithm

	ctb - calculates centroid points of all frames in a record
	> build
	> find test data (cp to 00 - ..)
	> process
	-----------
	> update bgs alg. opencv4 has its own bgs?


D) process scripts
###########################
 	ctd - calculated the mean speed in pixel / millisecond
	* can i reduce size of data (reduce length|fps|res)
	>> calc D) for test data set (get data from joerdis?)
	-> with all frames
	-> undersample, shorter length
	-> compare results. same?

	trajectory

	> figure out concrete steps. harmonize scripts? ..
		> trajr.
		> run calcVmeanForID.r on data
		> calc new values. max speed. angle. ...

X) HPC - High Performance Cluster
####################################
	> gamify > lvl up
	> try script to send over data
	> script that copies data once a day from VM to HPC
		> Secure-Shell-ID angepasst
		> cron
		or > II) vimba-software directly to HPC?


BACK-BURNER 2D
###############################
> Documentation
	> sketch
		> chamber: cam height+resolution+arena diameter for pixel to cm/mm ratio
		> lab: chambers+workstations+HPC

	> costs. update with what we actually buy!
	> sketch: technical: cam (QuantumEfficiency) + IRLED
	> sketch: setup plan for a chamber
	> copy last setup plan from thomas




Done
#######################
> start implementing new arch
	> console app. thread. signal-slot connections.
> backup old tibcamtrack VM
> get video in VV
> connect VM. ssh and rdp
> sort ct a bit:
	> folders, files, ... naming convention
	> README + Description
	> merge doc?
	> b) exclude SDK / examples from repo
> attach cam arm to wood (DONE)
> test run 1 cam to estimate hw requirements
	> test bottleneck (CPU,HDD,ethernet,)
	> storage: 10s hochrechnen
		> mit 25/17/10 FPS.
		> different compression types

> research suitable "fridges"
	-> price!, temp-range, electricity inside, size space in lab?
	-> more than 2
		Reach In Plant Growth Chambers E-36L1
		---------------------
	> setup stativ, use our lab
	> how-to connect ETHernet cable? it will have to go outside of fridge??
	> how-to control temperature and humidity? (see picture from thomas dox)
> research WS (see hardware_notes.ods for details like specs. CPU, RAM, SSDs, prices)
> cam aufhaengung
	research stativ/tripod: manfrotto arm + clamp + bodenplatte for cams
	other stuff to fix cameras > stange
> sensors for temp+humidity (HOBO)
> backup data from towers
> setup tower (displays,cards,cables)
-------------------------------
> bal: func: list_suffices
> bal: function to replace all names to snake_case (upper to lower, space/dash to underscore)
> opd: works with "name containing spaces.pdf" -> use array for files instead of string concatenation in o_helper()
> bug: changed IFS in o_helper broke nav function