JSON Dump Specification¶
Limelight’s JSON results output is a collection of arrays containing targeting results. Separate arrays exist for retroreflective, fiducial, neural classifier, and neural detector results. JSON is human-readable and easy to parse in any language on any platform, so it is perfect for most use-cases. The same JSON dump may be retrieved using the REST/HTTP, Websocket, and NetworkTables APIs. Parsing this JSON output is incredibly easy with our FRC libraries.
Limelightlib has built-in functionality that parses the JSON Dump into a LimelightResults object.
https://github.com/LimelightVision/limelightlib-wpijava
https://github.com/LimelightVision/limelightlib-wpicpp
Every JSON result contains the following entries:
pID | Current pipeline index |
tl | Targeting latency (milliseconds consumed by tracking loop this frame) |
cl | Capture latency (milliseconds between the end of the exposure of the middle row to the beginning of the tracking loop) |
ts | Timestamp in milliseconds from boot. |
v | Validity indicator. 1 = valid targets, 0 = no valid targets |
botpose | Botpose (MegaTag): x,y,z, roll, pitch, yaw (meters, degrees) |
botpose_wpired | Botpose (MegaTag, WPI Red driverstation): x,y,z, roll, pitch, yaw (meters, degrees) |
botpose_wpiblue | Botpose (MegaTag, WPI Blue driverstation): x,y,z, roll, pitch, yaw (meters, degrees) |
Retroreflective Results¶
The “Retro” array contains entries with the following structure:
pts | Individual corner points as an array of {x,y} in pixels. Center-zero, positive right and down. Must be enabled. |
t6c_ts | Camera Pose in target space as computed by solvepnp (x,y,z,rx,ry,rz) |
t6r_fs | Robot Pose in field space as computed by solvepnp (x,y,z,rx,ry,rz) |
t6r_ts | Robot Pose in target space as computed by solvepnp (x,y,z,rx,ry,rz) |
t6t_cs | Target Pose in camera space as computed by solvepnp (x,y,z,rx,ry,rz) |
t6t_rs | Target Pose in robot space as computed by solvepnp (x,y,z,rx,ry,rz) |
ta | The size of the target as a percentage of the image (0-1) |
tx | X-coordinate of the center of the target in degrees. Positive-right, center-zero |
txp | X-coordinate of the center of the target in pixels. Positive-right, center-zero |
ty | Y-coordinate of the center of the target in degrees. Positive-down, center-zero |
typ | Y-coordinate of the center of the target in pixels. Positive-down, center-zero |
{
"Results": {
"Classifier": [],
"Detector": [],
"Fiducial": [],
"Retro": [
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.028124958276748657,
"tx": -6.858895301818848,
"txp": 125.89512634277344,
"ty": 8.712546348571777,
"typ": 79.79258728027344
}
],
"pID": 0,
"tl": 4.795886039733887,
"ts": 4524421.206346,
"v": 1
}
}
AprilTag/Fiducial Results¶
The “Fiducial” array contains entries with the following structure:
fid | Fiducial tag ID |
fam | Fiducial Family (16H5C, 25H9C, 36H11C, etc) |
pts | Return individual corner points. Must be enabled. |
skew | Currently unused |
t6c_ts | Camera Pose in target space as computed by this fiducial (x,y,z,rx,ry,rz) |
t6r_fs | Robot Pose in field space as computed by this fiducial (x,y,z,rx,ry,rz) |
t6r_ts | Robot Pose in target space as computed by this fiducial (x,y,z,rx,ry,rz) |
t6t_cs | Target Pose in camera space as computed by this fiducial (x,y,z,rx,ry,rz) |
t6t_rs | Target Pose in robot space as computed by this fiducial (x,y,z,rx,ry,rz) |
ta | The size of the target as a percentage of the image (0-1) |
tx | X-coordinate of the center of the target in degrees. Positive-right, center-zero |
txp | X-coordinate of the center of the target in pixels. Positive-right, center-zero |
ty | Y-coordinate of the center of the target in degrees. Positive-down, center-zero |
typ | Y-coordinate of the center of the target in pixels. Positive-down, center-zero |
{
"Results": {
"Classifier": [],
"Detector": [],
"Fiducial": [
{
"fID": 2,
"fam": "16H5C",
"pts": [],
"skew": [],
"t6c_ts": [
0.33247368976801916,
-0.05672695778305914,
-2.5042031405987144,
-4.680849607956358,
-5.171154989721864,
4.528697946312339
],
"t6r_fs": [
4.738896418276903,
-1.5926603672041666,
0.5194469577830592,
4.522658587661256,
4.258580454853879,
5.5236539893713275
],
"t6r_ts": [
0.33247368976801916,
-0.05672695778305914,
-2.5042031405987144,
-4.680849607956358,
-5.171154989721864,
4.528697946312339
],
"t6t_cs": [
-0.09991902572799474,
-0.1234042720218289,
2.5218203039582496,
4.278368708252767,
5.508508005282244,
-4.1112864453027775
],
"t6t_rs": [
-0.09991902572799474,
-0.1234042720218289,
2.5218203039582496,
4.278368708252767,
5.508508005282244,
-4.1112864453027775
],
"ta": 0.005711808800697327,
"tx": -2.0525293350219727,
"txp": 149.4874725341797,
"ty": 2.7294836044311523,
"typ": 107.14710235595703
}
],
"Retro": [],
"pID": 0,
"tl": 19.78130340576172,
"ts": 3284447.910569,
"v": 1
}
}
Neural Detector Results¶
The “Detector” array contains entries with the following structure:
class | Human-readable class name string |
classID | ClassID integer |
conf | Confidence of the predicition |
pts | Individual corner points as an array of {x,y} in pixels. Center-zero, positive right and down. Must be enabled. |
ta | The size of the target as a percentage of the image (0-1) |
tx | X-coordinate of the center of the target in degrees. Positive-right, center-zero |
txp | X-coordinate of the center of the target in pixels. Positive-right, center-zero |
ty | Y-coordinate of the center of the target in degrees. Positive-down, center-zero |
typ | Y-coordinate of the center of the target in pixels. Positive-down, center-zero |
{
"Results": {
"Classifier": [],
"Detector": [
{
"class": "person",
"classID": 0,
"conf": 0.83984375,
"pts": [],
"ta": 0.2608712911605835,
"tx": -2.45949649810791,
"txp": 147.5,
"ty": -10.066887855529785,
"typ": 165.5
}
],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 63.50614547729492,
"ts": 4932985.266867,
"v": 1
}
}
Neural Classifier Results¶
The “Classifier” array contains entries with the following structure:
class | Human-readable class name string |
classID | ClassID integer |
conf | Confidence of the predicition |
{
"Results": {
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}
}