Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. """Objektid."""
  2. from PiBot import PiBot
  3. import math
  4.  
  5. robot = PiBot()
  6.  
  7. speed = 10
  8. sleep = 0.05
  9. robot.set_grabber_height(100)
  10. buffer = 0.1
  11.  
  12. """
  13. get_front_left_laser()
  14. get_front_middle_laser()
  15. get_front_right_laser()
  16. get_front_lasers()
  17. """
  18.  
  19.  
  20. def anti_left():
  21. """Robot spins/ turns backwards left."""
  22. global speed
  23. robot.set_left_wheel_speed(speed)
  24. robot.set_right_wheel_speed(-speed)
  25. robot.sleep(sleep)
  26.  
  27.  
  28. def left():
  29. """Robot spins/ turns left."""
  30. global speed
  31. robot.set_left_wheel_speed(-speed)
  32. robot.set_right_wheel_speed(speed)
  33. robot.sleep(sleep)
  34.  
  35.  
  36. def straight():
  37. """Robot moves straight."""
  38. robot.set_wheels_speed(speed)
  39. robot.sleep(sleep)
  40.  
  41.  
  42. def solve_triangle(a, b, angle):
  43. """Find side and angle of current triangle."""
  44. radian_angle = math.radians(angle)
  45. side = math.sqrt(a ** 2 + b ** 2 + 2 * a * b * math.cos(radian_angle))
  46. return side
  47.  
  48.  
  49. def position_finder(master_list):
  50. """Scan the list and find the objects."""
  51. print("alustan position finderit")
  52. list_of_objects = []
  53. biggest_change = master_list[0][0]
  54. last_biggest = []
  55. current_biggest = []
  56. for i in master_list:
  57. if i[0] > biggest_change:
  58. last_biggest = current_biggest
  59. biggest_change = i[0]
  60. current_biggest = i
  61. list_of_objects.append(current_biggest)
  62. list_of_objects.append(last_biggest)
  63. return list_of_objects
  64.  
  65.  
  66. def make_master_list():
  67. """Spin around and make a list of, what u see."""
  68. global buffer
  69. b = robot.get_front_middle_laser()
  70. a = robot.get_front_middle_laser()
  71. list_of_everything = []
  72. while abs(robot.get_rotation()) < 360:
  73. if (a - b) < 0.3 and a < 0.7 and b < 0.7:
  74. xx = 360 - robot.get_rotation()
  75. print(f"Delta middle laser = {a - b}")
  76. print(f"Delta encoder = {xx}")
  77. print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
  78. list_of_everything.append([a - b, xx, b])
  79. a = b
  80. b = robot.get_front_middle_laser()
  81. left()
  82. print("ring sai tΓ€is")
  83. print(list_of_everything)
  84. robot.set_wheels_speed(0)
  85. return list_of_everything
  86.  
  87.  
  88. def turn_back(two_object_list):
  89. """Turn back to the rotation, where the object is."""
  90. print("alustasin turn backi")
  91. place = two_object_list[0][1]
  92. while (360 - (robot.get_rotation())) < place:
  93. anti_left()
  94. print(f" rotation = {360 - robot.get_rotation()}")
  95. robot.set_wheels_speed(0)
  96. print("Asukoht lukus")
  97.  
  98.  
  99. def encoder_finder(distance):
  100. """How many degrees needed to spin."""
  101. robot.close_grabber(0)
  102. a = robot.get_left_wheel_encoder()
  103. b = robot.WHEEL_DIAMETER
  104. c = 3.14 * b
  105. d = distance / c
  106. e = d * 360
  107. while robot.get_left_wheel_encoder() < a + e:
  108. straight()
  109. robot.set_wheels_speed(0)
  110.  
  111.  
  112. def move_to_object(two_object_list):
  113. """Robot goes to object and corrects itself."""
  114. print("alustan move to object")
  115. distance = two_object_list[0][2]
  116. robot.close_grabber(0)
  117. encoder_finder(distance)
  118. # while robot.get_front_middle_laser() > 0.1:
  119. # straight()
  120. # print(robot.get_front_middle_laser())
  121. robot.set_wheels_speed(0)
  122. print("kohal!!!")
  123.  
  124.  
  125. def turn_to_correct_angle(two_object_list):
  126. """When next to the object turn to the correct angle."""
  127. angle = two_object_list[0][1] - two_object_list[1][1]
  128. needed_angle = 60 - angle
  129. start_rotation = robot.get_rotation()
  130. while start_rotation + needed_angle < robot.get_rotation():
  131. anti_left()
  132.  
  133.  
  134. def back_to_correct_place(two_object_list):
  135. """Back out to the correct location until laser sees same distance as length between two objects."""
  136. first_length = two_object_list[0][2]
  137. second_length = two_object_list[1][2]
  138. angle = two_object_list[0][1] - two_object_list[1][1]
  139. correct_length = solve_triangle(first_length, second_length, angle)
  140. encoder_finder(correct_length)
  141.  
  142.  
  143. list_of_everything = make_master_list()
  144. list_of_objects = position_finder(list_of_everything)
  145.  
  146. print(f"first object positions = {list_of_objects[0]}")
  147. print(f"first object positions = {list_of_objects[1]}")
  148. turn_back(list_of_objects)
  149. move_to_object(list_of_objects)
  150. turn_to_correct_angle(list_of_objects)
  151. back_to_correct_place(list_of_objects)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement