Skip to content

Commit e1508be

Browse files
authored
Merge pull request #3 from arduino/api_update
wheels position + leds initialization
2 parents a2544df + b94c5f7 commit e1508be

File tree

3 files changed

+54
-3
lines changed

3 files changed

+54
-3
lines changed

arduino_alvik.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def begin(self) -> int:
6363
sleep_ms(100)
6464
self._reset_hw()
6565
sleep_ms(1000)
66+
self.set_illuminator(True)
6667
return 0
6768

6869
def _begin_update_thread(self):
@@ -285,6 +286,9 @@ def _parse_message(self) -> int:
285286
elif code == ord('q'):
286287
# imu position
287288
_, self.roll, self.pitch, self.yaw = self.packeter.unpacketC3F()
289+
if code == ord('w'):
290+
# wheels position
291+
_, self.left_wheel._position, self.right_wheel._position = self.packeter.unpacketC2F()
288292
elif code == 0x7E:
289293
# firmware version
290294
_, *self.version = self.packeter.unpacketC3B()
@@ -399,14 +403,16 @@ def __init__(self, packeter: ucPack, label: int, wheel_diameter_mm: float = WHEE
399403
self._label = label
400404
self._wheel_diameter_mm = wheel_diameter_mm
401405
self._speed = None
406+
self._position = None
402407

403408
def reset(self, initial_position: float = 0.0):
404409
"""
405410
Resets the wheel reference position
406411
:param initial_position:
407412
:return:
408413
"""
409-
pass
414+
self._packeter.packetC2B1F(ord('W'), self._label & 0xFF, ord('Z'), initial_position)
415+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
410416

411417
def set_pid_gains(self, kp: float = MOTOR_KP_DEFAULT, ki: float = MOTOR_KI_DEFAULT, kd: float = MOTOR_KD_DEFAULT):
412418
"""
@@ -417,7 +423,7 @@ def set_pid_gains(self, kp: float = MOTOR_KP_DEFAULT, ki: float = MOTOR_KI_DEFAU
417423
:return:
418424
"""
419425

420-
self._packeter.packetC1B3F(ord('P'), self._label, kp, ki, kd)
426+
self._packeter.packetC1B3F(ord('P'), self._label & 0xFF, kp, ki, kd)
421427
uart.write(self._packeter.msg[0:self._packeter.msg_size])
422428

423429
def stop(self):
@@ -450,6 +456,13 @@ def get_speed(self) -> float:
450456
"""
451457
return self._speed
452458

459+
def get_position(self) -> float:
460+
"""
461+
Returns the wheel position (angle with respect to the reference)
462+
:return:
463+
"""
464+
return self._position
465+
453466
def set_position(self, position: float, unit: str = 'deg'):
454467
"""
455468
Sets left/right motor speed

examples/message_reader.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
try:
1313
print(f'VER: {alvik.version}')
1414
print(f'LSP: {alvik.left_wheel.get_speed()}')
15-
print(f'RSP: {alvik.left_wheel.get_speed()}')
15+
print(f'RSP: {alvik.right_wheel.get_speed()}')
16+
print(f'LPOS: {alvik.left_wheel.get_position()}')
17+
print(f'RPOS: {alvik.right_wheel.get_position()}')
1618
print(f'TOUCH: {alvik.touch_bits}')
1719
print(f'RGB: {alvik.red} {alvik.green} {alvik.blue}')
1820
print(f'LINE: {alvik.left_line} {alvik.center_line} {alvik.right_line}')

examples/wheels_servo.py

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from arduino_alvik import ArduinoAlvik
2+
from time import sleep
3+
import sys
4+
5+
alvik = ArduinoAlvik()
6+
alvik.begin()
7+
8+
alvik.left_wheel.reset()
9+
alvik.right_wheel.reset()
10+
11+
while True:
12+
try:
13+
alvik.left_wheel.set_position(30)
14+
sleep(2)
15+
print(f'Left wheel degs: {alvik.left_wheel.get_position()}')
16+
print(f'Right wheel degs: {alvik.right_wheel.get_position()}')
17+
18+
alvik.right_wheel.set_position(10)
19+
sleep(2)
20+
print(f'Left wheel degs: {alvik.left_wheel.get_position()}')
21+
print(f'Right wheel degs: {alvik.right_wheel.get_position()}')
22+
23+
alvik.left_wheel.set_position(180)
24+
sleep(2)
25+
print(f'Left wheel degs: {alvik.left_wheel.get_position()}')
26+
print(f'Right wheel degs: {alvik.right_wheel.get_position()}')
27+
28+
alvik.right_wheel.set_position(270)
29+
sleep(2)
30+
print(f'Left wheel degs: {alvik.left_wheel.get_position()}')
31+
print(f'Right wheel degs: {alvik.right_wheel.get_position()}')
32+
33+
except KeyboardInterrupt as e:
34+
print('over')
35+
alvik.stop()
36+
sys.exit()

0 commit comments

Comments
 (0)