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) |
PythonOut | Python SnapScript 管道的输出数据 |
stdev_mt1 | MT1 标准偏差 [x, y, z, roll, pitch, yaw](米,度) |
stdev_mt2 | MT2 标准偏差 [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 | 颜色/反光管道结果数组 |
Fiducial | AprilTag 管道结果数组 |
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
}