Aller au contenu principal

Démarrage rapide de la programmation FTC

Dans FTC, vous pouvez utiliser Android Studio, OnBot Java et Blockly pour interagir avec votre Limelight.

La plupart des applications nécessitent moins de 10 lignes de code. Voici un aperçu rapide du processus.

Utilisation de base

  1. Initialisez votre Limelight3A en utilisant le même nom que celui que vous avez utilisé lors de l'étape de configuration du Control Hub.
  2. Appelez pipelineSwitch() pour sélectionner l'un des 10 pipelines que vous avez configurés à l'aide de l'interface web.
  3. Appelez start() pour démarrer le sondage des résultats en arrière-plan à 100 sondages par seconde.
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);

/*
* Démarre le sondage des données.
*/
limelight.start();
.
.
  1. Appelez getLatestResult() dans vos boucles autonomes et téléop pour obtenir le dernier objet LLResult.
  2. Utilisez getTx(), getTy() et getBotpose() de LLResult pour guider votre robot.
    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());
.
.

Utilisation avancée

  1. Les cas d'utilisation avancés peuvent nécessiter l'utilisation de getColorResults(), getFiducialResults(), etc. de LLResult.
    // afficher quelques données pour chaque cible détectée
if (result.isValid()) {
// Accéder aux résultats fiduciaires
List<LLResultTypes.FiducialResult> fiducialResults = result.getFiducialResults();
for (LLResultTypes.FiducialResult fr : fiducialResults) {
telemetry.addData("Fiducial", "ID: %d, Famille: %s, X: %.2f, Y: %.2f", fr.getFiducialId(), fr.getFamily(),fr.getTargetXDegrees(), fr.getTargetYDegrees());
}

// Accéder aux résultats de couleur
List<LLResultTypes.ColorResult> colorResults = result.getColorResults();
for (LLResultTypes.ColorResult cr : colorResults) {
telemetry.addData("Couleur", "X: %.2f, Y: %.2f", cr.getTargetXDegrees(), cr.getTargetYDegrees());
}
}
  1. Pour une précision maximale de localisation 3D, appelez updateRobotOrientation() et utilisez getBotPose_MT2(). MegaTag2 est un localisateur de robot fusionné avec l'IMU qui utilise l'IMU pour résoudre le problème d'ambiguïté fondamental à toutes les cibles planaires telles que les AprilTags.
    while (opModeIsActive()) {
YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles();

telemetry.addData("Lacet (Z)", "%.2f Deg. (Cap)", 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();
.
.

Pour plus d'informations, consultez la page de programmation FTC