بداية سريعة لبرمجة FTC
في FTC، يمكنك استخدام Android Studio و OnBot Java و Blockly للتفاعل مع Limelight الخاص بك.
معظم التطبيقات تتطلب أقل من 10 أسطر من الكود. إليك نظرة عامة سريعة على العملية.
الاستخدام الأساسي
- قم بتهيئة Limelight3A الخاص بك باستخدام نفس الاسم الذي استخدمته أثناء خطوة إعداد Control Hub.
- استدعِ pipelineSwitch() لاختيار واحدة من الـ 10 خطوط أنابيب التي قمت بتكوينها باستخدام واجهة الويب.
- استدعِ 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();
.
.
- استدعِ getLatestResult() في حلقات التشغيل الذاتي والتحكم عن بعد للحصول على أحدث كائن LLResult.
- استخدم 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());
.
.
الاستخدام المتقدم
- قد تتطلب حالات الاستخدام المتقدمة استدعاء 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());
}
}
- للحصول على أقصى دقة في تحديد الموقع ثلاثي الأبعاد، استدعِ 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