Pular para o conteúdo principal

Início Rápido de Programação FTC

No FTC, você pode usar Android Studio, OnBot Java e Blockly para interagir com seu Limelight.

A maioria das aplicações requer menos de 10 linhas de código. Aqui está uma visão geral rápida do processo.

Uso Básico

  1. Inicialize seu Limelight3A usando o mesmo nome que você usou durante a etapa de Configuração do Control Hub.
  2. Chame pipelineSwitch() para selecionar um dos 10 pipelines que você configurou usando a interface web
  3. Chame start() para iniciar a sondagem de resultados em segundo plano a 100 sondagens por segundo.
public class Teleop extends LinearOpMode {

private Limelight3A limelight;

@Override
public void runOpMode() throws InterruptedException
{
limelight = hardwareMap.get(Limelight3A.class, "limelight");

telemetry.setMsTransmissionInterval(11);

limelight.pipelineSwitch(0);

/*
* Inicia a sondagem de dados.
*/
limelight.start();
.
.
  1. Chame getLatestResult() em seus loops autônomos e teleop para obter o objeto LLResult mais recente
  2. Utilize getTx(), getTy() e getBotpose() do LLResult para guiar seu robô.
    while (opModeIsActive()) {
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose();
telemetry.addData("tx", result.getTx());
telemetry.addData("ty", result.getTy());
telemetry.addData("Botpose", botpose.toString());
.
.

Uso Avançado

  1. Casos de uso avançados podem exigir o uso de getColorResults(), getFiducialResults(), etc. do LLResult.
    // imprime alguns dados para cada alvo detectado
if (result.isValid()) {
// Acessa resultados fiduciais
List<LLResultTypes.FiducialResult> fiducialResults = result.getFiducialResults();
for (LLResultTypes.FiducialResult fr : fiducialResults) {
telemetry.addData("Fiducial", "ID: %d, Família: %s, X: %.2f, Y: %.2f", fr.getFiducialId(), fr.getFamily(),fr.getTargetXDegrees(), fr.getTargetYDegrees());
}

// Acessa resultados de cor
List<LLResultTypes.ColorResult> colorResults = result.getColorResults();
for (LLResultTypes.ColorResult cr : colorResults) {
telemetry.addData("Cor", "X: %.2f, Y: %.2f", cr.getTargetXDegrees(), cr.getTargetYDegrees());
}
}
  1. Para máxima precisão de localização 3D, chame updateRobotOrientation() e use getBotPose_MT2(). MegaTag2 é um localizador de robô fundido com IMU que utiliza o imu para resolver o problema de ambiguidade que é fundamental para todos os alvos planares, como AprilTags.
    while (opModeIsActive()) {
YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles();

telemetry.addData("Yaw (Z)", "%.2f Graus. (Direção)", orientation.getYaw(AngleUnit.DEGREES));

limelight.updateRobotOrientation(orientation.getYaw(AngleUnit.DEGREES));
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose_MT2();
.
.

Para mais informações, consulte a página de Programação FTC