Skip to content

Commit 8f4b064

Browse files
committed
Encoder motor test, test route exposed, test state for each component is now returned
1 parent 43baaa9 commit 8f4b064

File tree

6 files changed

+101
-8
lines changed

6 files changed

+101
-8
lines changed

api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,5 +244,5 @@ def reset():
244244

245245
## Test
246246
def testCoderbot(data):
247-
tests_state = runCoderbotTestUnit(data)
247+
tests_state = runCoderbotTestUnit(data["varargrin"])
248248
return tests_state

coderbot.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ def distance(self):
167167
def speed(self):
168168
return self._twin_motors_enc.speed()
169169

170+
# CoderBot direction getter
171+
def direction(self):
172+
return self._twin_motors_enc.speed()
173+
170174
def set_callback(self, gpio, callback, elapse):
171175
self._cb_elapse[gpio] = elapse * 1000
172176
self._cb[gpio] = callback

coderbotTestUnit.py

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,87 @@
1111
If a test passes for correspondent component, a 1 is returned.
1212
If no test was executed on that component, 0 is preserved.
1313
"""
14+
from coderbot import CoderBot
15+
c = CoderBot.get_instance()
16+
1417
# Single components tests
1518

1619
# encoder motors
1720
def __test_encoder():
18-
return 1
21+
try:
22+
# moving both wheels at speed 100 clockwise
23+
print("moving both wheels at speed 100 clockwise")
24+
assert(c.speed() == 0)
25+
c.move(speed=100, elapse=2)
26+
assert(c.distance() != 0)
27+
assert (c.speed() == 0)
28+
29+
# moving both wheels at speed 40 clockwise
30+
print("moving both wheels at speed 40 clockwise")
31+
assert(c.speed() == 0)
32+
c.move(speed=40, elapse=2)
33+
assert(c.distance() != 0)
34+
assert (c.speed() == 0)
35+
36+
# moving both wheels at speed 100 counter-clockwise
37+
print("moving both wheels at speed 100 counter-clockwise")
38+
assert(c.speed() == 0)
39+
c.move(speed=-100, elapse=2)
40+
assert(c.distance() != 0)
41+
assert (c.speed() == 0)
42+
43+
# moving both wheels at speed 40 counter-clockwise
44+
print("moving both wheels at speed 40 counter-clockwise")
45+
assert(c.speed() == 0)
46+
c.move(speed=-40, elapse=2)
47+
assert(c.distance() != 0)
48+
assert (c.speed() == 0)
49+
50+
# moving forward
51+
print("moving forward")
52+
assert(c.speed() == 0)
53+
c.forward(speed=100, elapse=2)
54+
assert(c.distance() != 0)
55+
assert (c.speed() == 0)
56+
57+
# moving backwards
58+
print("moving backwards")
59+
assert(c.speed() == 0)
60+
c.backward(speed=100, elapse=2)
61+
assert(c.distance() != 0)
62+
assert (c.speed() == 0)
63+
64+
# moving forward for 1 meter
65+
print("moving forward for 1 meter")
66+
assert(c.speed() == 0)
67+
c.forward(speed=100, distance=1000)
68+
assert(c.distance() != 0)
69+
assert (c.speed() == 0)
70+
71+
# moving backwards for 1 meter
72+
print("moving backwards for 1 meter")
73+
assert(c.speed() == 0)
74+
c.backward(speed=100, distance=1000)
75+
assert(c.distance() != 0)
76+
assert (c.speed() == 0)
77+
78+
# turning left
79+
print("turning left")
80+
assert(c.speed() == 0)
81+
c.left(speed=100, elapse=2)
82+
assert(c.distance() != 0)
83+
assert (c.speed() == 0)
84+
85+
# turning right
86+
print("turning right")
87+
assert(c.speed() == 0)
88+
c.right(speed=100, elapse=2)
89+
assert(c.distance() != 0)
90+
assert (c.speed() == 0)
91+
92+
return 1
93+
except:
94+
return -1
1995

2096
# sonar
2197
def __testSonar():
@@ -62,4 +138,4 @@ def run_test(varargin):
62138
tests_state[test] = __test_OCR()
63139
#add more test cases here
64140

65-
return tests_state
141+
return tests_state

rotary_encoder/motorencoder.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ def is_moving(self):
6969
def control(self, power=100.0, time_elapse=0):
7070
self._motor_lock.acquire() # acquiring lock
7171

72-
#self.stop() # stopping motor to initialize new movement
72+
# resetting distance and ticks before new movement
73+
self._distance = 0 # resetting distance travelled
74+
self._ticks = 0 # resetting ticks
7375

7476
self._direction = 1 if power > 0 else -1 # setting direction according to speed
7577
self._power = power # setting current power
@@ -113,8 +115,10 @@ def stop(self):
113115
# stop auxiliary function, resets wheel state
114116
def reset_state(self):
115117
# returning state variables to consistent state
116-
self._distance = 0 # resetting distance travelled
117-
self._ticks = 0 # resetting ticks
118+
# after stopping, values of distance and ticks remains until
119+
# next movement
120+
#self._distance = 0 # resetting distance travelled
121+
#self._ticks = 0 # resetting ticks
118122
self._power = 0 # resetting PWM power
119123
self._encoder_speed = 0 # resetting encoder speed
120124
self._direction = 0 # resetting direction

rotary_encoder/wheelsaxel.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ def speed(self):
5353
r_speed = self._right_motor.speed()
5454
return (l_speed + r_speed) * 0.5
5555

56+
#direction
57+
def speed(self):
58+
l_dir = self._left_motor.direction()
59+
r_dir = self._right_motor.direction()
60+
if(l_dir == r_dir):
61+
return l_dir
62+
else:
63+
return 0
64+
5665
# MOVEMENT
5766
""" Movement wrapper method
5867
if time is specified and distance is not, control_time is called

v2.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@ paths:
195195
required:
196196
- varargin
197197
properties:
198-
speed:
199-
type: list
198+
varargin:
199+
type: object
200200
description: Components names to be tested
201201

202202
responses:

0 commit comments

Comments
 (0)