我使用编码器将 FTC 机器人设置为向前驱动 100 个刻度,但它会连续驱动,直到操作模式停止。在代码中调整速度似乎也不起作用,并且卡在相同的速度。
这是我们的代码:
package org.firstinspires.ftc.teamcode.drive.auto;
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
@Autonomous(name="encoderAutoRB", group="Autonomous")
public class encoderAutoRB extends LinearOpMode {
private DcMotor left;
private DcMotor right;
private int leftPos;
private int rightPos;
@Override
public void runOpMode() {
left = hardwareMap.get(DcMotor.class, "frontLeftMotor");
left = hardwareMap.get(DcMotor.class, "backLeftMotor");
right = hardwareMap.get(DcMotor.class, "frontRightMotor");
right = hardwareMap.get(DcMotor.class, "backRightMotor");
left.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
right.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
right.setDirection(DcMotorSimple.Direction.REVERSE);
leftPos = 0;
rightPos = 0;
waitForStart();
move(100, 100, 0.5);
}
private void move(int leftTarget, int rightTarget, double speed) {
leftPos += leftTarget;
rightPos += rightTarget;
left.setTargetPosition(leftPos);
right.setTargetPosition(rightPos);
left.setMode(DcMotor.RunMode.RUN_TO_POSITION);
right.setMode(DcMotor.RunMode.RUN_TO_POSITION);
left.setPower(speed);
right.setPower(speed);
while (opModeIsActive() && left.isBusy() && right.isBusy()) {
idle();
}
}
}
将遥测线添加到 while 循环中,以打印每个电机的“getPosition()”值,以此验证编码器操作是否正确。