707c77822cb80017145c9b6064c27648 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 == -90 || ang == 90) add *= -1;
  21. try {
  22. Thread.sleep(100);
  23. } catch (InterruptedException e) {
  24. }
  25. }
  26. }
  27. }
  28. public VirtualRobot(LineMap map) {
  29. simthread = new Simulate();
  30. pose = new Pose();
  31. pose.setHeading(90);
  32. }
  33. @Override
  34. public void moveForward() {
  35. double dx = Math.sin(Math.toRadians(pose.getHeading()))*5;
  36. double dy = Math.cos(Math.toRadians(pose.getHeading()))*5;
  37. pose.translate((float)dx, (float)dy);
  38. }
  39. @Override
  40. public void moveLeft() {
  41. pose.rotateUpdate(45);
  42. }
  43. @Override
  44. public void moveRight() {
  45. pose.rotateUpdate(-45);
  46. }
  47. @Override
  48. public void moveBackward() {
  49. double dx = Math.sin(Math.toRadians(pose.getHeading()))*5;
  50. double dy = Math.cos(Math.toRadians(pose.getHeading()))*5;
  51. pose.translate((float)-dx, (float)-dy);
  52. }
  53. @Override
  54. public boolean connect(RobotReturn r) {
  55. rr = r;
  56. simthread.start();
  57. return true;
  58. }
  59. @Override
  60. public void stop() {
  61. }
  62. @Override
  63. public void exit() {
  64. simthread.run = false;
  65. try {
  66. simthread.join();
  67. } catch (InterruptedException e) {
  68. // TODO Auto-generated catch block
  69. e.printStackTrace();
  70. }
  71. }
  72. }