Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include "C:\Users\clove\Desktop\X4\include\main.h"
  2. #include "pidVelSystem.hpp"
  3. #include "C:\Users\clove\Desktop\X4\src\robotUtil\initRobot.hpp"
  4. //Motor* flywheel = new okapi::Motor(7);
  5. double flywheelRatio = 5;
  6. using namespace flywheelLib;
  7. flywheelLib::velPID* pid = new flywheelLib::velPID(0.5, 0.05, 0.055, 0.9);
  8.  
  9. flywheelLib::emaFilter* rpmFilter = new flywheelLib::emaFilter(0.15);
  10.  
  11. double motorSlew = 0.7;
  12.  
  13.  
  14.  
  15. double targetRPM = 200;
  16.  
  17. double currentRPM = 0;
  18.  
  19. double lastPower = 0;
  20.  
  21. double motorPower = 0;
  22.  
  23. double error = 0;
  24.  
  25. float driveVar;
  26. float gain;
  27. long firstCross;
  28. float driveApprox;
  29. double lastError = 0;
  30. float driveZero;
  31. float predictedDrive = 0.5;
  32. void setFlywheelVelocity(double inputRPM){
  33. targetRPM = inputRPM;
  34. error = targetRPM - currentRPM;
  35. lastError = error;
  36. driveApprox = predictedDrive;
  37. firstCross = 1;
  38. driveZero = 0;
  39.  
  40. }
  41. void flywheelControl()
  42.  
  43. {
  44. if(motorPower <= 0) motorPower = 0;
  45.  
  46.  
  47. //currentRPM = rpmFilter->filter(flywheel->getActualVelocity() * flywheelRatio);
  48. currentRPM = flywheel->getActualVelocity();
  49. error = targetRPM - currentRPM;
  50. driveVar = driveVar + (error * gain);
  51.  
  52. if((sgn(error) != sgn(lastError))){
  53. if(firstCross){
  54. firstCross = 0;
  55. driveVar = driveApprox;
  56. } else{
  57.  
  58. driveVar = 0.5*(driveVar + driveZero);
  59. }
  60. driveZero = driveVar;
  61. }
  62. lastError = error;
  63.  
  64.  
  65.  
  66.  
  67.  
  68. }
  69.  
  70. void flywheelControlTask(void*param){
  71. gain = 0.0005;
  72. while(true){
  73. setFlywheelVelocity(200);
  74. flywheelControl();
  75. if (motorPower > 127) {
  76. motorPower = 127;
  77. }
  78. motorPower = (driveVar*127);
  79. flywheel->move(motorPower);
  80. std::cout << motorPower << "\n";
  81. pros::delay(1000);
  82. }
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement