Commit Graph

31 Commits

Author SHA1 Message Date
Peter Bochmann 28ff027950
Note what the thermal camera's SDK costs in CPU on tower 111
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:13:55 +02:00
Peter Bochmann 474e3cac8a
Fix what the thermal camera's first run on tower 111 showed
- The thermal frame was numbered camera 0 - label RGB, and the colour file of
  the same time overwritten - because Vimba counts no camera before open().
  The composite now takes each source's configured camera count, and two
  enabled cameras may no longer share a label.
- The SDK switches LC_NUMERIC to de_DE when loaded, which made "hotx":0,4336.
  Its calls now run under a guard that restores the locale, and the JSON's
  numbers no longer go through printf.
- The camera's frame counter is always 0: new frames are told by their time,
  so the stream no longer stops after the first one.
- The LUT is empty for the first frame: it is asked again on later ones.
- The SDK is libirbgrab_x86_64-linux.so in the ld cache.
- The null channel traces the CamEvent payload it would have sent.

Tested on tower 111 with the TarisIR mini, the motors mocked: cap_net_raw is
enough, RGB/TIR pairs with one timestamp, the TIR file decodes to the counts
its CamEvent describes, profile switches 0-1-0. 536/536 in the 22.04 container.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:01:33 +02:00
Peter Bochmann 3d90af8490
Take a thermal picture beside the colour one at every waypoint
A TarisIR mini (driver = taris) is a second camera source behind a
CompositeCameraSource: the colour camera is asked first, then the thermal one
for its newest frame, and both frames carry the colour frame's timestamp.
Counts are saved 16-bit lossless under TIR/, and the CamEvent gains cal,
missed, tmax, tmed, hotx and hoty (docs/mqtt-api.md). The SDK is declared in
IrbgrabApi.h and loaded with dlopen, so no SDK file is in the repository; a
missing or unreachable camera stays offline (Health cams_offline) while the
scan goes on. scripts/fgc-setcap gives the binary cap_net_raw after a build.

Built and tested in an Ubuntu 22.04 container (mock, MQTT, Vimba+MQTT,
534/534), plus a mock run with RGB/TIR pairs. Not yet run against the camera.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:37:25 +02:00
pgdalmeida 70a30132bf
Merge counting the picture interval from the last picture and waiting for a slow camera's next frame 2026-10-05 13:02:13 +02:00
pgdalmeida cfd8ba9978
Save raw 12-bit camera frames as 12-bit colour images, keep a waypoint's picture once the image has settled, and hold the scan when saving falls behind 2026-10-05 10:14:53 +02:00
pgdalmeida d5b037a241
Add camera and image-saving test results for towers 121 and 111, the test tools, and a plan for saving 12-bit images 2026-10-05 08:47:34 +02:00
pgdalmeida fb0f5117df
Count the picture interval from the last picture, and let a settle wait of 0 wait for the exposure to settle 2026-10-02 18:28:40 +02:00
pgdalmeida 895c2f22fd
Add a command to keep taking pictures where the gimbal points, drop unused camera commands, and fit the help on one page 2026-09-29 15:48:07 +02:00
pgdalmeida 79225bc3cd
Rework the dashboard keys: a/p/m for modes, n for connectivity, page keys to scroll, heading setup in the activity strip 2026-09-25 18:57:25 +02:00
pgdalmeida d8d2fee8af
Test the camera with forced dark and bright settings, and recover a camera that stops sending frames 2026-09-24 17:35:37 +02:00
pgdalmeida 5a0515ab13
Test that the camera delivers frames and follows its settings to black and white 2026-09-24 15:47:58 +02:00
pgdalmeida e8293f736d
Record that tower 111 comes back by itself after a reboot 2026-09-24 15:06:10 +02:00
pgdalmeida 6824a0d580
Migrate tower 111's host, and resume capture after a test instead of leaving it stopped 2026-09-24 09:01:05 +02:00
pgdalmeida b7c80794b4
Record the flash cost on the Delta board, and the reboot check on tower 121 2026-09-23 23:39:28 +02:00
pgdalmeida 7a7e7ab0a5
Record tower 111 has no hardware.ini; BOOTSEL and USB preconditions are solved 2026-09-23 16:49:37 +02:00
pgdalmeida 1a572cb074
Changed heading logic; added snapshot feature 2026-09-11 17:42:01 +02:00
pgdalmeida cd8491dcc0
removed Env MQTT topic 2026-09-09 13:43:29 +02:00
pgdalmeida 5fce32aee7
IMU readings fixed; IMU mounting is part of config.ini; device config verified at startup 2026-09-09 12:19:53 +02:00
pgdalmeida a5ad814260
Camera settings now come from VimbaX profile XMLs; explicit per-camera config 2026-09-04 14:12:05 +02:00
pgdalmeida f1342965de
Camera is now configured by per-mode files; quality gate removed 2026-08-26 15:52:47 +02:00
pgdalmeida 376e79536c
camera logic improved 2026-08-07 15:04:47 +02:00
pgdalmeida 48c9aa529d
refactor and bug fixes 2026-08-05 17:00:42 +02:00
pgdalmeida 271b076394
added temperature and humidity sensor (SHT41) 2026-08-05 09:13:16 +02:00
pgdalmeida c41cb6fc6a
Added camera control 2026-07-13 19:15:38 +02:00
pgdalmeida e721ac74c2
Fixed bug nudging befor calibration is run 2026-06-29 13:58:44 +02:00
pgdalmeida 9a25bbcc48
added gimbal calibration command, added TUI prompts 2026-06-29 06:27:36 +02:00
pgdalmeida 16f23f36bb
Refresh docs after the serial-protocol migration and hardware verification 2026-06-23 09:42:10 +02:00
pgdalmeida 14707c62ae
Migrate host to the current firmware serial protocol (counts/MOVE/ST) 2026-06-22 23:44:13 +02:00
pgdalmeida 00d3454bb6
Add LattePanda remote deploy workflow; fix MQTT build after move 2026-06-22 21:49:33 +02:00
pgdalmeida f1005f3e31
Add unit tests, deployment scripts, and refreshed docs 2026-06-22 13:07:03 +02:00
pgdalmeida 89be503edb
Initial commit 2026-06-22 11:23:01 +02:00