跳到主要内容

NetworkTables API

Limelight OS 具有 NetworkTables 4 客户端。它根据在设置 UI 中配置的团队编号/ID 自动连接到在 FRC 机器人上运行的 NetworkTables 4 服务器。

所有数据都发布到与设备名称匹配的表中(例如 "limelight")。如果为您的相机分配了主机名/昵称,表名将与完整的 limelight 名称匹配(例如 "limelight-top")。

LimelightLib WPIJava 和 LimelightLib WPICPP 通过 NetworkTables 与 Limelight 设备交互。

基本目标数据

使用以下代码:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);

来检索以下数据:

类型描述
tvint如果存在有效目标则为1。如果不存在有效目标则为0
txdouble从准星到目标的水平偏移 (LL1: -27度到27度 / LL2: -29.8到29.8度)
tydouble从准星到目标的垂直偏移 (LL1: -20.5度到20.5度 / LL2: -24.85到24.85度)
txncdouble从主像素到目标的水平偏移(度)
tyncdouble从主像素到目标的垂直偏移(度)
tadouble目标区域 (图像的0%到100%)
tldouble管道的延迟贡献(毫秒)。加上"cl"得到总延迟。
cldouble捕获管道延迟(毫秒)。从传感器中间行曝光结束到跟踪管道开始的时间。
t2ddouble包含多个匹配时间戳统计值的数组: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector , targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees]
getpipeint相机的真实活动管道索引 (0 .. 9)
getpipetypestring管道类型,例如 "pipe_color"
jsonstring目标结果的完整JSON转储。必须在'output'选项卡中按管道启用
tclassstring主要神经检测器结果或神经分类器结果的类名
tcdoubleArray获取准星区域下方(3x3像素区域)的平均HSV颜色作为NumberArray
hbdouble心跳值。每帧增加一次,在20亿时重置
hwdoubleArray硬件指标 [fps, cpu温度, 内存使用, 温度]
crosshairsdoubleArray2D准星 [cx0, cy0, cx1, cy1]
tcclassstring分类器管道计算的类名
tdclassstring检测器管道的主要检测名称

AprilTag 和 3D 数据

使用以下代码:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);

来检索以下数据:

类型描述
botposedoubleArray场地空间中的机器人变换。平移(X,Y,Z)单位为米,旋转(Roll,Pitch,Yaw)单位为度,总延迟(cl+tl),标签数量,标签跨度,平均标签距离相机距离,平均标签面积(图像百分比)
botpose_wpibluedoubleArray场地空间中的机器人变换(蓝色驾驶站WPILIB原点)。平移(X,Y,Z)单位为米,旋转(Roll,Pitch,Yaw)单位为度,总延迟(cl+tl),标签数量,标签跨度,平均标签距离相机距离,平均标签面积(图像百分比)
botpose_wpireddoubleArray场地空间中的机器人变换(红色驾驶站WPILIB原点)。平移(X,Y,Z)单位为米,旋转(Roll,Pitch,Yaw)单位为度,总延迟(cl+tl),标签数量,标签跨度,平均标签距离相机距离,平均标签面积(图像百分比)
botpose_orbdoubleArray场地空间中的机器人变换(Megatag2)。平移(X,Y,Z)单位为米,旋转(Roll,Pitch,Yaw)单位为度,总延迟(cl+tl),标签数量,标签跨度,平均标签距离相机距离,平均标签面积(图像百分比)
botpose_orb_wpibluedoubleArray场地空间中的机器人变换(Megatag2)(蓝色驾驶站WPILIB原点)。平移(X,Y,Z)单位为米,旋转(Roll,Pitch,Yaw)单位为度,总延迟(cl+tl),标签数量,标签跨度,平均标签距离相机距离,平均标签面积(图像百分比)
botpose_orb_wpireddoubleArray场地空间中的机器人变换(Megatag2)(红色驾驶站WPILIB原点)。平移(X,Y,Z)单位为米,旋转(Roll,Pitch,Yaw)单位为度,总延迟(cl+tl),标签数量,标签跨度,平均标签距离相机距离,平均标签面积(图像百分比)
camerapose_targetspacedoubleArray相机在主视野内AprilTag坐标系中的3D变换(数组(6)) [tx, ty, tz, pitch, yaw, roll] (米,度)
targetpose_cameraspacedoubleArray主视野内AprilTag在相机坐标系中的3D变换(数组(6)) [tx, ty, tz, pitch, yaw, roll] (米,度)
targetpose_robotspacedoubleArray主视野内AprilTag在机器人坐标系中的3D变换(数组(6)) [tx, ty, tz, pitch, yaw, roll] (米,度)
botpose_targetspacedoubleArray机器人在主视野内AprilTag坐标系中的3D变换(数组(6)) [tx, ty, tz, pitch, yaw, roll] (米,度)
camerapose_robotspacedoubleArray相机在机器人坐标系中的3D变换(数组(6))
tidint主视野内AprilTag的ID
camerapose_robotspace_setdoubleArray设置相机在机器人坐标系中的姿态。
priorityidint设置tx/ty目标所需的ID。忽略其他目标。不影响定位
robot_orientation_setdoubleArray设置机器人方向和角速度,单位为度和度/秒[偏航,偏航率,俯仰,俯仰率,滚转,滚转率]
fiducial_id_filters_setdoubleArray覆盖定位的有效基准ID(数组)
fiducial_offset_setdoubleArray设置3D兴趣点偏移[x,y,z]

相机控制

使用以下代码:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);

来设置以下数据:

ledMode设置 limelight 的 LED 状态
[0]使用当前管道中设置的 LED 模式
[1]强制关闭
[2]强制闪烁
[3]强制开启
pipeline设置 limelight 的当前管道
0 .. 9选择管道 0..9
stream设置 limelight 的流模式
0标准 - 如果有网络摄像头连接到 Limelight,则显示并排流
1画中画主要 - 次要摄像头流放置在主要摄像头流的右下角
2画中画次要 - 主要摄像头流放置在次要摄像头流的右下角
crop(数组)设置裁剪矩形。管道必须在网页界面中使用默认裁剪矩形。数组必须恰好有 4 个条目。
[0]X0 - 裁剪矩形的最小或最大 X 值(-1 到 1)
[1]X1 - 裁剪矩形的最小或最大 X 值(-1 到 1)
[2]Y0 - 裁剪矩形的最小或最大 Y 值(-1 到 1)
[3]Y1 - 裁剪矩形的最小或最大 Y 值(-1 到 1)
double[] cropValues = new double[4];
cropValues[0] = -1.0;
cropValues[1] = 1.0;
cropValues[2] = -1.0;
cropValues[3] = 1.0;
NetworkTableInstance.getDefault().getTable("limelight").getEntry("crop").setDoubleArray(cropValues);

Python

Python 脚本允许任意的入站和出站数据。

llpython由 Python 脚本发送的 NumberArray。这在机器人代码中可访问。
llrobot由机器人发送的 NumberArray。这在 Python SnapScripts 中可访问。

原始数据

角点:

在"输出"选项卡中启用"发送轮廓"以流式传输角点坐标:

tcornxy角点坐标的数字数组 [x0,y0,x1,y1......]

原始目标:

Limelight 向 NetworkTables 发布三个原始轮廓,这些轮廓不受分组模式的影响。也就是说,它们通过管道参数进行过滤,但从不分组。X 和 Y 以归一化屏幕空间(-1 到 1)而不是角度返回。

rawtargets[txnc,tync,ta,txnc2,tync2,ta2....]

原始基准标记:

获取所有有效(未过滤)的基准标记

rawfiducials[id, txnc, tync, ta, distToCamera, distToRobot, ambiguity, id2.....]

原始检测:

获取所有有效(未过滤)的神经网络检测结果

rawfiducials[id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....]

原始条形码:

获取所有有效(未过滤)的条形码结果

rawbarcodes条形码数据的字符串数组