Skip to content

Commit 7817a17

Browse files
committed
Brief intermission for Timeout class implementation
1 parent c44a48f commit 7817a17

File tree

2 files changed

+9
-21
lines changed

2 files changed

+9
-21
lines changed

XRPLib/differential_drive.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from .imu import IMU
33
from .controller import Controller
44
from .pid import PID
5+
from .timeout import Timeout
56
import time
67
import math
78

@@ -97,7 +98,7 @@ def straight(self, distance: float, speed: float = 0.5, timeout: float = None, m
9798
speed *= -1
9899
distance *= -1
99100

100-
startTime = time.time()
101+
time_out = Timeout(timeout)
101102
startingLeft = self.get_left_encoder_position()
102103
startingRight = self.get_right_encoder_position()
103104

@@ -137,7 +138,7 @@ def straight(self, distance: float, speed: float = 0.5, timeout: float = None, m
137138
distanceError = rotationsToDo - rotationsDelta
138139
effort = main_controller.tick(distanceError)
139140

140-
if main_controller.is_done():
141+
if main_controller.is_done() or time_out.is_done():
141142
break
142143

143144
# calculate heading correction
@@ -155,10 +156,7 @@ def straight(self, distance: float, speed: float = 0.5, timeout: float = None, m
155156

156157
self.stop()
157158

158-
if timeout is None:
159-
return True
160-
else:
161-
return time.time() < startTime+timeout
159+
return not time_out.is_done()
162160

163161

164162
def turn(self, turn_degrees: float, speed: float = 0.5, timeout: float = None, main_controller: Controller = None, secondary_controller: Controller = None, use_imu:bool = True) -> bool:
@@ -186,7 +184,7 @@ def turn(self, turn_degrees: float, speed: float = 0.5, timeout: float = None, m
186184
speed *= -1
187185
turn_degrees *= -1
188186

189-
startTime = time.time()
187+
time_out = Timeout(timeout)
190188
startingLeft = self.get_left_encoder_position()
191189
startingRight = self.get_right_encoder_position()
192190

@@ -197,8 +195,7 @@ def turn(self, turn_degrees: float, speed: float = 0.5, timeout: float = None, m
197195
minOutput = 0.25,
198196
maxOutput = speed,
199197
tolerance = 0.5,
200-
toleranceCount = 3,
201-
timeout = timeout
198+
toleranceCount = 3
202199
)
203200

204201
# Secondary controller to keep encoder values in sync
@@ -228,7 +225,7 @@ def turn(self, turn_degrees: float, speed: float = 0.5, timeout: float = None, m
228225
turnSpeed = main_controller.tick(turnError)
229226

230227
# exit if timeout or tolerance reached
231-
if main_controller.is_done():
228+
if main_controller.is_done() or time_out.is_done():
232229
break
233230

234231

@@ -240,7 +237,4 @@ def turn(self, turn_degrees: float, speed: float = 0.5, timeout: float = None, m
240237

241238
self.stop()
242239

243-
if timeout is None:
244-
return True
245-
else:
246-
return time.time() < startTime+timeout
240+
return not time_out.is_done()

XRPLib/pid.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ def __init__(self,
1515
maxOutput = 1.0,
1616
maxDerivative = None,
1717
tolerance = 0.1,
18-
toleranceCount = 1,
19-
timeout = None
18+
toleranceCount = 1
2019
):
2120
"""
2221
:param kp: proportional gain
@@ -41,8 +40,6 @@ def __init__(self,
4140
self.prevIntegral = 0
4241
self.prevOutput = 0
4342

44-
self.timeout = timeout
45-
4643
self.startTime = None
4744
self.prevTime = None
4845

@@ -113,8 +110,5 @@ def is_done(self) -> bool:
113110
:return: if error is within tolerance for numTimesInTolerance consecutive times, or timed out
114111
:rtype: bool
115112
"""
116-
if self.timeout is not None:
117-
if time.ticks_diff(time.ticks_ms(), self.startTime) / 1000 > self.timeout:
118-
return True
119113

120114
return self.times >= self.toleranceCount

0 commit comments

Comments
 (0)