Ir para o conteúdo principal

NetworkTables API completa

Dados básicos de segmento

Use os seguintes códigos:

Java

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

LABView

Labview_ReadData-630cf73a31982cca34ca114c7d40748e.png

Para retornar os dados:

Parâmetro Descrição
tv Se tem algum alvo válido (0 ou 1)
tx Deslocamento horizontal do ponto alvo (LL1: -27° a 27°/ LL2: -29,8° até 29,8°)
ty Deslocamento vertical do ponto alvo (LL1: -20,5° a 20,5° / LL2: -24,85° a 24,85°)
ta Área Alvo (0% de imagem a 100%)
tl A latência da pipeline (ms). Adicione a cl para conseguir a latência total
cl Captura a latência da pipeline (ms). Tempo entre o final da exposição da linha intermediária do sensor até o começo do pipeline de rastreamento
tshort Comprimento lateral do lado mais curto da caixa de detecção (pixels)
tlong Comprimento lateral do maior lado da caixa de detecção (pixels)
thor Comprimento horizontal da caixa de detecção (0 - 320 pixels)
tvert Comprimento vertical da caixa de detecção (0 - 320 pixels)
getpipe Ìndice de pipeline ativo (0...9)
json JSON completo dos alvos de segmentação
tclass ID de classe do detector neural primário ou do classificador neural
tc Obtenha a cor HSV média abaixo da região da mira como um NumberArray

AprilTag e dados 3D

Use os seguintes códigos:

Java

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

C++

nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumberArray("<variablename>",std::vector<double>(6));

Para retornar esse dado:

Parâmetro Descrição
botpose Transformação do robô no espaço do campo. Translação (X, Y, Z), Rotação (Roll, Pitch, Yaw), latência total (cl+tl)
botpose_wpiblue Transformação do robô no espaço do campo (origem na Driver Station azul). Translação (X, Y, Z), Rotação (Roll, Pitch, Yaw), latência total (cl_tl)
botpose_wpired Transformação do robô no espaço do campo (origem na Driver Station red). Translação (X, Y, Z), Rotação (Roll, Pitch, Yaw), latência total (cl_tl)
camerapose_targetspace Transformação 3D da câmera no sistema de coordenadas da AprilTag em vista (array (6))
targetpose_cameraspace Transformação 3D da AprilTag em vista no sistema de coordenadas da câmera
targetpose_robotspace Transformação 3D da AprilTag em vista no sistema de coordenadas do robô
camerapose_robotspace Transofmração 3D da câmera no sistema de coordenadas do robô
tid ID da AprilTag em vista

Controle de câmera

Use os seguintes códigos:

Java

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

LABView

Labview_WriteData-fd5bd3fe2aabc3d1526d298ab594104e.png

C++

nt::NetworkTableInstance::GetDefault().GetTable("limelight")->PutNumber("<variablename>",<value>);

Python

NetworkTables.getTable("limelight").putNumber('<variablename>',<value>)

Para definir esse dado:

ledMode Definir o estado do LED
[0] Usa o modo do LED na pipeline atual
[1] Desligado
[2] Piscando
[3] Ligado
camMode Define o modo de operação
0 Processador de visão
1 Câmera de Driver (Desabilita o processamento)
pipeline Define a pipeline atual
0..9 Define a pipeline 0...9
stream Define o modo de gravação da LimeLight
0 Padrão - Transmissão simultânea se tiver uma webcam conectada oa robô
1 PiP Principal - A transmissão da câmera secundária é colocada no canto inferior direito ao da principal
2 PiP secundário - A transmissão da câmera principal é colocada no canto inferior direito ao da secundária
snapshot Permite aos usuários tirar fotos durante a partida
0 Reseta o modo de foto
1 Tira uma foto
crop (Matriz) Define o recorte retângular. A pipeline deve utilizar o corte padrão da interface web. A matriz deve ter 4 entradas.
[0] X0 - Mín ou Máx valor de X do recorte retângular (-1 a 1)
[1] X1 - Mín ou Máx valor de X do recorte retângular (-1 a 1)
[2] Y0 - Mín ou Máx valor de Y do recorte retângular (-1 a 1)
[3] Y1 - Mín ou Máx valor de Y do recorte retângular (-1 a 1)

camerapose_robotspace_set | (Matriz) Define a posição da câmera no sistema de coordenadas do robô

Java

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);

C++

wip

Python

Os algoritmos em Python permitem dados arbitrários d eentrada e saída.

llpython - NumberArray enviado pelo script de python. Esse dado é acessível pelo código do robô. llrobot - NumberArray eviado pelo robô. É acessível pelo algoritmo de python.

Contornos

Cantos:

Habilite send contours na aba de Output para transmitir as coordenadas dos cantos

tcornxy - Matriz das coordenadas [x0, y0, x1, y1...]

Alvos brutos:

O Limelight envia três contornos brutos para a NetworkTables que não são influenciados pelo modo de agrupamento. Ou seja, eles são filtrados com os parâmetros da sua tubulação, mas nunca agrupados. X e Y são retornados no espaço de tela normalizado (-1 a 1) em vez de graus.

Dados Descrição
tx0 Espaço de tela X
ty0 Espaço de tela Y
ta0 Área (0% de imagem a 100%)
ts0 Inclinação ou rotação (-90° a 0°)
tx1 Espaço de tela X
ty1 Espaço de tela Y
ta1 Área (0% de imagem a 100%)
ts1 Inclinação ou rotação (-90° a 0°)
tx2 Espaço de tela X
ty2 Espaço de tela Y
ta2 Área (0% de imagem a 100%)
ts2 Inclinação ou rotação (-90° a 0°)

Mira bruta:

Se estiver usando dados de direcionamento brutos, ainda é possível utilizar suas miras calibradas:

Dados Descrição
cx0 Mira A X no espaço de tela
cy0 Mira A Y no espaço de tela
cx1 Mira B X no espaço de tela
cy1 Mira B Y no espaço de tela