70201882c3b90017124d9f37712eb7c1 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package robots;
  2. import java.util.ArrayList;
  3. import lejos.robotics.mapping.LineMap;
  4. import lejos.robotics.navigation.Pose;
  5. public class VirtualRobot implements Robot {
  6. private Pose pose;
  7. private Simulate simthread;
  8. private RobotReturn rr;
  9. private class Simulate extends Thread {
  10. public boolean run = true;
  11. public void run() {
  12. int ang = 0;
  13. int add = -5;
  14. while (run) {
  15. DataPose data = new DataPose();
  16. data.setDistance(60);
  17. data.setPose(pose);
  18. data.setSensorAngle(ang);
  19. rr.robotData(data);
  20. ang += add;
  21. if (ang == -180 || ang == 0)
  22. add *= -1;
  23. try {
  24. Thread.sleep(100);
  25. } catch (InterruptedException e) {
  26. }
  27. }
  28. }
  29. }
  30. public VirtualRobot(LineMap map) {
  31. simthread = new Simulate();
  32. pose = new Pose();
  33. pose.setHeading(90);
  34. }
  35. @Override
  36. public void moveForward() {
  37. double dx = Math.sin(Math.toRadians(pose.getHeading())) * 5;
  38. double dy = Math.cos(Math.toRadians(pose.getHeading())) * 5;
  39. pose.translate((float) dx, (float) -dy);
  40. }
  41. @Override
  42. public void moveLeft() {
  43. pose.rotateUpdate(45);
  44. }
  45. @Override
  46. public void moveRight() {
  47. pose.rotateUpdate(-45);
  48. }
  49. @Override
  50. public void moveBackward() {
  51. double dx = Math.sin(Math.toRadians(pose.getHeading())) * 5;
  52. double dy = Math.cos(Math.toRadians(pose.getHeading())) * 5;
  53. pose.translate((float) -dx, (float) dy);
  54. }
  55. @Override
  56. public boolean connect(RobotReturn r) {
  57. rr = r;
  58. simthread.start();
  59. return true;
  60. }
  61. @Override
  62. public void stop() {
  63. }
  64. @Override
  65. public void exit() {
  66. simthread.run = false;
  67. try {
  68. simthread.join();
  69. } catch (InterruptedException e) {
  70. // TODO Auto-generated catch block
  71. e.printStackTrace();
  72. }
  73. }
  74. @Override
  75. public void move(double x) {
  76. // TODO Auto-generated method stub
  77. }
  78. @Override
  79. public void rotate(double x) {
  80. // TODO Auto-generated method stub
  81. }
  82. @Override
  83. public ArrayList<DataPose> scann(int ini, int end, int interval) {
  84. // TODO Auto-generated method stub
  85. return null;
  86. }
  87. @Override
  88. public void scann(RobotReturn r) {
  89. // TODO Auto-generated method stub
  90. }
  91. @Override
  92. public void stopScann() {
  93. // TODO Auto-generated method stub
  94. }
  95. @Override
  96. public void disconnect() {
  97. // TODO Auto-generated method stub
  98. }
  99. }