NetworkTables API completa
Dados básicos de segmento
Use os seguintes códigos:
Java
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);
LABView
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
C++
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->PutNumber("<variablename>",<value>);
Python
NetworkTables.getTable("limelight").putNumber('<variablename>',<value>)
Para definir esse dado:
Definir o estado do LED | |
---|---|
[0] | Usa o modo do LED na pipeline atual |
[1] | Desligado |
[2] | Piscando |
[3] | Ligado |
Define o modo de operação | |
---|---|
0 | Processador de visão |
1 | Câmera de Driver (Desabilita o processamento) |
Define a pipeline atual | |
---|---|
0..9 | Define a pipeline 0...9 |
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 |
Permite aos usuários tirar fotos durante a partida | |
---|---|
0 | Reseta o modo de foto |
1 | Tira uma foto |
(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 |