דלג לתוכן הראשי

מדריך מהיר לתכנות FTC

דוגמה בסיסית ל-FTC: דוגמת FTC

ב-FTC, ניתן להשתמש ב-Android Studio, OnBot Java, ו-Blockly כדי לתקשר עם ה-Limelight שלך.

רוב היישומים דורשים פחות מ-10 שורות קוד. הנה סקירה מהירה של התהליך.

שימוש בסיסי

  1. אתחל את Limelight3A באמצעות אותו שם שהשתמשת בו במהלך שלב הגדרת Control Hub.
  2. קרא ל-pipelineSwitch() כדי לבחור אחד מ-10 הצינורות שהגדרת באמצעות ממשק האינטרנט
  3. קרא ל-start() כדי להתחיל סקירת תוצאות ברקע ב-100 סקירות לשנייה.
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);

/*
* מתחיל סקירת נתונים.
*/
limelight.start();
.
.
  1. קרא ל-getLatestResult() בלולאות האוטונומי והטלאופ שלך כדי לקבל את אובייקט LLResult העדכני ביותר
  2. השתמש ב-getTx(), getTy(), ו-getBotpose() של LLResult כדי להנחות את הרובוט שלך.
    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());
.
.

שימוש מתקדם

  1. מקרי שימוש מתקדמים עשויים לדרוש שימוש ב-getColorResults(), getFiducialResults() וכו' של LLResult.
    // הדפס נתונים עבור כל מטרה שזוהתה
if (result.isValid()) {
// גישה לתוצאות fiducial
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());
}

// גישה לתוצאות צבע
List<LLResultTypes.ColorResult> colorResults = result.getColorResults();
for (LLResultTypes.ColorResult cr : colorResults) {
telemetry.addData("Color", "X: %.2f, Y: %.2f", cr.getTargetXDegrees(), cr.getTargetYDegrees());
}
}
  1. לדיוק מרבי במיקום תלת-ממדי, קרא ל-updateRobotOrientation() והשתמש ב-getBotPose_MT2(). MegaTag2 הוא ממקם רובוט משולב-IMU המשתמש ב-IMU כדי לפתור את בעיית הדו-משמעות שהיא בסיסית לכל המטרות המישוריות כמו 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();
.
.

למידע נוסף, ראה את דף תכנות FTC