Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
1,008
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. package org.firstinspires.ftc.teamcode;
  2.  
  3. import com.qualcomm.hardware.bosch.BNO055IMU;
  4. import com.qualcomm.hardware.bosch.JustLoggingAccelerationIntegrator;
  5. import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
  6. import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
  7. import com.qualcomm.robotcore.hardware.DcMotor;
  8. import com.qualcomm.robotcore.hardware.HardwareMap;
  9. import com.qualcomm.robotcore.util.Range;
  10.  
  11. import org.firstinspires.ftc.robotcore.external.navigation.Acceleration;
  12. import org.firstinspires.ftc.robotcore.external.navigation.Orientation;
  13.  
  14. import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit;
  15. import org.firstinspires.ftc.robotcore.external.navigation.AxesOrder;
  16. import org.firstinspires.ftc.robotcore.external.navigation.AxesReference;
  17.  
  18.  
  19. @TeleOp(name = "Mecanum Drive", group = "TeleOp")
  20. //FTC Team 11848 | Spare Parts Robotics
  21. public class MecanumDrive extends LinearOpMode
  22. {
  23. Robot robot;
  24. //Variables
  25. public double leftStickY;
  26. public double leftStickX;
  27. public double rightStickX;
  28. public double FL_power_raw;
  29. public double FR_power_raw;
  30. public double RL_power_raw;
  31. public double RR_power_raw;
  32. public double FL_power;
  33. public double FR_power;
  34. public double RL_power;
  35. public double RR_power;
  36.  
  37. public double newForward;
  38. public double newStrafe;
  39.  
  40. // State used for updating telemetry
  41. public Orientation angles;
  42. public Acceleration gravity;
  43.  
  44. @Override
  45. public void runOpMode()
  46. {
  47. robot = new Robot(hardwareMap);
  48.  
  49. //Wait for the start button to be pressed.
  50. waitForStart();
  51.  
  52. while (opModeIsActive())
  53. {
  54. controls();
  55. }
  56. }
  57.  
  58. public void controls()
  59. {
  60. angles = robot.imu.getAngularOrientation(AxesReference.INTRINSIC, AxesOrder.ZYX, AngleUnit.DEGREES);
  61.  
  62.  
  63. holonomicFormula();
  64. setDriveChainPower();
  65. }
  66.  
  67. public void getJoyValues()
  68. {
  69. leftStickY = gamepad1.left_stick_y;
  70. leftStickX = gamepad1.left_stick_x;
  71. rightStickX = gamepad1.right_stick_x;
  72.  
  73. float pi = 3.1415926f;
  74.  
  75. float gyro_degrees = angles.firstAngle;
  76. float gyro_radians = gyro_degrees * pi/180;
  77. newForward = leftStickY * Math.cos(gyro_radians) + leftStickX * Math.sin(gyro_radians);
  78. newStrafe = -leftStickY * Math.sin(gyro_radians) + leftStickX * Math.cos(gyro_radians);
  79. }
  80.  
  81. public void holonomicFormula()
  82. {
  83. getJoyValues();
  84.  
  85. FL_power_raw = newForward - newStrafe - rightStickX;
  86. FR_power_raw = newForward + newStrafe + rightStickX;
  87. RL_power_raw = newForward + newStrafe - rightStickX;
  88. RR_power_raw = newForward - newStrafe + rightStickX;
  89.  
  90. FL_power = Range.clip(FL_power_raw, -1, 1);
  91. FR_power = Range.clip(FR_power_raw, -1, 1);
  92. RL_power = Range.clip(RL_power_raw,-1 ,1);
  93. RR_power = Range.clip(RR_power_raw, -1, 1);
  94. }
  95.  
  96. public void setDriveChainPower()
  97. {
  98. robot.frontLeft.setPower(FL_power);
  99. robot.frontRight.setPower(FR_power);
  100. robot.rearLeft.setPower(RL_power);
  101. robot.rearRight.setPower(RR_power);
  102. }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement