Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.firstinspires.ftc.teamcode;
- import com.qualcomm.hardware.bosch.BNO055IMU;
- import com.qualcomm.hardware.bosch.JustLoggingAccelerationIntegrator;
- 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;
- import com.qualcomm.robotcore.hardware.HardwareMap;
- import com.qualcomm.robotcore.util.ElapsedTime;
- import org.firstinspires.ftc.robotcontroller.external.samples.HardwarePushbot;
- import org.firstinspires.ftc.robotcore.external.Telemetry;
- import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit;
- import org.firstinspires.ftc.robotcore.external.navigation.AxesOrder;
- import org.firstinspires.ftc.robotcore.external.navigation.AxesReference;
- import org.firstinspires.ftc.robotcore.external.navigation.Orientation;
- public class Drive {
- /* Declare OpMode members. */
- private ElapsedTime runtime = new ElapsedTime();
- static final double COUNTS_PER_MOTOR_REV = 1440; // eg: TETRIX Motor Encoder
- static final double DRIVE_GEAR_REDUCTION = 2.0; // This is < 1.0 if geared UP
- static final double WHEEL_DIAMETER_INCHES = 4.0; // Fornew figuring circumference
- static final double COUNTS_PER_INCH = (COUNTS_PER_MOTOR_REV * DRIVE_GEAR_REDUCTION) /
- (WHEEL_DIAMETER_INCHES * 3.1415);
- public DcMotor BDL;
- public DcMotor BDR;
- public DcMotor FDR;
- public DcMotor FDL;
- LinearOpMode opMode;
- Orientation orientation;
- double current;
- double initial;
- BNO055IMU imu;
- public Drive(LinearOpMode ahwMap) {
- this.opMode = ahwMap;
- BDL = ahwMap.hardwareMap.dcMotor.get("BDL");
- BDR = ahwMap.hardwareMap.dcMotor.get("BDR");
- FDL = ahwMap.hardwareMap.dcMotor.get("FDL");
- FDR = ahwMap.hardwareMap.dcMotor.get("FDR");
- imu = ahwMap.hardwareMap.get(BNO055IMU.class, "imu");
- BNO055IMU.Parameters parameters = new BNO055IMU.Parameters();
- parameters.angleUnit = BNO055IMU.AngleUnit.DEGREES;
- parameters.accelUnit = BNO055IMU.AccelUnit.METERS_PERSEC_PERSEC;
- parameters.calibrationDataFile = "BNO055IMUCalibration.json"; // see the calibration sample opmode
- parameters.loggingEnabled = true;
- parameters.loggingTag = "IMU";
- parameters.accelerationIntegrationAlgorithm = new JustLoggingAccelerationIntegrator();
- // Retrieve and initialize the IMU. We expect the IMU to be attached to an I2C port
- // on a Core Device Interface Module, configured to be a sensor of type "AdaFruit IMU",
- // and named "imu".
- imu.initialize(parameters);
- }
- public void encoderDrive(double power,
- double distance) {
- int newLeftTarget;
- int newRightTarget;
- newLeftTarget = FDR.getCurrentPosition() + (int)(distance * COUNTS_PER_INCH);
- newRightTarget = FDL.getCurrentPosition() + (int)(distance * COUNTS_PER_INCH);
- FDL.setTargetPosition(newLeftTarget);
- FDR.setTargetPosition(newRightTarget);
- BDL.setTargetPosition(newLeftTarget);
- BDR.setTargetPosition(newRightTarget);
- FDR.setMode(DcMotor.RunMode.RUN_TO_POSITION);
- FDL.setMode(DcMotor.RunMode.RUN_TO_POSITION);
- BDR.setMode(DcMotor.RunMode.RUN_TO_POSITION);
- BDL.setMode(DcMotor.RunMode.RUN_TO_POSITION);
- FDL.setPower(power);
- BDL.setPower(power);
- FDR.setPower(power);
- BDR.setPower(power);
- //display telemetry data while turning
- while (opMode.opModeIsActive() && (FDL.isBusy() && FDR.isBusy())) {
- // Display it for the driver.
- opMode.telemetry.addData("Path1", "Running to %7d :%7d", newLeftTarget, newRightTarget);
- opMode.telemetry.addData("Path2", "Running at %7d :%7d", FDL.getCurrentPosition(), FDR.getCurrentPosition());
- opMode.telemetry.update();
- }
- //stop after done
- FDL.setPower(0);
- BDL.setPower(0);
- FDR.setPower(0);
- BDR.setPower(0);
- FDR.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
- FDL.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
- BDR.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
- BDL.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
- }
- public void IMUTurning (double target , double speed)
- {
- orientation = imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
- initial = orientation.firstAngle;
- if(target > current)
- {
- opMode.telemetry.addData("toGo", current - target);
- while ((initial + target) - current > 2 && opMode.opModeIsActive())
- {
- orientation = imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
- current = orientation.firstAngle;
- opMode.telemetry.addData("toGo", target - current);
- opMode.telemetry.update();
- FDR.setPower(speed);
- FDL.setPower(-speed);
- BDR.setPower(speed);
- BDL.setPower(-speed);
- opMode.telemetry.update();
- }
- }
- else
- {
- opMode.telemetry.addData("toGo", target - current);
- while (current - (target + initial) > 2 && opMode.opModeIsActive())
- {
- orientation = imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
- current = orientation.firstAngle; //getHeading
- opMode.telemetry.addData("toGo", current - target);
- opMode.telemetry.update();
- FDR.setPower(-speed);
- FDL.setPower(speed);
- BDR.setPower(-speed);
- BDL.setPower(speed);
- opMode.telemetry.update();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement