Judge the keep rule against the camera's own target, and aim Mantas at 35 %
configureSettle() read the camera's auto-exposure target, tolerance and limits before the camera was opened, so it got none of them and judged every frame against its 50 +- 5 % default until the first profile switch - on every tower. It now runs again once the camera is open. On the Alviums this brings their own IntensityControllerTolerance and, at night, the at-limit verdict from their chunk data into play. The gige recipe aims at 35 % instead of 50: at 50 the sky over the horizon burnt out at noon on rietschen, where smoke would rise. The old program ran these cameras at 23-25. Tests 542/542 (mock). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c62d8270b3
commit
7332c47d6d
|
|
@ -734,11 +734,12 @@ itself when a camera has `ExposureTimeAbs` and no `ExposureTime`: frame trigger
|
||||||
off (the legacy cameras booted with `TriggerMode = On`, `Line1`), `BayerRG8` on
|
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 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
|
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
|
auto-exposure on the frame mean (`ExposureAutoAlg = Mean`) at 35 % +- 5 %, down
|
||||||
to 20 us by day. That last one matters: the keep rule waits for the frame mean
|
to 20 us by day. The keep rule waits for the frame mean to reach the camera's
|
||||||
to reach 50 % +- 5 %. At the cameras' old target of 25 every waypoint ran into
|
own target and tolerance, read once the camera is open. With the RGB camera's
|
||||||
`frame_timeout_ms`, and so it did with the RGB camera's `FitRange` and 10 %
|
`FitRange`, which fits the histogram wherever its mean lands, no waypoint
|
||||||
tolerance, which fit the histogram wherever its mean lands.
|
settled. 35 rather than the Alvium's 50: at 50 the sky over the horizon burnt
|
||||||
|
out at noon, where smoke would rise; the old program ran these cameras at 23-25.
|
||||||
|
|
||||||
Give `--camera` the id: with several cameras the first one the SDK lists is
|
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
|
not the colour one, and the order changes from run to run. `install.sh
|
||||||
|
|
|
||||||
|
|
@ -151,15 +151,15 @@ _GIGE_COMMON = [
|
||||||
("ExposureTimeAbs", 1000.0),
|
("ExposureTimeAbs", 1000.0),
|
||||||
("AcquisitionFrameRateAbs", 1000.0), # clamped to the camera's maximum
|
("AcquisitionFrameRateAbs", 1000.0), # clamped to the camera's maximum
|
||||||
("ChunkModeActive", False),
|
("ChunkModeActive", False),
|
||||||
# The keep rule waits for the frame mean to reach the camera's target. The
|
# The keep rule waits for the frame mean to reach the camera's target, +- its
|
||||||
# host starts on its default band of 50 % - rietschen's cameras were set to
|
# tolerance, which it reads from the camera. The camera has to aim at the
|
||||||
# 25, and every waypoint then ran into frame_timeout_ms (7.5 s, 2026-10-20).
|
# mean: the RGB camera came with FitRange (which fits the histogram, wherever
|
||||||
# The camera has to aim at the mean, and stop adjusting only inside the same
|
# the mean lands) and no waypoint settled (2026-10-21). 35 % rather than the
|
||||||
# +-5 %: the RGB camera came with FitRange (which fits the histogram, wherever
|
# Alvium's 50: at 50 the sky over the horizon burnt out at noon, where smoke
|
||||||
# the mean lands) and a 10 % tolerance, and no waypoint settled (2026-10-21).
|
# would rise; the old program ran these cameras at 23-25.
|
||||||
("ExposureAutoAlg", "Mean"),
|
("ExposureAutoAlg", "Mean"),
|
||||||
("ExposureAutoAdjustTol", 5),
|
("ExposureAutoAdjustTol", 5),
|
||||||
("ExposureAutoTarget", 50),
|
("ExposureAutoTarget", 35),
|
||||||
("ExposureAuto", "Continuous"),
|
("ExposureAuto", "Continuous"),
|
||||||
("GainAuto", "Continuous"),
|
("GainAuto", "Continuous"),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -3627,6 +3627,12 @@ struct Application::Impl {
|
||||||
return 3; // distinct from the config (1) and lock (2) exits
|
return 3; // distinct from the config (1) and lock (2) exits
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Again, now the camera is open: the keep rule reads the camera's own
|
||||||
|
// auto-exposure target, tolerance and limits, and before open() it got
|
||||||
|
// none of them and judged every frame against its 50 +- 5 % default -
|
||||||
|
// until the first profile switch. Rietschen's cameras aim at 35 %.
|
||||||
|
configureSettle();
|
||||||
|
|
||||||
pipeline->start();
|
pipeline->start();
|
||||||
channel->publishStatus(static_cast<int>(Mode::Manual)); // until [Startup] mode says otherwise
|
channel->publishStatus(static_cast<int>(Mode::Manual)); // until [Startup] mode says otherwise
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue