跳到主要内容

JSON 结果规范

Limelight 的 JSON 结果输出是包含目标结果的数组集合。对于反光、基准标记、神经分类器和神经检测器结果分别存在独立的数组。 JSON 是人类可读的,并且可以在任何平台上使用任何语言轻松解析,因此它适用于大多数用例。

可以使用 REST/HTTP、Websocket 和 NetworkTables API 获取相同的 JSON 结果输出。

使用我们的 FRC 库解析这个 JSON 输出非常简单。

Limelightlib 内置了将 JSON Dump 解析为 LimelightResults 对象的功能。

https://github.com/LimelightVision/limelightlib-wpijava

https://github.com/LimelightVision/limelightlib-wpicpp

每个 JSON 结果都包含以下条目:

键名值描述
tl目标延迟(本帧跟踪循环消耗的毫秒数)
cl捕获延迟(中间行曝光结束到跟踪循环开始之间的毫秒数)
tx从准星到目标的水平偏移(LL1:-27 度到 27 度 / LL2:-29.8 到 29.8 度)
ty从准星到目标的垂直偏移(LL1:-20.5 度到 20.5 度 / LL2:-24.85 到 24.85 度)
txnc从主像素到目标的水平偏移(度)
tync从主像素到目标的垂直偏移(度)
ta目标的未失真、归一化面积(0-100)
PythonOutPython SnapScript 管道的输出数据
stdev_mt1MT1 标准偏差 [x, y, z, roll, pitch, yaw](米,度)
stdev_mt2MT2 标准偏差 [x, y, z, roll, pitch, yaw](米,度)
pID当前管道索引
pTYPE当前管道类型,例如 "pipe_color"
ts从启动开始的时间戳(毫秒)
v有效性指示器。1 = 有效目标,0 = 无有效目标
botpose机器人姿态(MegaTag):x,y,z, roll, pitch, yaw(米,度)
botpose_wpired机器人姿态(MegaTag,WPI 红色驾驶站):x,y,z, roll, pitch, yaw(米,度)
botpose_wpiblue机器人姿态(MegaTag,WPI 蓝色驾驶站):x,y,z, roll, pitch, yaw(米,度)
botpose_orb机器人姿态(MegaTag2):x,y,z, roll, pitch, yaw(米,度)
botpose_orb_wpired机器人姿态(MegaTag2,WPI 红色驾驶站):x,y,z, roll, pitch, yaw(米,度)
botpose_orb_wpiblue机器人姿态(MegaTag2,WPI 蓝色驾驶站):x,y,z, roll, pitch, yaw(米,度)
botpose_avgarea用于计算机器人姿态的标签的平均面积
botpose_avgdist用于计算机器人姿态的标签之间的最大距离(米)
botpose_span用于计算机器人姿态的标签之间的最大距离(米)
botpose_tagcount用于计算机器人姿态的标签数量
Retro颜色/反光管道结果数组
FiducialAprilTag 管道结果数组
Detector神经检测器管道结果数组
Classifier分类器管道结果数组
Barcode条形码管道结果数组

颜色/反光结果

"Retro" 数组包含具有以下结构的条目:

键名值描述
t6c_ts通过 solvepnp 计算的目标空间中的相机姿态 (x,y,z,rx,ry,rz)
t6r_fs通过 solvepnp 计算的场地空间中的机器人姿态 (x,y,z,rx,ry,rz)
t6r_ts通过 solvepnp 计算的目标空间中的机器人姿态 (x,y,z,rx,ry,rz)
t6t_cs通过 solvepnp 计算的相机空间中的目标姿态 (x,y,z,rx,ry,rz)
t6t_rs通过 solvepnp 计算的机器人空间中的目标姿态 (x,y,z,rx,ry,rz)
ta目标大小占图像的百分比 (0-1)
tx目标中心相对于十字准线的 X 坐标(度)。右侧为正,中心为零
tx_nocross目标中心相对于主像素的 X 坐标(度)。右侧为正,中心为零
txp目标中心相对于十字准线的 X 坐标(像素)。右侧为正,中心为零
ty目标中心相对于十字准线的 Y 坐标(度)。向下为正,中心为零
ty_nocross目标中心相对于主像素的 Y 坐标(度)。右侧为正,中心为零
typ目标中心相对于十字准线的 Y 坐标(像素)。向下为正,中心为零
pts角点数组(像素)[x0,y0,x1,y1.....]. 必须在输出选项卡中启用
颜色 / 反光管道的 JSON 示例
{
"Barcode": [],
"Classifier": [],
"Detector": [],
"Fiducial": [],
"PythonOut": [],
"Retro": [
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.00531171215698123,
"tx": -4.535492777705656,
"tx_nocross": -4.428826910553056,
"txp": 542.53076171875,
"ty": -1.1722867231218714,
"ty_nocross": -0.09285491974145543,
"typ": 504.5538635253906
},
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.005779948551207781,
"tx": 8.465099348209478,
"tx_nocross": 8.571765215362078,
"txp": 822.1087036132812,
"ty": -2.524207730360601,
"ty_nocross": -1.444775926980185,
"typ": 533.6112060546875
},
],
"botpose": [
0,
0,
0,
0,
0,
0
],
"botpose_avgarea": 0,
"botpose_avgdist": 0,
"botpose_orb": [
0,
0,
0,
0,
0,
0
],
"botpose_orb_wpiblue": [
0,
0,
0,
0,
0,
0
],
"botpose_orb_wpired": [
0,
0,
0,
0,
0,
0
],
"botpose_span": 0,
"botpose_tagcount": 0,
"botpose_wpiblue": [
0,
0,
0,
0,
0,
0
],
"botpose_wpired": [
0,
0,
0,
0,
0,
0
],
"cl": 37.619998931884766,
"focus_metric": 0,
"pID": 0,
"pTYPE": "pipe_color",
"stdev_mt1": [
0,
0,
0,
0,
0,
0
],
"stdev_mt2": [
0,
0,
0,
0,
0,
0
],
"t6c_rs": [
0,
0,
0,
0,
0,
0
],
"ta": 0.39156023412942886,
"tl": 22.64053726196289,
"ts": 215248.979204,
"tx": -4.3848327488723555,
"txnc": -4.278166881719756,
"ty": -1.1144596937982527,
"tync": -0.035027890417836716,
"v": 1
}

AprilTag/基准标记结果

"Fiducial"数组包含具有以下结构的条目:

键名值描述
fid基准标记ID
fam基准标记系列 (16H5C, 25H9C, 36H11C, 等)
pts返回单个角点。必须启用。
skew当前未使用
t6c_ts由该基准标记计算的目标空间中的相机姿态 (x,y,z,俯仰,偏航,滚动) (米,度)
t6r_fs由该基准标记计算的场地空间中的机器人姿态 (x,y,z,俯仰,偏航,滚动) (米,度)
t6r_fs_orb由该基准标记计算的场地空间中的机器人姿态 (Megatag2) (x,y,z,俯仰,偏航,滚动) (米,度)
t6r_ts由该基准标记计算的目标空间中的机器人姿态 (x,y,z,俯仰,偏航,滚动) (米,度)
t6t_cs由该基准标记计算的相机空间中的目标姿态 (x,y,z,俯仰,偏航,滚动) (米,度)
t6t_rs由该基准标记计算的机器人空间中的目标姿态 (x,y,z,俯仰,偏航,滚动) (米,度)
ta目标大小占图像的百分比 (0-1)
tx目标中心相对于十字准线的X坐标,以度为单位。右侧为正,中心为零
tx_nocross目标中心相对于主像素的X坐标,以度为单位。右侧为正,中心为零
txp目标中心相对于十字准线的X坐标,以像素为单位。右侧为正,中心为零
ty目标中心相对于十字准线的Y坐标,以度为单位。向下为正,中心为零
ty_nocross目标中心相对于主像素的Y坐标,以度为单位。右侧为正,中心为零
typ目标中心相对于十字准线的Y坐标,以像素为单位。向下为正,中心为零
pts角点数组(像素)[x0,y0,x1,y1.....]. 必须在输出选项卡中启用
AprilTag管道的JSON示例
{
"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
}

神经检测器结果

"Detector"数组包含具有以下结构的条目:

键名值描述
class人类可读的类名字符串
classID类ID整数
conf预测的置信度
pts单个角点作为[x,y]像素数组。中心为零,右和下为正。必须启用。
ta目标大小占图像的百分比(0-1)
tx目标中心相对于十字准线的X坐标(度)。右为正,中心为零
tx_nocross目标中心相对于主像素的X坐标(度)。右为正,中心为零
txp目标中心相对于十字准线的X坐标(像素)。右为正,中心为零
ty目标中心相对于十字准线的Y坐标(度)。下为正,中心为零
ty_nocross目标中心相对于主像素的Y坐标(度)。右为正,中心为零
typ目标中心相对于十字准线的Y坐标(像素)。下为正,中心为零
pts角点数组(像素)[x0,y0,x1,y1.....]。必须在输出选项卡中启用
检测器管道的JSON示例
{
"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
}

神经分类器结果

"Classifier"数组包含具有以下结构的条目:

键名值描述
class人类可读的类名字符串
classID类ID整数
conf预测的置信度
分类器管道的JSON示例
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}

条形码结果

"Barcode"数组包含具有以下结构的条目:

键名值描述
fam条形码类型,例如"qr"
data解码后的条形码数据(字符串)
ta目标大小占图像的百分比(0-1)
tx目标中心相对于十字准线的X坐标(度)。右侧为正,中心为零
tx_nocross目标中心相对于主像素的X坐标(度)。右侧为正,中心为零
txp目标中心相对于十字准线的X坐标(像素)。右侧为正,中心为零
ty目标中心相对于十字准线的Y坐标(度)。向下为正,中心为零
ty_nocross目标中心相对于主像素的Y坐标(度)。右侧为正,中心为零
typ目标中心相对于十字准线的Y坐标(像素)。向下为正,中心为零
pts角点数组(像素)[x0,y0,x1,y1.....]. 必须在输出选项卡中启用
条形码管道的JSON示例
{
"Barcode": [
{
"fam": "QR",
"data": "Hello, World!",
"txp": 150.5,
"typ": 120.75,
"tx": -2.5,
"ty": 1.8,
"tx_nocross": -2.3,
"ty_nocross": 2.0,
"ta": 0.05,
"pts": [[140, 110], [160, 110], [160, 130], [140, 130]]
}
],
"Classifier": [],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 15.2,
"ts": 4751332.7542280005,
"v": 1
}