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.LinearOpMode;
- import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
- import com.qualcomm.robotcore.hardware.DcMotor;
- import com.qualcomm.robotcore.hardware.HardwareMap;
- import com.qualcomm.robotcore.util.Range;
- import org.firstinspires.ftc.robotcore.external.navigation.Acceleration;
- import org.firstinspires.ftc.robotcore.external.navigation.Orientation;
- import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit;
- import org.firstinspires.ftc.robotcore.external.navigation.AxesOrder;
- import org.firstinspires.ftc.robotcore.external.navigation.AxesReference;
- @TeleOp(name = "Mecanum Drive", group = "TeleOp")
- //FTC Team 11848 | Spare Parts Robotics
- public class MecanumDrive extends LinearOpMode
- {
- Robot robot;
- //Variables
- public double leftStickY;
- public double leftStickX;
- public double rightStickX;
- public double FL_power_raw;
- public double FR_power_raw;
- public double RL_power_raw;
- public double RR_power_raw;
- public double FL_power;
- public double FR_power;
- public double RL_power;
- public double RR_power;
- public double newForward;
- public double newStrafe;
- // State used for updating telemetry
- public Orientation angles;
- public Acceleration gravity;
- @Override
- public void runOpMode()
- {
- robot = new Robot(hardwareMap);
- //Wait for the start button to be pressed.
- waitForStart();
- while (opModeIsActive())
- {
- controls();
- }
- }
- public void controls()
- {
- angles = robot.imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
- holonomicFormula();
- setDriveChainPower();
- }
- public void getJoyValues()
- {
- leftStickY = gamepad1.left_stick_y;
- leftStickX = gamepad1.left_stick_x;
- rightStickX = gamepad1.right_stick_x;
- float pi = 3.1415926f;
- float gyro_degrees = angles.firstAngle;
- float gyro_radians = gyro_degrees * pi/180;
- newForward = leftStickY * Math.cos(gyro_radians) + leftStickX * Math.sin(gyro_radians);
- newStrafe = -leftStickY * Math.sin(gyro_radians) + leftStickX * Math.cos(gyro_radians);
- }
- public void holonomicFormula()
- {
- getJoyValues();
- FL_power_raw = newForward - newStrafe - rightStickX;
- FR_power_raw = newForward + newStrafe + rightStickX;
- RL_power_raw = newForward + newStrafe - rightStickX;
- RR_power_raw = newForward - newStrafe + rightStickX;
- FL_power = Range.clip(FL_power_raw, -1, 1);
- FR_power = Range.clip(FR_power_raw, -1, 1);
- RL_power = Range.clip(RL_power_raw,-1 ,1);
- RR_power = Range.clip(RR_power_raw, -1, 1);
- }
- public void setDriveChainPower()
- {
- robot.frontLeft.setPower(FL_power);
- robot.frontRight.setPower(FR_power);
- robot.rearLeft.setPower(RL_power);
- robot.rearRight.setPower(RR_power);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement