Valkyrie 2026
Loading...
Searching...
No Matches
valor::cameras::Limelight Class Reference
Inheritance diagram for valor::cameras::Limelight:
valor::Loggable

Classes

struct  TargetMetrics
 Targeting metrics of the Limelight. More...
struct  CornerCoordinates
 Structure representing coordinates of a target. More...
struct  IMUData
 IMU data of the Limelight. More...
struct  RawTarget
 Raw target result of the Limelight. More...
struct  RawFiducial
 Raw fiducial result of the Limelight. More...
struct  RawDetection
 Raw detection result of the Limelight. More...
struct  PoseEstimate
 Pose Estimate of the Limelight. More...

Public Types

enum class  Model {
  One , Two , TwoPlus , Three ,
  ThreeA , ThreeG , Four
}
 Model of the physical Limelight. More...
enum class  IMUMode {
  ExternalOnly = 0 , ExternalSeed = 1 , InternalOnly = 2 , InternalMT1Assist = 3 ,
  InternalExternalAssist = 4
}
enum class  LEDMode {
  PipelineControl = 0 , ForceOff = 1 , ForceBlink = 2 , ForceOn = 3 ,
  ForceOnLeft = 4 , ForceOnRight = 5 , BounceHalves = 6 , ForceBlinkLeft = 7 ,
  ForceBlinkRight = 8
}
 LED mode of the Limelight. More...
enum class  StreamMode { Standard = 0 , PiPMain = 1 , PiPSecondary = 2 }
 Limelight streaming mode. More...

Public Member Functions

 Limelight (std::string_view name)
bool GetTV () const
units::degree_t GetTX () const
units::degree_t GetTY () const
units::degree_t GetTXNC () const
units::degree_t GetTYNC () const
double GetTA () const
TargetMetrics GetTargetMetrics () const
int GetTargetCount () const
int GetClassifierClassIndex () const
int GetDetectorClassIndex () const
std::string GetClassifierClass () const
std::string GetDetectorClass () const
units::millisecond_t GetLatencyPipeline () const
units::millisecond_t GetLatencyCapture () const
int GetCurrentPipelineIndex () const
std::string GetCurrentPipelineType () const
std::string GetJSONDump () const
frc::Pose3d GetBotPose () const
frc::Pose3d GetBotPoseWpiRed () const
frc::Pose3d GetBotPoseWpiBlue () const
frc::Pose3d GetBotPoseTargetSpace () const
frc::Pose3d GetCameraPoseTargetSpace () const
frc::Pose3d GetCameraPoseRobotSpace () const
frc::Pose3d GetTargetPoseCameraSpace () const
frc::Pose3d GetTargetPoseRobotSpace () const
frc::Color GetTargetColor () const
std::optional< int > GetFiducialID () const
std::string GetNeuralClassID () const
std::vector< std::string > GetRawBarcodeData () const
int GetHeartbeat () const
std::vector< CornerCoordinatesGetCornerCoordinates () const
void SetPipelineIndex (int index)
void SetPriorityTagID (int ID)
void SetLEDMode (LEDMode mode)
void SetStreamMode (StreamMode mode)
void SetCropWindow (double xMin, double xMax, double yMin, double yMax)
void SetRobotOrientation (units::degree_t yaw, units::degrees_per_second_t yawRate, units::degree_t pitch, units::degrees_per_second_t pitchRate, units::degree_t roll, units::degrees_per_second_t rollRate, bool flush=true)
void SetKeystone (double horizontal, double vertical)
void SetIMUMode (IMUMode mode)
void SetIMUAssistAlpha (double alpha)
void SetThrottle (int throttle)
void SetFiducial3DOffset (const frc::Translation3d &offset)
void SetFiducialIDFiltersOverride (std::vector< int > validIDs)
void SetFiducialDownscalingOverride (float downscale)
void SetCameraPoseRobotSpace (const frc::Pose3d &pose)
void SetPythonScriptData (const std::vector< double > &outgoingData)
std::vector< double > GetPythonScriptData () const
void TriggerSnapshot ()
void SetRewindEnabled (bool enabled)
void TriggerRewindCapture (units::second_t duration)
PoseEstimate GetBotPoseEstimateWpiBlue (bool mt2) const
PoseEstimate GetBotPoseEstimateWpiRed (bool mt2) const
std::vector< RawFiducialGetRawFiducials () const
std::vector< RawDetectionGetRawDetections () const
std::vector< RawTargetGetRawTargets () const
IMUData GetIMUData () const
void SetupPortForwarding ()
LimelightHelpers::LimelightResultsClass GetLatestResults (bool profile=false) const
void LoggablePeriodic () override
 Periodic callback for logging updates.
Public Member Functions inherited from valor::Loggable
 Loggable (std::string_view name)
 Construct a Loggable that registers a top-level table name.
 Loggable (std::shared_ptr< nt::NetworkTable > table)
 Construct a Loggable that uses an existing NetworkTable.
 Loggable ()
 Default construct an uninitialized Loggable.
void LogChild (std::string_view name, Loggable *child)
 Register a child Loggable under a named subtree.
void LogChild (std::string_view name, wpi::Sendable *child)
 Register a child Sendable under a named subtree.
void SetPeriodicLevel (LogLevel level)
 Set the logging level for LoggablePeriodic.
template<typename T>
WriteLog (std::string_view field, const T &data, LogLevel level=LogLevel::Normal)
 Publish a value to NetworkTables under the given field.
template<typename T>
ReadLog (std::string_view field, const T &defaultValue={})
 Read a value from NetworkTables for the given field.
template<>
decltype(Loggable::subscribers) ::iterator addSubscriber (std::string_view field, const std::vector< bool > &defaultValue)
template<>
void WriteLogImpl (nt::Publisher *pub, const std::vector< bool > &data)
template<>
std::vector< bool > ReadLogImpl (nt::Subscriber *sub)

Static Public Member Functions

static void SetupPortForwardingUSB (int usbIndex)
static constexpr std::pair< units::degree_t, units::degree_t > GetFOV (Model model)
Static Public Member Functions inherited from valor::Loggable
static units::millisecond_t GetLoggingTime ()
static constexpr LoggableGetRoot ()

Additional Inherited Members

Protected Member Functions inherited from valor::Loggable
virtual void OnLoggingStart ()
 Hook invoked when logging is started for this object.

Member Enumeration Documentation

◆ IMUMode

IMU mode of the Limelight

This is typically used to determine the strategy for determining the rotation for MT2

Enumerator
ExternalOnly 

Use the external IMU (robot yaw) only.

ExternalSeed 

Use the external IMU (robot yaw) and seed the internal IMU.

InternalOnly 

Use the internal IMU only.

InternalMT1Assist 

Use the internal IMU with MT1 assisted convergence.

InternalExternalAssist 

Use the internal IMU with external IMU assisted convergence.

◆ LEDMode

LED mode of the Limelight.

Enumerator
PipelineControl 

Use the LED mode set in the current pipeline.

ForceOff 

Force off the LEDs.

ForceBlink 

Force blink the LEDs.

ForceOn 

Force on the LEDs.

ForceOnLeft 

Force on (left LEDs only).

ForceOnRight 

Force on (right LEDs only).

BounceHalves 

Bounce the halves of the LEDs.

ForceBlinkLeft 

Force blink (left LEDs only).

ForceBlinkRight 

Force blink (right LEDs only).

◆ Model

Model of the physical Limelight.

Enumerator
One 

Limelight 1.

Two 

Limelight 2.

TwoPlus 

Limelight 2+.

Three 

Limelight 3.

ThreeA 

Limelight 3A.

ThreeG 

Limelight 3G.

Four 

Limelight 4.

◆ StreamMode

Limelight streaming mode.

Enumerator
Standard 

Side-by-side streams if a webcam is attached to the Limelight.

PiPMain 

The secondary camera stream is placed in the lower-right corner of the primary camera stream.

PiPSecondary 

The primary camera stream is placed in the lower-right corner of the secondary camera stream.

Constructor & Destructor Documentation

◆ Limelight()

valor::cameras::Limelight::Limelight ( std::string_view name)
inlineexplicit

Initialize a Limelight camera

Parameters
nameName of the Limelight camera

Member Function Documentation

◆ GetBotPose()

frc::Pose3d valor::cameras::Limelight::GetBotPose ( ) const
inline

Gets the robot's 3D pose in field-space.

Returns
Pose3d object representing the robot's position and orientation

◆ GetBotPoseEstimateWpiBlue()

PoseEstimate valor::cameras::Limelight::GetBotPoseEstimateWpiBlue ( bool mt2) const

Gets the robot pose estimate in WPILib Blue Alliance field-space. This is the recommended method for getting robot pose for vision-based localization.

Parameters
mt2Whether the estimate should be Megatag2 or Megatag1
Returns
PoseEstimate containing pose, timestamp, and tag information
See also
PoseEstimate

◆ GetBotPoseEstimateWpiRed()

PoseEstimate valor::cameras::Limelight::GetBotPoseEstimateWpiRed ( bool mt2) const

Gets the robot pose estimate in WPILib Red Alliance field-space.

Parameters
mt2Whether the estimate should be Megatag2 or Megatag1
Returns
PoseEstimate containing pose, timestamp, and tag information
See also
PoseEstimate

◆ GetBotPoseTargetSpace()

frc::Pose3d valor::cameras::Limelight::GetBotPoseTargetSpace ( ) const
inline

Gets the robot's 3D pose with respect to the currently tracked target's coordinate system.

Returns
Pose3d object representing the robot's position and orientation relative to the target

◆ GetBotPoseWpiBlue()

frc::Pose3d valor::cameras::Limelight::GetBotPoseWpiBlue ( ) const
inline

(Recommended) Gets the robot's 3D pose in the WPILib Blue Alliance Coordinate System.

Returns
Pose3d object representing the robot's position and orientation in Blue Alliance field space

◆ GetBotPoseWpiRed()

frc::Pose3d valor::cameras::Limelight::GetBotPoseWpiRed ( ) const
inline

(Not Recommended) Gets the robot's 3D pose in the WPILib Red Alliance Coordinate System.

Returns
Pose3d object representing the robot's position and orientation in Red Alliance field space

◆ GetCameraPoseRobotSpace()

frc::Pose3d valor::cameras::Limelight::GetCameraPoseRobotSpace ( ) const
inline

Gets the camera's 3D pose with respect to the robot's coordinate system.

Returns
Pose3d object representing the camera's position and orientation relative to the robot

◆ GetCameraPoseTargetSpace()

frc::Pose3d valor::cameras::Limelight::GetCameraPoseTargetSpace ( ) const
inline

Gets the camera's 3D pose with respect to the currently tracked target's coordinate system.

Returns
Pose3d object representing the camera's position and orientation relative to the target

◆ GetClassifierClass()

std::string valor::cameras::Limelight::GetClassifierClass ( ) const
inline

Gets the current neural classifier result class name.

Returns
Class name string from classifier pipeline

◆ GetClassifierClassIndex()

int valor::cameras::Limelight::GetClassifierClassIndex ( ) const
inline

Gets the classifier class index from the currently running neural classifier pipeline

Returns
Class index from classifier pipeline

◆ GetCornerCoordinates()

std::vector< CornerCoordinates > valor::cameras::Limelight::GetCornerCoordinates ( ) const

Gets the corner coordinates of detected targets from NetworkTables. Requires "send contours" to be enabled in the Limelight Output tab.

Returns
Array of corner coordinates
See also
CornerCoordinates

◆ GetCurrentPipelineIndex()

int valor::cameras::Limelight::GetCurrentPipelineIndex ( ) const
inline

Gets the active pipeline index.

Returns
Current pipeline index (0-9)

◆ GetCurrentPipelineType()

std::string valor::cameras::Limelight::GetCurrentPipelineType ( ) const
inline

Gets the current pipeline type.

Returns
Pipeline type string (e.g. "retro", "apriltag", etc)

◆ GetDetectorClass()

std::string valor::cameras::Limelight::GetDetectorClass ( ) const
inline

Gets the primary neural detector result class name.

Returns
Class name string from detector pipeline

◆ GetDetectorClassIndex()

int valor::cameras::Limelight::GetDetectorClassIndex ( ) const
inline

Gets the detector class index from the primary result of the currently running neural detector pipeline.

Returns
Class index from detector pipeline

◆ GetFiducialID()

std::optional< int > valor::cameras::Limelight::GetFiducialID ( ) const

Gets the ID of the primary AprilTag in view.

Returns
Fiducial/AprilTag ID, or std::nullopt if none detected

◆ GetFOV()

constexpr std::pair< units::degree_t, units::degree_t > valor::cameras::Limelight::GetFOV ( Model model)
inlinestaticconstexpr

Utility function to get the FOV of the Limelight given its physical model

Parameters
modelPhysical model of the Limelight
Returns
Returns the FOV of the camera as a pair of (X FOV, Y FOV)
See also
Model

◆ GetHeartbeat()

int valor::cameras::Limelight::GetHeartbeat ( ) const
inline

Gets the Limelight heartbeat value. Increments once per frame, allowing you to detect if the Limelight is connected and alive.

Returns
Heartbeat value that increments each frame

◆ GetIMUData()

IMUData valor::cameras::Limelight::GetIMUData ( ) const
inline

Gets the current IMU data from NetworkTables. IMU data is formatted as [robotYaw, Roll, Pitch, Yaw, gyroX, gyroY, gyroZ, accelX, accelY, accelZ]. Returns all zeros if data is invalid or unavailable.

Returns
IMUData object containing all current IMU data
See also
IMUData

◆ GetJSONDump()

std::string valor::cameras::Limelight::GetJSONDump ( ) const
inline

Gets the full JSON results dump.

Returns
JSON string containing all current results

◆ GetLatencyCapture()

units::millisecond_t valor::cameras::Limelight::GetLatencyCapture ( ) const
inline

Gets the capture latency.

Returns
Capture latency in milliseconds

◆ GetLatencyPipeline()

units::millisecond_t valor::cameras::Limelight::GetLatencyPipeline ( ) const
inline

Gets the pipeline's processing latency contribution.

Returns
Pipeline latency in milliseconds

◆ GetLatestResults()

LimelightHelpers::LimelightResultsClass valor::cameras::Limelight::GetLatestResults ( bool profile = false) const

Gets the latest JSON results and parses them into a LimelightResultsClass object. This provides access to all targeting data including neural network results, AprilTag detections, retroreflective targets, and barcodes.

Parameters
profileIf true, prints JSON parsing time to stdout
Returns
LimelightHelpers#LimelightResultsClass containing all parsed results

◆ GetNeuralClassID()

std::string valor::cameras::Limelight::GetNeuralClassID ( ) const
inline

Gets the neural network class name for the primary detected object.

Returns
Class name string from neural network pipeline

◆ GetPythonScriptData()

std::vector< double > valor::cameras::Limelight::GetPythonScriptData ( ) const
inline

Gets data from a Python SnapScript running on the Limelight.

Returns
Vector of doubles from the Python script

◆ GetRawBarcodeData()

std::vector< std::string > valor::cameras::Limelight::GetRawBarcodeData ( ) const
inline

Gets raw barcode data from the barcode scanner pipeline.

Returns
Vector of decoded barcode strings

◆ GetRawDetections()

std::vector< RawDetection > valor::cameras::Limelight::GetRawDetections ( ) const

Gets the latest raw neural detector results from NetworkTables

Returns
Vector of RawDetection objects containing detection details
See also
RawDetection

◆ GetRawFiducials()

std::vector< RawFiducial > valor::cameras::Limelight::GetRawFiducials ( ) const

Gets the latest raw fiducial/AprilTag detection results from NetworkTables.

Returns
Vector of RawFiducial objects containing detection details
See also
RawFiducial

◆ GetRawTargets()

std::vector< RawTarget > valor::cameras::Limelight::GetRawTargets ( ) const

Gets the raw target contours from NetworkTables. Returns ungrouped contours in normalized screen space (-1 to 1).

Returns
Vector of RawTarget objects containing up to 3 contours
See also
RawTarget

◆ GetTA()

double valor::cameras::Limelight::GetTA ( ) const
inline

Gets the target area as a percentage of the image (0-100%).

Returns
Target area percentage (0-100)

◆ GetTargetColor()

frc::Color valor::cameras::Limelight::GetTargetColor ( ) const

Gets the target color as RGB values.

Returns
Color of the target

◆ GetTargetCount()

int valor::cameras::Limelight::GetTargetCount ( ) const
inline

Gets the number of targets currently detected.

Returns
Number of detected targets

◆ GetTargetMetrics()

TargetMetrics valor::cameras::Limelight::GetTargetMetrics ( ) const

T2D contains several targeting metrics

Returns
Targeting metrics
See also
TargetMetrics

◆ GetTargetPoseCameraSpace()

frc::Pose3d valor::cameras::Limelight::GetTargetPoseCameraSpace ( ) const
inline

Gets the target's 3D pose with respect to the camera's coordinate system.

Returns
Pose3d object representing the target's position and orientation relative to the camera

◆ GetTargetPoseRobotSpace()

frc::Pose3d valor::cameras::Limelight::GetTargetPoseRobotSpace ( ) const
inline

Gets the target's 3D pose with respect to the robot's coordinate system.

Returns
Pose3d object representing the target's position and orientation relative to the robot

◆ GetTV()

bool valor::cameras::Limelight::GetTV ( ) const
inline

Does the Limelight have a valid target?

Returns
True if a valid target is present, false otherwise

◆ GetTX()

units::degree_t valor::cameras::Limelight::GetTX ( ) const
inline

Gets the horizontal offset from the crosshair to the target in degrees.

Returns
Horizontal offset angle in degrees

◆ GetTXNC()

units::degree_t valor::cameras::Limelight::GetTXNC ( ) const
inline

Gets the horizontal offset from the principal pixel/point to the target in degrees. This is the most accurate 2d metric if you are using a calibrated camera and you don't need adjustable crosshair functionality.

Returns
Horizontal offset angle in degrees

◆ GetTY()

units::degree_t valor::cameras::Limelight::GetTY ( ) const
inline

Gets the vertical offset from the crosshair to the target in degrees.

Returns
Vertical offset angle in degrees

◆ GetTYNC()

units::degree_t valor::cameras::Limelight::GetTYNC ( ) const
inline

Gets the vertical offset from the principal pixel/point to the target in degrees. This is the most accurate 2d metric if you are using a calibrated camera and you don't need adjustable crosshair functionality.

Returns
Vertical offset angle in degrees

◆ LoggablePeriodic()

void valor::cameras::Limelight::LoggablePeriodic ( )
overridevirtual

Periodic callback for logging updates.

If a derived class needs to perform periodic updates to published values, override this method. It is intended to be called by the logging framework; this base class provides an empty implementation.

Reimplemented from valor::Loggable.

◆ SetCameraPoseRobotSpace()

void valor::cameras::Limelight::SetCameraPoseRobotSpace ( const frc::Pose3d & pose)

Sets the camera pose relative to the robot. The UI camera pose must be set to zeros for this to take effect.

Parameters
posePose of the camera relative to the robot

◆ SetCropWindow()

void valor::cameras::Limelight::SetCropWindow ( double xMin,
double xMax,
double yMin,
double yMax )

Sets the crop window for the camera. The crop window in the UI must be completely open.

Parameters
xMinMinimum X value (-1 to 1)
xMaxMaximum X value (-1 to 1)
yMinMinimum Y value (-1 to 1)
yMaxMaximum Y value (-1 to 1)

◆ SetFiducial3DOffset()

void valor::cameras::Limelight::SetFiducial3DOffset ( const frc::Translation3d & offset)

Sets the 3D point-of-interest offset for the current fiducial pipeline. https://docs.limelightvision.io/docs/docs-limelight/pipeline-apriltag/apriltag-3d#point-of-interest-tracking

Parameters
xX offset in meters
yY offset in meters
zZ offset in meters

◆ SetFiducialDownscalingOverride()

void valor::cameras::Limelight::SetFiducialDownscalingOverride ( float downscale)
inline

Sets the downscaling factor for AprilTag detection. Increasing downscale can improve performance at the cost of potentially reduced detection range.

Parameters
downscaleDownscale factor. Valid values: 1.0 (no downscale), 1.5, 2.0, 3.0, 4.0. Set to 0 for pipeline control.

◆ SetFiducialIDFiltersOverride()

void valor::cameras::Limelight::SetFiducialIDFiltersOverride ( std::vector< int > validIDs)
inline

Overrides the valid AprilTag IDs for the current pipeline. Only tags with IDs in this list will be used for localization.

Parameters
validIDsVector of valid AprilTag IDs to track

◆ SetIMUAssistAlpha()

void valor::cameras::Limelight::SetIMUAssistAlpha ( double alpha)
inline

Configures the complementary filter alpha value for IMU Assist Modes (Modes 3 and 4)

Parameters
alphaDefaults to .001. Higher values will cause the internal IMU to converge onto the assist source more rapidly.

◆ SetIMUMode()

void valor::cameras::Limelight::SetIMUMode ( IMUMode mode)
inline

Configures the IMU mode for MegaTag2 Localization

Parameters
modeIMU mode.
See also
IMUMode

◆ SetKeystone()

void valor::cameras::Limelight::SetKeystone ( double horizontal,
double vertical )
inline

Sets the keystone modification for the crop window.

Parameters
horizontalHorizontal keystone value (-0.95 to 0.95)
verticalVertical keystone value (-0.95 to 0.95)

◆ SetLEDMode()

void valor::cameras::Limelight::SetLEDMode ( LEDMode mode)

Sets the LED mode of the Limelight

See also
LEDMode

◆ SetPipelineIndex()

void valor::cameras::Limelight::SetPipelineIndex ( int index)
inline

Sets the active pipeline index on the Limelight.

Parameters
indexPipeline index (0-9)

◆ SetPriorityTagID()

void valor::cameras::Limelight::SetPriorityTagID ( int ID)
inline

Sets the priority AprilTag ID for the Limelight to track.

Parameters
IDThe AprilTag ID to prioritize

◆ SetPythonScriptData()

void valor::cameras::Limelight::SetPythonScriptData ( const std::vector< double > & outgoingData)
inline

Sends data to a Python SnapScript running on the Limelight.

Parameters
outgoingDataVector of doubles to send to the Python script

◆ SetRewindEnabled()

void valor::cameras::Limelight::SetRewindEnabled ( bool enabled)
inline

Enables or pauses the rewind buffer recording.

Parameters
enabledTrue to enable recording, false to pause

◆ SetRobotOrientation()

void valor::cameras::Limelight::SetRobotOrientation ( units::degree_t yaw,
units::degrees_per_second_t yawRate,
units::degree_t pitch,
units::degrees_per_second_t pitchRate,
units::degree_t roll,
units::degrees_per_second_t rollRate,
bool flush = true )

Sets the robot orientation for MegaTag2 localization. This should be called every frame with your robot's current orientation from a gyro.

Parameters
yawRobot yaw in degrees (typically from gyro)
yawRateRobot yaw rate in degrees per second
pitchRobot pitch in degrees
pitchRateRobot pitch rate in degrees per second
rollRobot roll in degrees
rollRateRobot roll rate in degrees per second
flushWhether to flush NetworkTables after sending

◆ SetStreamMode()

void valor::cameras::Limelight::SetStreamMode ( StreamMode mode)

Sets the stream mode to standard (side-by-side).

See also
StreamMode

◆ SetThrottle()

void valor::cameras::Limelight::SetThrottle ( int throttle)
inline

Configures the throttle value. Set to 100-200 while disabled to reduce temp.

Parameters
throttleDefaults to 0. Your Limelight will process one frame after skipping <throttle> frames.

◆ SetupPortForwarding()

void valor::cameras::Limelight::SetupPortForwarding ( )
inline

Sets up port forwarding for a Limelight connected over Ethernet. This allows access to the Limelight web interface through the roboRIO. Call once during robot initialization.

◆ SetupPortForwardingUSB()

void valor::cameras::Limelight::SetupPortForwardingUSB ( int usbIndex)
inlinestatic

Sets up port forwarding for a Limelight 3A/3G connected via USB. This allows access to the Limelight web interface and video stream when connected to the robot over USB.

For usbIndex 0: ports 5800-5809 forward to 172.29.0.1 For usbIndex 1: ports 5810-5819 forward to 172.29.1.1 etc.

Call this method once during robot initialization. To access the interface of the camera with usbIndex0, you would go to roboRIO-(teamnum)-FRC.local:5801. Port 5811 for usb index 1

Parameters
usbIndexThe USB index of the Limelight (0, 1, 2, etc.)

◆ TriggerRewindCapture()

void valor::cameras::Limelight::TriggerRewindCapture ( units::second_t duration)
inline

Triggers a rewind capture with the specified duration. Maximum duration is 165 seconds. Rate-limited on the Limelight.

Parameters
durationSecondsDuration of rewind capture in seconds (max 165)

◆ TriggerSnapshot()

void valor::cameras::Limelight::TriggerSnapshot ( )
inline

Triggers a snapshot capture via NetworkTables by incrementing the snapshot counter. Rate-limited to once per 10 frames on the Limelight.


The documentation for this class was generated from the following file: