Skip to content

Commit b13d935

Browse files
committed
Coderbot can now move for certain distance or time
1 parent cc146c7 commit b13d935

File tree

2 files changed

+41
-21
lines changed

2 files changed

+41
-21
lines changed

coderbot.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
# GPIO
2929
# motors
3030
PIN_MOTOR_ENABLE = 22
31-
PIN_LEFT_FORWARD = 24
32-
PIN_LEFT_BACKWARD = 25
33-
PIN_RIGHT_FORWARD = 17
34-
PIN_RIGHT_BACKWARD = 4
31+
PIN_LEFT_FORWARD = 25
32+
PIN_LEFT_BACKWARD = 24
33+
PIN_RIGHT_FORWARD = 4
34+
PIN_RIGHT_BACKWARD = 17
3535
#?
3636
PIN_PUSHBUTTON = 11
3737
# servo
@@ -96,7 +96,7 @@ def __init__(self, motor_trim_factor=1.0, encoder=True):
9696
except IOError:
9797
logging.info("MPU not available")
9898

99-
self.stop()
99+
#self.stop()
100100
self._is_moving = False
101101

102102
the_bot = None
@@ -114,35 +114,35 @@ def get_instance(cls, servo=False, motor_trim_factor=1.0):
114114
cls.the_bot = CoderBot(servo, motor_trim_factor)
115115
return cls.the_bot
116116

117-
def move(self, speed=100, elapse=-1):
117+
def move(self, speed=100, time_elapse=0, target_distance=0):
118118
speed_left = min(100, max(-100, speed * self._motor_trim_factor))
119119
speed_right = min(100, max(-100, speed / self._motor_trim_factor))
120-
self.motor_control(speed_left=speed_left, speed_right=speed_right, elapse=elapse)
120+
self.motor_control(speed_left=speed_left, speed_right=speed_right, time_elapse=time_elapse, target_distance=target_distance)
121121

122-
def turn(self, speed=100, elapse=-1):
122+
def turn(self, speed=100, time_elapse=0):
123123
speed_left = min(100, max(-100, speed * self._motor_trim_factor))
124124
speed_right = -min(100, max(-100, speed / self._motor_trim_factor))
125-
self.motor_control(speed_left=speed_left, speed_right=speed_right, elapse=elapse)
125+
self.motor_control(speed_left=speed_left, speed_right=speed_right, time_elapse=time_elapse)
126126

127127
def turn_angle(self, speed=100, angle=0):
128128
z = self._ag.get_gyro_data()['z']
129-
self.turn(speed, elapse=-1)
129+
self.turn(speed, time_elapse=0)
130130
while abs(z - self._ag.get_gyro_data()['z']) < angle:
131131
time.sleep(0.05)
132132
logging.info(self._ag.get_gyro_data()['z'])
133133
self.stop()
134134

135-
def forward(self, speed=100, elapse=-1):
136-
self.move(speed=speed, elapse=elapse)
135+
def forward(self, speed=100, time_elapse=0):
136+
self.move(speed=speed, time_elapse=time_elapse)
137137

138-
def backward(self, speed=100, elapse=-1):
139-
self.move(speed=-speed, elapse=elapse)
138+
def backward(self, speed=100, time_elapse=0):
139+
self.move(speed=-speed, time_elapse=elapse)
140140

141-
def left(self, speed=100, elapse=-1):
142-
self.turn(speed=-speed, elapse=elapse)
141+
def left(self, speed=100, time_elapse=0):
142+
self.turn(speed=-speed, time_elapse=time_elapse)
143143

144-
def right(self, speed=100, elapse=-1):
145-
self.turn(speed=speed, elapse=elapse)
144+
def right(self, speed=100, time_elapse=0):
145+
self.turn(speed=speed, time_elapse=time_elapse)
146146

147147
def get_sonar_distance(self, sonar_id=0):
148148
return self.sonar[sonar_id].get_distance()
@@ -187,5 +187,8 @@ def restart(self):
187187
def reboot(self):
188188
os.system('sudo reboot')
189189

190-
def _dc_enc_motor(self, speed_left=100, speed_right=100, elapse=0):
191-
self._twin_motors_enc.control_time(power_left=speed_left, power_right=speed_right, time_elapse=elapse)
190+
def _dc_enc_motor(self, speed_left=100, speed_right=100, time_elapse=0, target_distance=0):
191+
self._twin_motors_enc.control(power_left=speed_left,
192+
power_right=speed_right,
193+
time_elapse=time_elapse,
194+
target_distance=target_distance)

rotary_encoder/wheelsaxel.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ def speed(self):
5454
return (l_speed + r_speed) / 2
5555

5656
# MOVEMENT
57+
""" Movement wrapper method
58+
if time is specified and distance is not, control_time is called
59+
if distance is specified and time is not, control_distance is called
60+
if both distance and time are specified, control_velocity is called """
61+
def control(self, power_left=100, power_right=100, time_elapse=0, target_distance=0):
62+
if(time_elapse != 0 and target_distance == 0): # time
63+
self.control_time(power_left, power_right, time_elapse)
64+
elif(time_elapse == 0 and target_distance != 0): # distance
65+
self.control_distance(power_left, power_right, target_distance)
66+
else: # velocity
67+
self.control_velocity(time_elapse, target_distance)
68+
5769
""" Motor time control allows the motors
5870
to run for a certain amount of time """
5971
def control_time(self, power_left=100, power_right=100, time_elapse=0):
@@ -81,12 +93,17 @@ def control_distance(self, power_left=100, power_right=100, target_distance=0):
8193
# moving for certaing amount of distance
8294
while(target_distance > 0):
8395
sleep(0.05) # check if arrived every 50ms,
84-
print(str(self._left_motor._encoder_speed))
96+
print(str(self.distance()))
8597
target_distance = target_distance - self.distance() # updating target distance
8698

8799
# robot arrived
88100
self.stop()
89101

102+
""" Motor speed control to travel given distance
103+
in given time adjusting power on motors invididually """
104+
def control_velocity(self, time_elapse=0, target_distance=0):
105+
pass
106+
90107
# old control distance, trying to adjust power
91108
# def control_distance(self, power_left = 100, power_right = 100, target_distance = 0):
92109
# self._is_moving = True

0 commit comments

Comments
 (0)