Guest User

Untitled

a guest
Jul 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. package org.termi;
  2. import lejos.nxt.*;
  3. import lejos.util.*;
  4. import lejos.robotics.navigation.*;
  5. public class Brain {
  6. private static double kp = 10;
  7. private static double kd = 2;
  8. private static double ki = 2;
  9. private static double speed = 100; // 0 - 100
  10. private static double soll = 0;//null abweichung, wenn notwendig ändern
  11.  
  12. private static double m_p;
  13. private static double m_i;
  14.  
  15. private static long abtastRate = 2000; // in ms
  16.  
  17. private static int ERROR_ROW = 0;
  18. private static int Y_ROW = 1;
  19. private static double ealt = 0;
  20. private static double esum = 0;
  21. private static double error()
  22. {
  23. LightSensor s1 = new LightSensor(SensorPort.S2);//links
  24. LightSensor s2 = new LightSensor(SensorPort.S3);//rechts
  25.  
  26. int links = s1.readNormalizedValue();
  27. int rechts = s2.readNormalizedValue();
  28. int error = -links + rechts;
  29. LCD.drawString(String.valueOf(error), 0, ERROR_ROW);
  30. return error;
  31. }
  32. private static void move()
  33. {
  34. double e = error();
  35. esum = esum + e;
  36. double y = kp * e + ki * abtastRate * esum + kd * (e-ealt)/abtastRate;
  37. LCD.drawString(String.valueOf(y), 0, Y_ROW);
  38. ealt = e;
  39.  
  40. //move
  41. }
  42.  
  43. public static void main (String[] args) {
  44. System.out.println("Hello World");
  45. Pilot pilot = new TachoPilot(2.1f, 4.4f, Motor.B, Motor.C, true);
  46. SimpleNavigator tn = new SimpleNavigator(pilot);
  47. for(int i = 0; i < 2; i++) {
  48. tn.forward();
  49. Delay.msDelay(1000);
  50. tn.stop();
  51.  
  52. double e = error();
  53. esum = esum + e;
  54. double y = kp * e + ki * abtastRate * esum + kd * (e-ealt)/abtastRate;
  55. LCD.drawString(String.valueOf(y), 0, Y_ROW);
  56. ealt = e;
  57.  
  58. }
  59. for(int i = 0; i < 2; i++) {
  60. tn.backward();
  61. Delay.msDelay(1000);
  62. tn.stop();
  63.  
  64. double e = error();
  65. esum = esum + e;
  66. double y = kp * e + ki * abtastRate * esum + kd * (e-ealt)/abtastRate;
  67. LCD.drawString(String.valueOf(y), 0, Y_ROW);
  68. ealt = e;
  69.  
  70. }
  71. tn.stop();
  72. }
  73.  
  74. }
Add Comment
Please, Sign In to add comment