fwt_software/config/camera_profiles/rgb
pgdalmeida a5ad814260
Camera settings now come from VimbaX profile XMLs; explicit per-camera config
2026-09-04 14:12:05 +02:00
..
README.md Camera settings now come from VimbaX profile XMLs; explicit per-camera config 2026-09-04 14:12:05 +02:00

README.md

RGB camera profiles

A profile is a settings XML exported from the VimbaX Viewer. A profile named X is X.xml in this directory, and [Camera.rgb] profile = X in config.ini selects it.

The program hands the XML straight to the Vimba X SDK (LoadSettings). Nothing else writes camera settings, and there is no fallback — a missing X.xml is a startup error. That is deliberate: GenICam validity is stateful (AcquisitionFrameRate is only writable once AcquisitionFrameRateEnable is set, Width's maximum depends on binning, IntensityAutoPrecedence takes Minimizenoise but not MinimizeNoise), so a hand-written list can be individually plausible and collectively wrong. The Viewer greys out invalid combinations as you configure; that is the guardrail this design relies on.

These files live on the device only

The XMLs are exported on the LattePanda, because that is where the camera is, so they exist nowhere in the repo. deploy.sh therefore excludes *.xml and *.txt under this directory from its rsync --delete — without that, the next deploy erases them. This README does sync; it is repo documentation.

Keep a copy somewhere durable if a profile represents real tuning effort: a reflash or a rebuilt device starts with an empty directory.

To create or change a profile

  1. Open the VimbaX Viewer and connect to the camera.
  2. Configure it. The Viewer will not let you pick an invalid combination.
  3. Save the settings XML over <profile>.xml here.
  4. Restart. The program notices the file changed, regenerates <profile>.txt, and logs every setting that moved.

The .txt files

Beside each X.xml the program writes X.txt: a generated, human-readable record of the same settings, so a profile can be read and diffed without opening the Viewer. It configures nothing. Editing it changes nothing; it is overwritten whenever the XML changes.

Profiles this rig expects

config.ini ships referencing standard and night. They were previously hand-written; these are the values they used, as a starting point when recreating them in the Viewer. Everything not listed was identical.

Setting standard night
AcquisitionFrameRate 10 1
SensorBitDepth Bpp8 Bpp12
ExposureAutoMin 200 1000
ExposureAutoMax 20000 500000
GainAutoMax 24 48
IntensityAutoPrecedence Minimizeexposuretime Minimizenoise
DeviceIndicatorMode Active Off
DeviceIndicatorLuminance 10 0

Both used 2×2 binning at RGB8 (2256×2256, 15.3 MB/frame) and a 250 MB/s DeviceLinkThroughputLimit. That binning is not optional at 10 Hz: a full-resolution RGB8 frame is 61 MB, which caps out near 4 fps under that limit.

The full previous definitions are in git history at config/camera_modes/rgb/{standard,night}.ini.

settle_wait_ms / frame_timeout_ms are not camera settings and are not in the XML — they live in config.ini under [Camera.rgb.<profile>].