@@ -52,22 +52,67 @@ def speed(self):
52
52
return (l_speed + r_speed ) / 2
53
53
54
54
# MOVEMENT
55
- def control (self , power_left = 100 , power_right = 100 , time_elapse = 0 ):
56
-
57
- self ._left_motor .control (power_left , time_elapse )
58
- self ._right_motor .control (power_right , time_elapse )
55
+ def control_time (self , power_left = 100 , power_right = 100 , time_elapse = 0 ):
56
+ self ._wheelsAxle_lock .acquire ()
57
+ self ._left_motor .control (power_left )
58
+ self ._right_motor .control (power_right )
59
+ self ._is_moving = True
60
+
61
+ if (time_elapse > 0 ):
62
+ sleep (time_elapse )
63
+ self .stop ()
64
+
65
+ def control_distance (self , power_left = 100 , power_right = 100 , target_distance = 0 ):
66
+ self ._wheelsAxle_lock .acquire ()
59
67
self ._is_moving = True
60
68
61
- if (time_elapse > 0 ):
62
- sleep (time_elapse )
63
- self .stop ()
69
+ self ._left_motor .control (power_left )
70
+ self ._right_motor .control (power_right )
71
+
72
+ while (target_distance > 0 ):
73
+ target_distance = target_distance - self .distance ()
74
+ print (str (target_distance ))
75
+
76
+ self .stop ()
77
+
78
+ # def control_distance(self, power_left = 100, power_right = 100, target_distance = 0):
79
+ # self._is_moving = True
80
+ # delta = 1
81
+ #
82
+ # while(target_distance > 0):
83
+ #
84
+ # self._left_motor.control(min(max(power_left * delta, power_left), 100))
85
+ # self._right_motor.control(min(max(power_right * delta, power_right), 100))
86
+ #
87
+ # print("Target distance: " + str(target_distance))
88
+ # print("Power left: " + str(power_left * delta))
89
+ # print("Power right: " + str(power_right * delta))
90
+ #
91
+ # sleep(.2)
92
+ #
93
+ # try:
94
+ # delta = self._left_motor.ticks() / self._right_motor.ticks()
95
+ # target_distance = target_distance - self.distance()
96
+ # except:
97
+ # delta = 1
98
+ #
99
+ # print("delta_ticks: " + str(delta))
100
+ # print("new target distance: " + str(target_distance))
101
+ # print("")
102
+ #
103
+ # print("Stopping...")
104
+ # self.stop()
64
105
65
106
""" The stop function calls the two stop functions of the two
66
- correspondent motors """
107
+ correspondent motors
108
+ locks are automatically obtained """
67
109
def stop (self ):
68
110
self ._left_motor .stop ()
69
111
self ._right_motor .stop ()
112
+ print (self ._left_motor .distance ())
113
+ print (self ._right_motor ._distance )
70
114
self ._is_moving = False
115
+ self ._wheelsAxle_lock .release ()
71
116
72
117
# CALLBACK
73
118
0 commit comments