Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. import rospy
  2. from PiBot import PiBot
  3.  
  4.  
  5. class Robot:
  6. """
  7. The three primitives robotic paradigm: sense, plan, act [1].
  8. Sense - gather information using the sensors
  9. Plan - create a world model using all the information and plan the next move
  10. Act - carry out the next step of the plan using actuators
  11. [1] https://en.wikipedia.org/wiki/Robotic_paradigm
  12. """
  13.  
  14. def __init__(self):
  15. print("Initializing...")
  16. self.robot = PiBot()
  17. self.start_timestamp = rospy.get_time()
  18. self.problem_solved = False
  19.  
  20. def sense(self):
  21. l_straight = self.robot.get_rear_left_straight_ir()
  22. left = self.robot.get_rear_left_side_ir()
  23. right = self.robot.get_rear_right_side_ir()
  24. return (l_straight, left, right)
  25.  
  26. def plan(self):
  27. print("Planning...")
  28.  
  29. def act(self):
  30. print("Acting...")
  31. rospy.sleep(0.5)
  32. while True:
  33. self.sense()
  34. if self.robot.get_rear_left_straight_ir() < 0.15:
  35. self.robot.set_wheels_speed(0)
  36. rospy.sleep(0.2)
  37. print("Should start turning")
  38. #self.turn()
  39. if self.robot.get_rear_left_side_ir() > 0.9 and self.robot.get_rear_right_side_ir() > 0.9:
  40. self.problem_solved = True
  41. self.robot.set_wheels_speed(0)
  42. self.main()
  43. while self.robot.get_rear_left_side_ir() >= 0.1 and self.robot.get_rear_right_side_ir() <= 0.2:
  44. print('Moving near the wall.')
  45. print(self.robot.get_front_left_ir())
  46. self.robot.set_wheels_speed(-15)
  47. # vaata et vasakusse või paremasse seina ei sõidaks
  48. while self.robot.get_rear_left_side_ir() < 0.14:
  49. self.robot.set_left_wheel_speed(-14)
  50. self.robot.set_right_wheel_speed(-16)
  51. while self.robot.get_rear_left_side_ir() > 0.16:
  52. self.robot.set_left_wheel_speed(-16)
  53. self.robot.set_right_wheel_speed(-14)
  54.  
  55. # def turn_left(self):
  56. # left_side = self.robot.get_front_left_ir()
  57. # right_side = self.robot.get_front_right_ir()
  58. # left_enc = self.robot.get_left_wheel_encoder()
  59. # if left_side > right_side:
  60. # print("left turn")
  61. # while self.robot.get_left_wheel_encoder() < left_enc + 505:
  62. # self.robot.set_left_wheel_speed(-15)
  63. # self.robot.set_right_wheel_speed(15)
  64. # print("finished turning")
  65. # self.robot.set_wheels_speed(0)
  66. # rospy.sleep(2)
  67. # self.main()
  68. #
  69. # def turn_right(self):
  70. # left_side = self.robot.get_front_left_ir()
  71. # right_side = self.robot.get_front_right_ir()
  72. # left_enc = self.robot.get_left_wheel_encoder()
  73. # if left_side < right_side:
  74. # print("right turn")
  75. # while self.robot.get_left_wheel_encoder() < left_enc + 505:
  76. # self.robot.set_left_wheel_speed(15)
  77. # self.robot.set_right_wheel_speed(-15)
  78. # print("finished turning")
  79. # self.robot.set_wheels_speed(0)
  80. # rospy.sleep(2)
  81. # self.main()
  82.  
  83. def main(self):
  84. while self.problem_solved is False:
  85. self.sense()
  86. self.plan()
  87. self.act()
  88. rospy.sleep(0.05) # 20 Hz
  89. if self.problem_solved:
  90. print("Solved! Good job, robot!")
  91. exit()
  92. else:
  93. print("Unable to solve! :(")
  94.  
  95.  
  96. if __name__ == "__main__":
  97. robot = Robot()
  98. robot.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement