Commit Graph

151 Commits

Author SHA1 Message Date
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
Peter Bochmann a03da2d8f4
Merge slowing down, then pausing, the scan when the tower computer runs hot or cannot keep up
Built and tested in an Ubuntu 22.04 container (mock and Vimba+MQTT, 494/494)
and running on tower 111 since 2026-10-14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:30:21 +02:00
pgdalmeida e1f63108f2
Merge stopping the gimbal where it is when switching from a scan to manual 2026-10-09 14:26:21 +02:00
pgdalmeida 2737811e2e
Stop the gimbal where it is when switching from a scan to manual 2026-10-09 14:25:51 +02:00
pgdalmeida 6fa43f1e08
Slow down, then pause, the scan when the tower computer runs hot or cannot keep up 2026-10-08 17:21:58 +02:00
pgdalmeida f9b6cfe871
Merge deploying only the files git knows about 2026-10-07 15:42:53 +02:00
pgdalmeida ded1eb7464
Deploy only the files git knows about, so ignored folders no longer reach the tower 2026-10-07 15:42:34 +02:00
pgdalmeida cba8856c85
Merge setting a short exposure before the frame rate when exporting a camera profile 2026-10-07 14:54:06 +02:00
pgdalmeida 77d9093097
Merge the homing cancel, the per-tower config folder and the 12-bit report updates from dev 2026-10-07 14:54:06 +02:00
pgdalmeida 7609207e30
Set a short exposure before the frame rate when exporting a camera profile, so the camera allows its full frame rate 2026-10-07 14:52:03 +02:00
Peter Bochmann ae53f52131
Remove the Staeffelsberg scan grid from the repo
A tower's scan grid belongs to that tower, not to the repo: the copy here
had already drifted from the one Staeffelsberg actually uses.

Before the next deploy to Staeffelsberg, move its grid out of the project
folder (scripts/tower-config move) - deploy.sh syncs with --delete and
would otherwise remove the file its config.ini points at.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-07 14:44:57 +02:00
Peter Bochmann 4fb8507160
Remove the Staeffelsberg scan grid from the repo
A tower's scan grid belongs to that tower, not to the repo: the copy here
had already drifted from the one Staeffelsberg actually uses.

Before the next deploy to Staeffelsberg, move its grid out of the project
folder (scripts/tower-config move) - deploy.sh syncs with --delete and
would otherwise remove the file its config.ini points at.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-07 14:44:57 +02:00
pgdalmeida 1edca07293
Compare today's RGB8 file with the 12-bit file at the same quality setting in the 12-bit report 2026-10-07 14:09:33 +02:00
pgdalmeida a723646928
Compare 8-bit and 12-bit pictures on a dark forest scene from the Stäffelsberg tower in the 12-bit report 2026-10-07 12:25:04 +02:00
pgdalmeida 19c5873df6
Merge cancelling homing and shutting down cleanly when the program is stopped during homing 2026-10-06 19:49:15 +02:00
pgdalmeida 032355e8fb
Merge keeping each tower's config, scan grid and camera profiles out of a deploy's reach 2026-10-06 19:49:12 +02:00
pgdalmeida eb91f470dd
Cancel homing and shut down cleanly when the program is stopped during homing 2026-10-06 19:41:19 +02:00
pgdalmeida ce6ef3f79a
Keep each tower's config, scan grid and camera profiles in ~/.config/fire_gimbal_control, out of a deploy's reach 2026-10-05 22:02:49 +02:00
Peter Bochmann b153bdbb8a
Merge branch 'main' of git.ggs-solutions.eu:GGS/fwt_software 2026-10-05 13:44:10 +02:00
Peter Bochmann f056d69d15
using correct pattern for Staeffelsberg 2026-10-05 13:43:50 +02:00
pgdalmeida 9f02b70dae
List every module in the module reference, including the self-test, config-editing and remote-command ones 2026-10-05 13:12:09 +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 2e6609eb1d
Explain in the 12-bit report why the brightness rule picks the right picture, and add a background file for discussing the report with Claude 2026-10-05 12:25:05 +02:00
pgdalmeida 4e8413bda6
Explain in the 12-bit report where the extra bits make a real difference and where they do not 2026-10-05 12:05:33 +02:00
pgdalmeida 4abfd7cbb2
Explain the raw mosaic and planes layouts in the 12-bit report, and spell out every term in its figure and table captions 2026-10-05 11:39:31 +02:00
pgdalmeida 1fc87bf1ee
Rewrite the 12-bit camera test report as a numbered paper with an abstract, figure and table captions, and units 2026-10-05 11:28:52 +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 62131d8083
Wait for a slow camera's next frame instead of restarting the stream, and read integer camera features for the exposure check 2026-10-04 16:12:44 +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 4488a2181d
Set in config.ini whether the tower homes and which mode it starts in, instead of the --init and --start flags 2026-09-30 16:42:48 +02:00
pgdalmeida f2c61e030e
Let a yaw-only tower aim with gimbal move, and stop it publishing a made-up pitch 2026-09-29 19:50:39 +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 a21be0d4e8
Take the scan waypoints only from the CSV file, never generate them 2026-09-29 15:02:19 +02:00
pgdalmeida ab9fa3dbb0
Let a tower set its encoder scale, and send no speed after a failed homing 2026-09-28 18:21:37 +02:00
pgdalmeida 049c0c5f0e
Turn the camera's frame trigger off in both profiles, so a legacy tower's camera sends pictures 2026-09-28 17:45:32 +02:00
pgdalmeida dd1764dc99
Show the build's progress during an install, and drop the centre-count note where it does not apply 2026-09-28 17:34:15 +02:00
pgdalmeida 5bfc558435
Keep a log of every install, and stop the kit dying on a LattePanda-branded Leonardo 2026-09-28 17:20:38 +02:00
pgdalmeida 44f8d3b0dd
Say the homing step takes one picture and stays in manual 2026-09-28 16:51:48 +02:00
pgdalmeida 2d2b498ff2
Find a legacy tower's Leonardo and its old launcher, and refuse to install while the old program holds the port 2026-09-28 16:36:41 +02:00
pgdalmeida 4b73199e8e
Leave a newly installed tower in manual: home at boot, capture only after auto is chosen 2026-09-28 16:20:39 +02:00
pgdalmeida da9a9867ed
Add a one-file tower bootstrap and a legacy-tower survey, and use an SDK already installed 2026-09-28 16:14:26 +02:00
pgdalmeida 8d81e03a3f
Support the legacy towers' DHT11 and fan, and fix the installer's reflash and test steps 2026-09-28 14:43:05 +02:00
pgdalmeida 8cf3b3b9e9
Stop every axis on a bare 'gimbal stop' 2026-09-28 12:41:11 +02:00
pgdalmeida 93f47bd142
Send the motor settings before enabling the drivers at startup 2026-09-28 11:33:46 +02:00
pgdalmeida 740eb1bd00
Stop the program cleanly on a service stop, and leave the gimbal at rest before configuring its motors 2026-09-25 23:21:26 +02:00
pgdalmeida e41234f69c
Retake the plain-console screenshot with the mode commands 2026-09-25 19:27:08 +02:00
pgdalmeida 4ad6fb6646
Retake the README screenshots for the new dashboard keys and panel names 2026-09-25 19:23:28 +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