跳到主要内容

FTC 编程快速入门

在 FTC 中,您可以使用 Android Studio、OnBot Java 和 Blockly 与 Limelight 进行交互。

大多数应用程序只需要不到 10 行代码。以下是该过程的快速概述。

基本用法

  1. 使用与控制中心设置步骤中相同的名称初始化 Limelight3A。
  2. 调用 pipelineSwitch() 来选择您通过 Web 界面配置的 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. 利用 LLResult 的 getTx()、getTy() 和 getBotpose() 来引导您的机器人。
    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. 高级用例可能需要使用 LLResult 的 getColorResults()、getFiducialResults() 等。
    // 打印每个检测到的目标的一些数据
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. 为了获得最大的 3D 定位精度,调用 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 编程页面