Alekal

Untitled

Dec 19th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.24 KB | None | 0 0
  1. """POLARIS."""
  2. from PiBot import PiBot
  3. import rospy
  4. robot = PiBot()
  5.  
  6.  
  7. print("It's gonna be good...")
  8. rospy.sleep(1)
  9. middle_sensor = robot.get_front_middle_ir()
  10. problem_solved = False
  11. list_of_buffer = []
  12. if robot.is_simulation():
  13.     speed = 16
  14. else:
  15.     speed = 10
  16.  
  17.  
  18. def to_filter_sensors():
  19.     """Buffer."""
  20.     global list_of_buffer
  21.     if len(list_of_buffer) < 15:
  22.         list_of_buffer.append(middle_sensor)
  23.     elif len(list_of_buffer) == 15:
  24.         list_of_buffer.pop(0)
  25.         list_of_buffer.append(middle_sensor)
  26.     return sum(list_of_buffer) / len(list_of_buffer)
  27.  
  28.  
  29. def looking_for_some_juice_object():
  30.     """Find object."""
  31.     global middle_sensor
  32.     global problem_solved
  33.     previous_distance = middle_sensor
  34.     diff = previous_distance - middle_sensor
  35.     while diff < 0.5 and not problem_solved:
  36.         print(round(to_filter_sensors(), 3))
  37.         previous_distance = middle_sensor
  38.         robot.set_right_wheel_speed(-speed)
  39.         robot.set_left_wheel_speed(speed)
  40.         rospy.sleep(0.05)
  41.         middle_sensor = robot.get_front_middle_ir()
  42.         diff = previous_distance - middle_sensor
  43.         buffer = to_filter_sensors()
  44.         dif_from_buff = middle_sensor - buffer
  45.         if dif_from_buff < 0.02 and middle_sensor < 0.6:
  46.             break
  47.         elif middle_sensor < 0.3:
  48.             break
  49.  
  50.  
  51. def running_in_the_90s():
  52.     """Go to this object."""
  53.     print("Speed to max, cause I see object.")
  54.     global middle_sensor
  55.     global problem_solved
  56.     buffer_average = to_filter_sensors()
  57.     left_encoder_start = robot.get_left_wheel_encoder()
  58.     right_encoder_start = robot.get_right_wheel_encoder()
  59.     while buffer_average > 0.3 and not problem_solved:
  60.         if middle_sensor > 0.9:
  61.             rospy.sleep(0.1)
  62.             looking_for_some_juice_object()
  63.             left_encoder_start = robot.get_left_wheel_encoder()
  64.             right_encoder_start = robot.get_right_wheel_encoder()
  65.         else:
  66.             print("Middle sensor: " + str(round(middle_sensor, 3)) + ", " + "Some filtered value: " + str(round(buffer_average, 3)))
  67.             left_encoder = robot.get_left_wheel_encoder()
  68.             right_encoder = robot.get_right_wheel_encoder()
  69.             left_encoder_change = left_encoder - left_encoder_start
  70.             right_encoder_change = right_encoder - right_encoder_start
  71.             problem = right_encoder_change - left_encoder_change
  72.             left_encoder_start = robot.get_left_wheel_encoder()
  73.             right_encoder_start = robot.get_right_wheel_encoder()
  74.             robot.set_left_wheel_speed(int(speed + round((problem / 2) / speed)))
  75.             robot.set_right_wheel_speed(int(speed - round((problem / 2) / speed)))
  76.             rospy.sleep(0.05)
  77.             middle_sensor = robot.get_front_middle_ir()
  78.             buffer_average = to_filter_sensors()
  79.     rospy.sleep(0.05)
  80.  
  81.  
  82. while True:
  83.     while not problem_solved:
  84.         if middle_sensor > 0.3 and not problem_solved:
  85.             looking_for_some_juice_object()
  86.             running_in_the_90s()
  87.             average = to_filter_sensors()
  88.         rospy.sleep(0.5)
  89.         problem_solved = True
  90.         print("Nothing personal kid, but I need to stop here...")
  91.         robot.set_wheels_speed(0)
Advertisement
Add Comment
Please, Sign In to add comment