为什么机器人会一直跑?是不是陷入了循环?

问题描述 投票:0回答:1

我使用编码器将 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();
        }
    }
}
java robotics
1个回答
0
投票
  1. 您的编码器未插入或插入到错误的电机端口
  2. 您的编码器插反了(如果使用电平转换器)

将遥测线添加到 while 循环中,以打印每个电机的“getPosition()”值,以此验证编码器操作是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.