انتقل إلى المحتوى الرئيسي

بداية سريعة لبرمجة 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()) {
// الوصول إلى نتائج الإشارات المرجعية
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