diff --git a/docs/tower-installation.md b/docs/tower-installation.md index 208182a..edfff4d 100644 --- a/docs/tower-installation.md +++ b/docs/tower-installation.md @@ -733,10 +733,12 @@ and the telemetry work. `export_camera_profile.py` picks its `gige` recipe by itself when a camera has `ExposureTimeAbs` and no `ExposureTime`: frame trigger off (the legacy cameras booted with `TriggerMode = On`, `Line1`), `BayerRG8` on the colour camera and `Mono8` on a mono one, 60 MB/s each, the frame rate at -the camera's maximum (rietschen's RGB camera came set to 0.955 fps), and an -auto-exposure target of 50 %. That last one matters: the keep rule waits for the frame mean -to reach 50 %, and at the cameras' old 25 every waypoint ran into -`frame_timeout_ms`. +the camera's maximum (rietschen's RGB camera came set to 0.955 fps), and +auto-exposure on the frame mean (`ExposureAutoAlg = Mean`) at 50 % +- 5 %, down +to 20 us by day. That last one matters: the keep rule waits for the frame mean +to reach 50 % +- 5 %. At the cameras' old target of 25 every waypoint ran into +`frame_timeout_ms`, and so it did with the RGB camera's `FitRange` and 10 % +tolerance, which fit the histogram wherever its mean lands. Give `--camera` the id: with several cameras the first one the SDK lists is not the colour one, and the order changes from run to run. `install.sh diff --git a/scripts/export_camera_profile.py b/scripts/export_camera_profile.py index 58a8d9e..2b972b4 100755 --- a/scripts/export_camera_profile.py +++ b/scripts/export_camera_profile.py @@ -154,6 +154,11 @@ _GIGE_COMMON = [ # The keep rule waits for the frame mean to reach the camera's target. The # host starts on its default band of 50 % - rietschen's cameras were set to # 25, and every waypoint then ran into frame_timeout_ms (7.5 s, 2026-10-20). + # The camera has to aim at the mean, and stop adjusting only inside the same + # +-5 %: the RGB camera came with FitRange (which fits the histogram, wherever + # the mean lands) and a 10 % tolerance, and no waypoint settled (2026-10-21). + ("ExposureAutoAlg", "Mean"), + ("ExposureAutoAdjustTol", 5), ("ExposureAutoTarget", 50), ("ExposureAuto", "Continuous"), ("GainAuto", "Continuous"), @@ -162,7 +167,10 @@ _GIGE_COMMON = [ GIGE_RECIPES = { "standard": _GIGE_COMMON + [ ("ExposureAutoMax", 20000), - ("ExposureAutoMin", 200), + # Rietschen's RGB camera sat at 200-600 us at noon: a floor of 200 left it + # no room to darken a bright view, and without chunk data the host cannot + # tell a camera at its limit from one still settling. The Manta goes to 16. + ("ExposureAutoMin", 20), ("GainAutoMax", 24.0), ], "night": _GIGE_COMMON + [