903d0c74c3b90017124d9f37712eb7c1 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package robots;
  2. import lejos.robotics.mapping.LineMap;
  3. import lejos.robotics.navigation.Pose;
  4. public class VirtualRobot implements Robot {
  5. private Pose pose;
  6. private Simulate simthread;
  7. private RobotReturn rr;
  8. private class Simulate extends Thread {
  9. public boolean run = true;
  10. public void run() {
  11. int ang = 0;
  12. int add = -5;
  13. while (run) {
  14. DataPose data = new DataPose();
  15. data.setDistance(60);
  16. data.setPose(pose);
  17. data.setSensorAngle(ang);
  18. rr.robotData(data);
  19. ang += add;
  20. if (ang == -180 || ang == 0)
  21. add *= -1;
  22. try {
  23. Thread.sleep(100);
  24. } catch (InterruptedException e) {
  25. }
  26. }
  27. }
  28. }
  29. public VirtualRobot(LineMap map) {
  30. simthread = new Simulate();
  31. pose = new Pose();
  32. pose.setHeading(90);
  33. }
  34. @Override
  35. public void moveForward() {
  36. double dx = Math.sin(Math.toRadians(pose.getHeading())) * 5;
  37. double dy = Math.cos(Math.toRadians(pose.getHeading())) * 5;
  38. pose.translate((float) dx, (float) -dy);
  39. }
  40. @Override
  41. public void moveLeft() {
  42. pose.rotateUpdate(45);
  43. }
  44. @Override
  45. public void moveRight() {
  46. pose.rotateUpdate(-45);
  47. }
  48. @Override
  49. public void moveBackward() {
  50. double dx = Math.sin(Math.toRadians(pose.getHeading())) * 5;
  51. double dy = Math.cos(Math.toRadians(pose.getHeading())) * 5;
  52. pose.translate((float) -dx, (float) dy);
  53. }
  54. @Override
  55. public boolean connect(RobotReturn r) {
  56. rr = r;
  57. simthread.start();
  58. return true;
  59. }
  60. @Override
  61. public void stop() {
  62. }
  63. @Override
  64. public void exit() {
  65. simthread.run = false;
  66. try {
  67. simthread.join();
  68. } catch (InterruptedException e) {
  69. // TODO Auto-generated catch block
  70. e.printStackTrace();
  71. }
  72. }
  73. }