Aller au contenu principal

Démarrage rapide de la programmation FTC

Exemple FTC basique : Exemple 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 basique

  1. Initialisez votre Limelight3A en utilisant le même nom que celui 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 via l'interface web
  3. Appelez start() pour démarrer l'interrogation des résultats en arrière-plan à 100 interrogations 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 l'interrogation 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.
    // affiche des données pour chaque cible détectée
if (result.isValid()) {
// Accès aux résultats des marqueurs fiduciaires
List<LLResultTypes.FiducialResult> fiducialResults = result.getFiducialResults();
for (LLResultTypes.FiducialResult fr : fiducialResults) {
telemetry.addData("Fiducial", "ID: %d, Family: %s, X: %.2f, Y: %.2f", fr.getFiducialId(), fr.getFamily(),fr.getTargetXDegrees(), fr.getTargetYDegrees());
}

// Accès aux résultats de couleur
List<LLResultTypes.ColorResult> colorResults = result.getColorResults();
for (LLResultTypes.ColorResult cr : colorResults) {
telemetry.addData("Color", "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é inhérent à toutes les cibles planaires comme les AprilTags.
    while (opModeIsActive()) {
YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles();

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