Advertisement
Vendrick-Xander

code woo

Feb 6th, 2020
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. public void gyroStrafe2 (double seconds, double angle, double speed, double balanceReduction)
  2. {
  3. stopAndReset();
  4. runtime.reset();
  5. int fLTarget;
  6. int fRTarget;
  7. int bLTarget;
  8. int bRTarget;
  9.  
  10. int fLInit = robot.fLMotor.getCurrentPosition();
  11. int fRInit = robot.fRMotor.getCurrentPosition();
  12. int bLInit = robot.bLMotor.getCurrentPosition();
  13. int bRInit = robot.bRMotor.getCurrentPosition();
  14.  
  15. //int newRightTarget;
  16. int moveCounts;
  17. double max;
  18. double error;
  19. double steer;
  20. double leftSpeed;
  21. double rightSpeed;
  22.  
  23. // Ensure that the opmode is still active
  24. if (opModeIsActive()) {
  25.  
  26. // Determine new target position, and pass to motor controller
  27. for(int i = 0; i < seconds; i++) {
  28. double clockStart = runtime.seconds();
  29. // moveCounts = (int) (distance * COUNTS_PER_INCH)/10;
  30. // fLTarget = (robot.fLMotor.getCurrentPosition() + moveCounts);
  31. // fRTarget = (robot.fRMotor.getCurrentPosition() + moveCounts);
  32. // bLTarget = (robot.bLMotor.getCurrentPosition() + moveCounts);
  33. // bRTarget = (robot.bLMotor.getCurrentPosition() + moveCounts);
  34. //
  35. // // Set Target and Turn On RUN_TO_POSITION
  36. // robot.fLMotor.setTargetPosition(fLTarget);
  37. // robot.fRMotor.setTargetPosition(-fRTarget);
  38. // robot.bLMotor.setTargetPosition(-bLTarget);
  39. // robot.bRMotor.setTargetPosition(bRTarget);
  40.  
  41.  
  42. robot.fLMotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
  43. robot.fRMotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
  44. robot.bLMotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
  45. robot.bRMotor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
  46.  
  47. // start motion.
  48. //gyroDriveSpeed = Range.clip(Math.abs(speed), 0.0, 1.0);
  49. while(Math.abs(clockStart - runtime.seconds()) < 1)
  50. {
  51. double fLSpeed = speedCap(speed, balanceReduction, false);
  52. double fRSpeed = speedCap(speed, balanceReduction, false);
  53. double bLSpeed = speedCap(speed, balanceReduction, true);
  54. double bRSpeed = speedCap(speed, balanceReduction, true);
  55. robot.fLMotor.setPower(fLSpeed);
  56. robot.fRMotor.setPower(-fRSpeed);
  57. robot.bLMotor.setPower(-bLSpeed);
  58. robot.bRMotor.setPower(bRSpeed);
  59. }
  60.  
  61. // keep looping while we are still active, and BOTH motors are running.
  62. // while (opModeIsActive() &&
  63. // (robot.fLMotor.isBusy() && robot.fRMotor.isBusy() && robot.bLMotor.isBusy() && robot.bRMotor.isBusy())) {
  64. //
  65. // // adjust relative speed based on heading error.
  66. // error = getError(angle);
  67. //
  68. // if (Math.abs(error) < gyroDriveThreshold) {
  69. // error = 0;
  70. // }
  71. // steer = -getSteer(error, P_DRIVE_COEFF);
  72. //
  73. // // if driving in reverse, the motor correction also needs to be reversed
  74. // if (distance < 0)
  75. // steer *= -1.0;
  76. //
  77. // leftSpeed = speed + steer;
  78. // rightSpeed = speed - steer;
  79. //
  80. // //makes first 100 counts faster bc drive takes a lot of time to accelerate
  81. //
  82. // // Normalize speeds if either one exceeds +/- 1.0;
  83. // max = Math.max(Math.abs(leftSpeed), Math.abs(rightSpeed));
  84. // if (max > 1.0) {
  85. // leftSpeed /= max;
  86. // rightSpeed /= max;
  87. // }
  88. //
  89. // leftSpeed *= speedMult;
  90. // rightSpeed *= speedMult;
  91. //
  92. // robot.fLMotor.setPower(rightSpeed);
  93. // robot.fRMotor.setPower(-rightSpeed);
  94. // robot.bLMotor.setPower(-leftSpeed);
  95. // robot.bRMotor.setPower(leftSpeed);
  96.  
  97. // Display drive status for the driver.
  98. //telemetry.addData("Err/St", "%5.1f/%5.1f", error, steer);
  99. normalDrive(0, 0); // stops it after 1 second
  100. turnToPosition(-angle, "z", turnSpeed, 4); //corrects at the end of each motion set
  101. //telemetry.addData("Target", "%7d:%7d:%7d:%7d", fLTarget, fRTarget, bLTarget, bRTarget);
  102. telemetry.addData("Actual", "%7d:%7d:%7d:%7d", robot.fLMotor.getCurrentPosition(),
  103. robot.fRMotor.getCurrentPosition(), robot.bLMotor.getCurrentPosition(), robot.bRMotor.getCurrentPosition());
  104. //telemetry.addData("Speed", "%5.2f:%5.2f", leftSpeed, rightSpeed);
  105. telemetry.addData("Angle", angle);
  106. telemetry.update();
  107. }
  108.  
  109. // Stop all motion;
  110. normalDrive(0, 0);
  111.  
  112. //correct for drift during drive
  113. turnToPosition(-angle, "z", turnSpeed, 4);
  114.  
  115. // Turn off RUN_TO_POSITION
  116. stopAndReset();
  117. }
  118. }
  119.  
  120.  
  121. public double speedCap(double speed, double balanceReduction, boolean AddSubstract)
  122. {
  123. double fLSpeed;
  124. if(AddSubstract)
  125. {
  126. fLSpeed = speed + balanceReduction;
  127. }
  128. else
  129. {
  130. fLSpeed = speed - balanceReduction;
  131. }
  132.  
  133. if(fLSpeed > 1)
  134. {
  135. fLSpeed = 1;
  136. }
  137. else if(fLSpeed < .1)
  138. {
  139. fLSpeed = .1;
  140. }
  141. return fLSpeed;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement