You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 line
3.3KB

  1. #!/usr/bin/python
  2. from time import sleep
  3. from iot_car import Iot_car
  4. from ikt_car_sensorik import Value_collector
  5. car = Iot_car(testmode=False)
  6. vc = Value_collector()
  7. def is_state_save(vc):
  8. return True
  9. distance_front = vc.ultrasonic_front.distance
  10. distance_back = vc.ultrasonic_back.distance
  11. if distance_front > 10 and distance_back > 10:
  12. return True
  13. return False
  14. def stop(vc, car):
  15. print 'danger'
  16. car.set_angle(0)
  17. car.accelerate(0)
  18. vc.stop()
  19. exit(0)
  20. def website_stop():
  21. car.set_angle(0)
  22. car.accelerate(0)
  23. vc.stop()
  24. def park_lite():
  25. car.set_angle(0)
  26. car.accelerate(0)
  27. try:
  28. bearing_start = vc.compass.bearing
  29. # steeling right
  30. car.set_angle(45)
  31. sleep(0.2)
  32. print
  33. 'Backward'
  34. car.accelerate(-5)
  35. while is_state_save(vc) and not (vc.compass.bearing <= bearing_start - 45):
  36. sleep(0.1)
  37. if not is_state_save(vc):
  38. stop(vc, car)
  39. print
  40. 'stop'
  41. car.accelerate(0)
  42. sleep(0.1)
  43. car.set_angle(-45)
  44. sleep(0.1)
  45. print
  46. 'Backward'
  47. car.accelerate(-5)
  48. while is_state_save(vc) and not (vc.compass.bearing >= bearing_start):
  49. sleep(0.1)
  50. if not is_state_save(vc):
  51. stop(vc, car)
  52. print
  53. 'stop'
  54. car.accelerate(0)
  55. print
  56. 'end'
  57. car.accelerate(0)
  58. car.set_angle(0)
  59. except KeyboardInterrupt:
  60. car.accelerate(0)
  61. car.set_angle(0)
  62. vc.stop()
  63. exit(0)
  64. car.accelerate(0)
  65. car.set_angle(0)
  66. vc.stop()
  67. exit(0)
  68. def park():
  69. car = Iot_car(testmode=False)
  70. vc = Value_collector()
  71. car.accelerate(0)
  72. car.set_angle(0)
  73. #angle_offset = -10
  74. print 'Wait for Values'
  75. sleep(10)
  76. print 'Dist Front: ' + str(vc.ultrasonic_front.distance)
  77. print 'Dist Back: ' + str(vc.ultrasonic_back.distance)
  78. speed = 4
  79. car.set_angle(0)
  80. car.accelerate(0)
  81. try:
  82. # drive forward an find gab
  83. print 'Forward'
  84. car.accelerate(0)
  85. while is_state_save(vc) and not vc.infrared.passed_gab:
  86. print vc.infrared.distance
  87. print vc.infrared.passed_gab
  88. sleep(0.1)
  89. if not is_state_save(vc):
  90. stop(vc, car)
  91. print 'stop'
  92. car.accelerate(0)
  93. bearing_start = vc.compass.bearing
  94. # steeling right
  95. car.set_angle(45)
  96. print 'Backward'
  97. car.accelerate(-5)
  98. while is_state_save(vc) and not (vc.compass.bearing <= bearing_start - 45):
  99. sleep(0.1)
  100. if not is_state_save(vc):
  101. stop(vc, car)
  102. print 'stop'
  103. car.accelerate(0)
  104. car.set_angle(-45)
  105. print 'Backward'
  106. car.accelerate(-5)
  107. while is_state_save(vc) and not (vc.compass.bearing >= bearing_start):
  108. sleep(0.1)
  109. if not is_state_save(vc):
  110. stop(vc, car)
  111. print 'stop'
  112. car.accelerate(0)
  113. print 'end'
  114. car.accelerate(0)
  115. car.set_angle(0)
  116. except KeyboardInterrupt:
  117. car.accelerate(0)
  118. car.set_angle(0)
  119. vc.stop()
  120. exit(0)
  121. car.accelerate(0)
  122. car.set_angle(0)
  123. vc.stop()
  124. exit(0)
  125. if __name__ == "__main__":
  126. park()