Sent with QoS 1, retained.
Will be sent every 10 seconds if we are online, and immediately whenever the reported
camera issue appears, changes kind or clears. The camera is checked on every frame. A
changed message of the same issue waits for the next regular heartbeat. Because it is
retained, subscribing at any time tells you the current state of the system without
waiting for the next round.
Also, on this topic we will publish the will message with status offline.
camera_status tells you whether the system can currently see the table, see
CameraStatus. Ignore it when status is offline: the will message is prepared when we
start up, so it does not carry a meaningful camera status.
issue
null while the camera is fine. When several issues hold, only the most severe is reported,
in the order of CameraIssueKind.
seconds_since_last_frame
Seconds since the last frame arrived from the camera. Around 0 in normal operation.
table_coverage
Which fraction of the camera image the table takes up, between 0 and 1.
table_scale
Camera pixels per pixel of the image we run the detection on. Below 1 means the camera is
too far away from the table to resolve it fully and we have to upscale.
table_coverage and table_scale are 0 when there is no frame or no calibrated camera
position.
kind
The machine readable issue, see CameraIssueKind.
message
The same issue as a sentence, meant to be shown to an operator. Unstable, don't parse it.
since
When this kind of issue appeared. It starts over when the issue clears and comes back, and
stays while only the message changes. Issues are reported as soon as they appear,
including short lived ones such as a camera that is gone for a second. Use since to alert
only on issues that persist.
The camera issues we report, most severe first. The table position is where the system
believes the table is in the camera image: the last one it found, or the calibrated one.
NO_FRAMES
Reported within about two seconds of the camera delivering no frames: unplugged, not
detected, or on a USB port too slow for it. Cleared with the first frame.
NOT_YET_CALIBRATED
Reported while the table has no calibration or no configured player positions, so there is
nothing to judge the camera against, and while an operator runs the calibration. Cleared
once the table is calibrated.
CAMERA_MOVED
Reported in any of three cases, and cleared as soon as none holds:
A camera allowed any movement that is moved is not an issue by itself: once the layout is
found three times in a row at its new place, the system uses and saves the new table
position.
LAYOUT_NOT_VISIBLE
Reported when the camera position is tracked automatically and the layout is not found:
The searches run between rounds, about every 5 s. A layout found in its place but partly
covered counts as found. Cleared by the next search that finds the layout. Never reported
with the automatic tracking turned off: the calibrated position is then what the system
runs on.