diff --git a/examples/actuators/leds_setting.py b/examples/actuators/leds_setting.py index cceb6c4..3ea1020 100644 --- a/examples/actuators/leds_setting.py +++ b/examples/actuators/leds_setting.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -34,4 +34,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/actuators/move_wheels.py b/examples/actuators/move_wheels.py index d6f6e7e..94537a3 100644 --- a/examples/actuators/move_wheels.py +++ b/examples/actuators/move_wheels.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -33,4 +33,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/actuators/pose_example.py b/examples/actuators/pose_example.py index 11b675a..465a635 100644 --- a/examples/actuators/pose_example.py +++ b/examples/actuators/pose_example.py @@ -1,82 +1,80 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() -while True: - try: +try: + + alvik.move(100.0, 'mm') + print("on target after move") + + alvik.move(50.0, 'mm') + print("on target after move") + + alvik.rotate(90.0, 'deg') + print("on target after rotation") - alvik.move(100.0, 'mm') - print("on target after move") + alvik.rotate(-45.00, 'deg') + print("on target after rotation") - alvik.move(50.0, 'mm') - print("on target after move") + x, y, theta = alvik.get_pose() + print(f'Current pose is x(cm)={x}, y(cm)={y}, theta(deg)={theta}') - alvik.rotate(90.0, 'deg') - print("on target after rotation") + alvik.reset_pose(0, 0, 0) - alvik.rotate(-45.00, 'deg') - print("on target after rotation") + x, y, theta = alvik.get_pose() + print(f'Updated pose is x(cm)={x}, y(cm)={y}, theta(deg)={theta}') + sleep_ms(500) - x, y, theta = alvik.get_pose() - print(f'Current pose is x(cm)={x}, y(cm)={y}, theta(deg)={theta}') + print("___________NON-BLOCKING__________________") - alvik.reset_pose(0, 0, 0) + alvik.move(50.0, 'mm', blocking=False) - x, y, theta = alvik.get_pose() - print(f'Updated pose is x(cm)={x}, y(cm)={y}, theta(deg)={theta}') + while not alvik.is_target_reached(): + alvik.left_led.set_color(1, 0, 0) + sleep_ms(500) + alvik.left_led.set_color(0, 0, 0) + sleep_ms(500) + print("on target after move") + + alvik.rotate(45.0, 'deg', blocking=False) + while not alvik.is_target_reached(): + alvik.left_led.set_color(1, 0, 0) + sleep_ms(500) + alvik.left_led.set_color(0, 0, 0) sleep_ms(500) + print("on target after rotation") - print("___________NON-BLOCKING__________________") - - alvik.move(50.0, 'mm', blocking=False) - - while not alvik.is_target_reached(): - alvik.left_led.set_color(1, 0, 0) - sleep_ms(500) - alvik.left_led.set_color(0, 0, 0) - sleep_ms(500) - print("on target after move") - - alvik.rotate(45.0, 'deg', blocking=False) - while not alvik.is_target_reached(): - alvik.left_led.set_color(1, 0, 0) - sleep_ms(500) - alvik.left_led.set_color(0, 0, 0) - sleep_ms(500) - print("on target after rotation") - - alvik.move(100.0, 'mm', blocking=False) - while not alvik.is_target_reached(): - alvik.left_led.set_color(1, 0, 0) - sleep_ms(500) - alvik.left_led.set_color(0, 0, 0) - sleep_ms(500) - print("on target after move") - - alvik.rotate(-90.00, 'deg', blocking=False) - while not alvik.is_target_reached(): - alvik.left_led.set_color(1, 0, 0) - sleep_ms(500) - alvik.left_led.set_color(0, 0, 0) - sleep_ms(500) - print("on target after rotation") - - x, y, theta = alvik.get_pose() - print(f'Current pose is x(cm)={x}, y(cm)={y}, theta(deg)={theta}') - - alvik.reset_pose(0, 0, 0) - - x, y, theta = alvik.get_pose() - print(f'Updated pose is x={x}, y={y}, theta(deg)={theta}') + alvik.move(100.0, 'mm', blocking=False) + while not alvik.is_target_reached(): + alvik.left_led.set_color(1, 0, 0) sleep_ms(500) + alvik.left_led.set_color(0, 0, 0) + sleep_ms(500) + print("on target after move") + + alvik.rotate(-90.00, 'deg', blocking=False) + while not alvik.is_target_reached(): + alvik.left_led.set_color(1, 0, 0) + sleep_ms(500) + alvik.left_led.set_color(0, 0, 0) + sleep_ms(500) + print("on target after rotation") + + x, y, theta = alvik.get_pose() + print(f'Current pose is x(cm)={x}, y(cm)={y}, theta(deg)={theta}') + + alvik.reset_pose(0, 0, 0) + + x, y, theta = alvik.get_pose() + print(f'Updated pose is x={x}, y={y}, theta(deg)={theta}') + sleep_ms(500) - alvik.stop() - sys.exit() +except KeyboardInterrupt as e: + print('Test interrupted') - except KeyboardInterrupt as e: - print('over') - alvik.stop() - sys.exit() +finally: + alvik.stop() + print("END of pose example") \ No newline at end of file diff --git a/examples/actuators/set_servo.py b/examples/actuators/set_servo.py index b4e9084..48720c1 100644 --- a/examples/actuators/set_servo.py +++ b/examples/actuators/set_servo.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -19,4 +19,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/actuators/wheels_position.py b/examples/actuators/wheels_position.py index 6f3a151..fc521c6 100644 --- a/examples/actuators/wheels_position.py +++ b/examples/actuators/wheels_position.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep, sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -62,4 +62,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/actuators/wheels_speed.py b/examples/actuators/wheels_speed.py index 1919f27..3a54340 100644 --- a/examples/actuators/wheels_speed.py +++ b/examples/actuators/wheels_speed.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -21,4 +21,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/arduino-runtime/blink.py b/examples/arduino-runtime/blink.py new file mode 100644 index 0000000..920838f --- /dev/null +++ b/examples/arduino-runtime/blink.py @@ -0,0 +1,28 @@ +from time import sleep_ms + +from arduino import start +from arduino_alvik import ArduinoAlvik + + +alvik = ArduinoAlvik() + + +def setup(): + alvik.begin() + + +def loop(): + print('blinking LEDs') + alvik.left_led.set_color(0, 0, 1) + alvik.right_led.set_color(0, 0, 1) + sleep_ms(500) + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(1, 0, 0) + sleep_ms(500) + + +def cleanup(): + alvik.stop() + + +start(setup=setup, loop=loop, cleanup=cleanup) diff --git a/examples/arduino-runtime/line_follower.py b/examples/arduino-runtime/line_follower.py new file mode 100644 index 0000000..cf6c861 --- /dev/null +++ b/examples/arduino-runtime/line_follower.py @@ -0,0 +1,64 @@ +from time import sleep_ms + +from arduino import start +from arduino_alvik import ArduinoAlvik + + +alvik = ArduinoAlvik() + + +def calculate_center(left: int, center: int, right: int): + centroid = 0 + sum_weight = left + center + right + sum_values = left + 2 * center + 3 * right + if sum_weight != 0: + centroid = sum_values / sum_weight + centroid = 2 - centroid + return centroid + + +def run_line_follower(alvik): + + kp = 50.0 + line_sensors = alvik.get_line_sensors() + print(f' {line_sensors}') + + error = calculate_center(*line_sensors) + control = error * kp + + if control > 0.2: + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(0, 0, 0) + elif control < -0.2: + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(0, 0, 0) + else: + alvik.left_led.set_color(0, 1, 0) + alvik.right_led.set_color(0, 1, 0) + + alvik.set_wheels_speed(30 - control, 30 + control) + sleep_ms(100) + + +def setup(): + alvik.begin() + alvik.left_led.set_color(0, 0, 1) + alvik.right_led.set_color(0, 0, 1) + + +def loop(): + while not alvik.get_touch_ok(): + alvik.left_led.set_color(0, 0, 1) + alvik.right_led.set_color(0, 0, 1) + alvik.brake() + sleep_ms(100) + + while not alvik.get_touch_cancel(): + run_line_follower(alvik) + + +def cleanup(): + alvik.stop() + + +start(setup=setup, loop=loop, cleanup=cleanup) diff --git a/examples/arduino-runtime/read_tof.py b/examples/arduino-runtime/read_tof.py new file mode 100644 index 0000000..63fb76d --- /dev/null +++ b/examples/arduino-runtime/read_tof.py @@ -0,0 +1,26 @@ +from time import sleep_ms + +from arduino import start +from arduino_alvik import ArduinoAlvik + + +alvik = ArduinoAlvik() + + +def setup(): + alvik.begin() + + +def loop(): + L, CL, C, CR, R = alvik.get_distance() + T = alvik.get_distance_top() + B = alvik.get_distance_bottom() + print(f'T: {T} | B: {B} | L: {L} | CL: {CL} | C: {C} | CR: {CR} | R: {R}') + sleep_ms(100) + + +def cleanup(): + alvik.stop() + + +start(setup=setup, loop=loop, cleanup=cleanup) diff --git a/examples/communication/i2c_scan.py b/examples/communication/i2c_scan.py index a246787..6f1ed45 100644 --- a/examples/communication/i2c_scan.py +++ b/examples/communication/i2c_scan.py @@ -1,5 +1,5 @@ from time import sleep_ms -import sys + from arduino_alvik import ArduinoAlvik @@ -22,4 +22,4 @@ sleep_ms(100) except KeyboardInterrupt as e: alvik.stop() - sys.exit() \ No newline at end of file + break \ No newline at end of file diff --git a/examples/communication/modulino.py b/examples/communication/modulino.py index bf1e8e2..c8606f9 100644 --- a/examples/communication/modulino.py +++ b/examples/communication/modulino.py @@ -1,11 +1,12 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + + try: from modulino import ModulinoPixels except ImportError as e: - print("ImportError: ModulinoPixels not installed") - sys.exit(-1) + print("\nImportError: ModulinoPixels not installed") + raise e alvik = ArduinoAlvik() alvik.begin() @@ -32,4 +33,4 @@ except KeyboardInterrupt as e: alvik.stop() - sys.exit() + break diff --git a/examples/demo/demo.py b/examples/demo/demo.py index 931aa47..f1b283d 100644 --- a/examples/demo/demo.py +++ b/examples/demo/demo.py @@ -1,6 +1,10 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + +from line_follower import run_line_follower +from touch_move import run_touch_move +from hand_follower import run_hand_follower + alvik = ArduinoAlvik() alvik.begin() @@ -27,12 +31,21 @@ def update_led_status(val): try: if alvik.get_touch_ok(): - if menu_status == 0: - import line_follower - elif menu_status == 1: - import hand_follower - elif menu_status == -1: - import touch_move + alvik.left_led.set_color(0, 0, 0) + alvik.right_led.set_color(0, 0, 0) + sleep_ms(500) + while not alvik.get_touch_cancel(): + if menu_status == 0: + run_line_follower(alvik) + elif menu_status == 1: + run_hand_follower(alvik) + elif menu_status == -1: + if run_touch_move(alvik) < 0: + break + alvik.left_led.set_color(0, 0, 0) + alvik.right_led.set_color(0, 0, 0) + sleep_ms(500) + alvik.brake() if alvik.get_touch_up() and menu_status < 1: menu_status += 1 @@ -50,4 +63,4 @@ def update_led_status(val): except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/demo/hand_follower.py b/examples/demo/hand_follower.py index fcdc41e..1b784b5 100644 --- a/examples/demo/hand_follower.py +++ b/examples/demo/hand_follower.py @@ -1,38 +1,43 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys -alvik = ArduinoAlvik() -alvik.begin() -reference = 10.0 +def run_hand_follower(alvik): + reference = 10.0 + alvik.left_led.set_color(0, 0, 0) + alvik.right_led.set_color(0, 0, 0) + L, CL, C, CR, R = alvik.get_distance() + print(f'C: {C}') + error = C - reference + alvik.set_wheels_speed(error * 10, error * 10) + sleep_ms(100) -alvik.left_led.set_color(0, 1, 0) -alvik.right_led.set_color(0, 1, 0) -while alvik.get_touch_ok(): - sleep_ms(50) +if __name__ == "__main__": -while not alvik.get_touch_ok(): - sleep_ms(50) + alvik = ArduinoAlvik() + alvik.begin() + + alvik.left_led.set_color(0, 1, 0) + alvik.right_led.set_color(0, 1, 0) + + while alvik.get_touch_ok(): + sleep_ms(50) + + while not alvik.get_touch_ok(): + sleep_ms(50) -try: while True: - while not alvik.get_touch_cancel(): - alvik.left_led.set_color(0, 0, 0) - alvik.right_led.set_color(0, 0, 0) - L, CL, C, CR, R = alvik.get_distance() - print(f'C: {C}') - error = C - reference - alvik.set_wheels_speed(error*10, error*10) - sleep_ms(100) - - while not alvik.get_touch_ok(): - alvik.left_led.set_color(0, 1, 0) - alvik.right_led.set_color(0, 1, 0) - alvik.brake() - sleep_ms(100) -except KeyboardInterrupt as e: - print('over') - alvik.stop() - sys.exit() + try: + while not alvik.get_touch_cancel(): + run_hand_follower(alvik) + + while not alvik.get_touch_ok(): + alvik.left_led.set_color(0, 1, 0) + alvik.right_led.set_color(0, 1, 0) + alvik.brake() + sleep_ms(100) + except KeyboardInterrupt as e: + print('over') + alvik.stop() + break diff --git a/examples/demo/line_follower.py b/examples/demo/line_follower.py index 041faf6..c61f3c4 100644 --- a/examples/demo/line_follower.py +++ b/examples/demo/line_follower.py @@ -1,6 +1,5 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys def calculate_center(left: int, center: int, right: int): @@ -13,52 +12,54 @@ def calculate_center(left: int, center: int, right: int): return centroid -alvik = ArduinoAlvik() -alvik.begin() +def run_line_follower(alvik): + kp = 50.0 + line_sensors = alvik.get_line_sensors() + print(f' {line_sensors}') -error = 0 -control = 0 -kp = 50.0 + error = calculate_center(*line_sensors) + control = error * kp -alvik.left_led.set_color(0, 0, 1) -alvik.right_led.set_color(0, 0, 1) + if control > 0.2: + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(0, 0, 0) + elif control < -0.2: + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(0, 0, 0) + else: + alvik.left_led.set_color(0, 1, 0) + alvik.right_led.set_color(0, 1, 0) -while alvik.get_touch_ok(): - sleep_ms(50) + alvik.set_wheels_speed(30 - control, 30 + control) + sleep_ms(100) -while not alvik.get_touch_ok(): - sleep_ms(50) -try: +if __name__ == "__main__": + + alvik = ArduinoAlvik() + alvik.begin() + + alvik.left_led.set_color(0, 0, 1) + alvik.right_led.set_color(0, 0, 1) + + while alvik.get_touch_ok(): + sleep_ms(50) + + while not alvik.get_touch_ok(): + sleep_ms(50) + while True: - while not alvik.get_touch_cancel(): - - line_sensors = alvik.get_line_sensors() - print(f' {line_sensors}') - - error = calculate_center(*line_sensors) - control = error * kp - - if control > 0.2: - alvik.left_led.set_color(1, 0, 0) - alvik.right_led.set_color(0, 0, 0) - elif control < -0.2: - alvik.left_led.set_color(1, 0, 0) - alvik.right_led.set_color(0, 0, 0) - else: - alvik.left_led.set_color(0, 1, 0) - alvik.right_led.set_color(0, 1, 0) - - alvik.set_wheels_speed(30 - control, 30 + control) - sleep_ms(100) - - while not alvik.get_touch_ok(): - alvik.left_led.set_color(0, 0, 1) - alvik.right_led.set_color(0, 0, 1) - alvik.brake() - sleep_ms(100) - -except KeyboardInterrupt as e: - print('over') - alvik.stop() - sys.exit() + try: + while not alvik.get_touch_cancel(): + run_line_follower(alvik) + + while not alvik.get_touch_ok(): + alvik.left_led.set_color(0, 0, 1) + alvik.right_led.set_color(0, 0, 1) + alvik.brake() + sleep_ms(100) + + except KeyboardInterrupt as e: + print('over') + alvik.stop() + break diff --git a/examples/demo/touch_move.py b/examples/demo/touch_move.py index b51e4ca..728cc03 100644 --- a/examples/demo/touch_move.py +++ b/examples/demo/touch_move.py @@ -1,17 +1,8 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys -alvik = ArduinoAlvik() -alvik.begin() -alvik.left_led.set_color(1, 0, 0) -alvik.right_led.set_color(1, 0, 0) - -movements = [] - - -def blink(): +def blink(alvik): alvik.left_led.set_color(1, 0, 1) alvik.right_led.set_color(1, 0, 1) sleep_ms(200) @@ -19,27 +10,25 @@ def blink(): alvik.right_led.set_color(1, 0, 0) -def add_movement(): - global movements - +def add_movement(alvik, movements): if alvik.get_touch_up(): movements.append('forward') - blink() + blink(alvik) while alvik.get_touch_up(): sleep_ms(100) if alvik.get_touch_down(): movements.append('backward') - blink() + blink(alvik) while alvik.get_touch_down(): sleep_ms(100) if alvik.get_touch_left(): movements.append('left') - blink() + blink(alvik) while alvik.get_touch_left(): sleep_ms(100) if alvik.get_touch_right(): movements.append('right') - blink() + blink(alvik) while alvik.get_touch_right(): sleep_ms(100) if alvik.get_touch_cancel(): @@ -53,7 +42,7 @@ def add_movement(): sleep_ms(100) -def run_movement(movement): +def run_movement(alvik, movement): if movement == 'forward': alvik.move(10, blocking=False) if movement == 'backward': @@ -70,33 +59,45 @@ def run_movement(movement): alvik.right_led.set_color(0, 0, 0) sleep_ms(100) -while alvik.get_touch_ok(): - sleep_ms(50) -while not (alvik.get_touch_ok() and len(movements) != 0): - add_movement() - sleep_ms(50) +def run_touch_move(alvik) -> int: + movements = [] + while not (alvik.get_touch_ok() and len(movements) != 0): + if alvik.get_touch_cancel(): + if len(movements) == 0: + return -1 + movements.clear() + blink(alvik) + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(1, 0, 0) + alvik.brake() + add_movement(alvik, movements) + sleep_ms(100) -try: - while True: - alvik.left_led.set_color(0, 0, 0) - alvik.right_led.set_color(0, 0, 0) - for move in movements: - run_movement(move) - if alvik.get_touch_cancel(): - break + alvik.left_led.set_color(0, 0, 0) + alvik.right_led.set_color(0, 0, 0) + for move in movements: + run_movement(alvik, move) + if alvik.get_touch_cancel(): + movements.clear() + blink(alvik) + sleep_ms(100) + return 1 - movements = [] - while not (alvik.get_touch_ok() and len(movements) != 0): - alvik.left_led.set_color(1, 0, 0) - alvik.right_led.set_color(1, 0, 0) - alvik.brake() - add_movement() - sleep_ms(100) -except KeyboardInterrupt as e: - print('over') - alvik.stop() - sys.exit() +if __name__ == "__main__": + alvik = ArduinoAlvik() + alvik.begin() + + alvik.left_led.set_color(1, 0, 0) + alvik.right_led.set_color(1, 0, 0) + + while True: + try: + run_touch_move(alvik) + except KeyboardInterrupt as e: + print('over') + alvik.stop() + break diff --git a/examples/events/motion_events.py b/examples/events/motion_events.py index f7edf01..b0f8146 100644 --- a/examples/events/motion_events.py +++ b/examples/events/motion_events.py @@ -1,6 +1,5 @@ from arduino_alvik import ArduinoAlvik from time import sleep -import sys def toggle_value(): @@ -49,4 +48,4 @@ def simple_print(custom_text: str = '') -> None: except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/events/timer_one_shot_events.py b/examples/events/timer_one_shot_events.py index 8ab8a99..487c4fb 100644 --- a/examples/events/timer_one_shot_events.py +++ b/examples/events/timer_one_shot_events.py @@ -1,17 +1,5 @@ from arduino_alvik import ArduinoAlvik from time import sleep -import sys - - -def toggle_value(): - """ - This function yields a generator object that toggles values between 0 and 1. - :return: - """ - value = 0 - while True: - yield value % 2 - value += 1 def toggle_left_led(custom_text: str, val) -> None: @@ -21,13 +9,12 @@ def toggle_left_led(custom_text: str, val) -> None: :param val: a toggle signal generator :return: """ - led_val = next(val) - alvik.left_led.set_color(led_val, 0, 0) - print(f"RED {'ON' if led_val else 'OFF'}! {custom_text}") + alvik.left_led.set_color(val, 0, 0) + print(f"LEFT LED -> RED {'ON' if val else 'OFF'}! {custom_text}") alvik = ArduinoAlvik() -alvik.set_timer('one_shot', 10000, toggle_left_led, ("10 seconds have passed... I won't do this again", toggle_value(), )) +alvik.set_timer('one_shot', 10000, toggle_left_led, ("10 seconds have passed... I won't do this again", 1, )) alvik.begin() @@ -68,4 +55,4 @@ def toggle_left_led(custom_text: str, val) -> None: except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break \ No newline at end of file diff --git a/examples/events/timer_periodic_events.py b/examples/events/timer_periodic_events.py index fd5aa28..d56e90c 100644 --- a/examples/events/timer_periodic_events.py +++ b/examples/events/timer_periodic_events.py @@ -1,6 +1,5 @@ from arduino_alvik import ArduinoAlvik from time import sleep -import sys def toggle_value(): @@ -67,4 +66,4 @@ def toggle_left_led(custom_text: str, val) -> None: except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/events/touch_events.py b/examples/events/touch_events.py index 9ef35e3..db0d6c1 100644 --- a/examples/events/touch_events.py +++ b/examples/events/touch_events.py @@ -1,6 +1,5 @@ from arduino_alvik import ArduinoAlvik from time import sleep -import sys def toggle_value(): @@ -67,4 +66,4 @@ def simple_print(custom_text: str = '') -> None: except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/sensors/read_color_sensor.py b/examples/sensors/read_color_sensor.py index 462826c..0c92871 100644 --- a/examples/sensors/read_color_sensor.py +++ b/examples/sensors/read_color_sensor.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -15,4 +15,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/sensors/read_imu.py b/examples/sensors/read_imu.py index 3c6589b..7c0d984 100644 --- a/examples/sensors/read_imu.py +++ b/examples/sensors/read_imu.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -14,4 +14,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/sensors/read_orientation.py b/examples/sensors/read_orientation.py index 23cf006..33b0113 100644 --- a/examples/sensors/read_orientation.py +++ b/examples/sensors/read_orientation.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -13,4 +13,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/sensors/read_tof.py b/examples/sensors/read_tof.py index 990bf63..20d37f0 100644 --- a/examples/sensors/read_tof.py +++ b/examples/sensors/read_tof.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -15,4 +15,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/sensors/read_touch.py b/examples/sensors/read_touch.py index 21c5ebb..6a627df 100644 --- a/examples/sensors/read_touch.py +++ b/examples/sensors/read_touch.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -27,4 +27,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/tests/message_reader.py b/examples/tests/message_reader.py index 7ae24e1..d2eb283 100644 --- a/examples/tests/message_reader.py +++ b/examples/tests/message_reader.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -25,5 +25,5 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/tests/test_idle.py b/examples/tests/test_idle.py index f65625a..1c26a97 100644 --- a/examples/tests/test_idle.py +++ b/examples/tests/test_idle.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() @@ -19,5 +19,5 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() + break diff --git a/examples/tests/test_meas_units.py b/examples/tests/test_meas_units.py index 468073d..3938a56 100644 --- a/examples/tests/test_meas_units.py +++ b/examples/tests/test_meas_units.py @@ -1,124 +1,122 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() alvik.begin() -while True: - try: - - # -- LINEAR MOVEMENTS -- - - print("Move fw 0.05 m") - alvik.move(0.05, unit='m') - sleep_ms(2000) - - print("Move fw 10 cm") - alvik.move(5, unit='cm') - sleep_ms(2000) - - print("Move bw 100 mm") - alvik.move(-100, unit='mm') - sleep_ms(2000) - - print("Move fw 1 inch") - alvik.move(1, unit='in') - sleep_ms(2000) - - print(f"Current position: {alvik.get_pose()}") - alvik.reset_pose(0, 0, theta=3.1415, angle_unit='rad') - sleep_ms(2000) - - print(f"Current position: {alvik.get_pose()}") - - # -- WHEEL ROTATIONS -- - alvik.right_wheel.reset() - sleep_ms(2000) - curr_pos = alvik.right_wheel.get_position() - print(f'R wheel pos: {curr_pos}') - sleep_ms(2000) - - print("Rotate right wheel 25% fw") - alvik.right_wheel.set_position(25, unit='%') - sleep_ms(2000) - curr_pos = alvik.right_wheel.get_position() - print(f'R wheel pos: {curr_pos}') - - print("Rotate right wheel 90 deg bw") - alvik.right_wheel.set_position(-90, unit='deg') - sleep_ms(2000) - curr_pos = alvik.right_wheel.get_position() - print(f'R wheel pos: {curr_pos}') - - print("Rotate right wheel pi rad fw") - alvik.right_wheel.set_position(3.14, unit='rad') - sleep_ms(2000) - curr_pos = alvik.right_wheel.get_position() - print(f'R wheel pos: {curr_pos}') - - print("Rotate right wheel a quarter revolution bw") - alvik.right_wheel.set_position(-0.25, unit='rev') - sleep_ms(2000) - curr_pos = alvik.right_wheel.get_position() - print(f'R wheel pos: {curr_pos}') - - # -- WHEELS SPEED -- - print("Set speed 50% max_rpm (35.0 rpm)") - alvik.set_wheels_speed(50, 50, '%') - sleep_ms(1000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - print("Set speed 12 rpm (1 rev in 5 sec)") - alvik.set_wheels_speed(12, 12, 'rpm') - sleep_ms(1000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - print("Set speed -pi rad/s (1 back rev in 2 sec)") - alvik.set_wheels_speed(-3.1415, -3.1415, 'rad/s') - sleep_ms(1000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - print("Set speed 180 deg/s (1 back rev in 2 sec)") - alvik.set_wheels_speed(180, 180, 'deg/s') - sleep_ms(1000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - # -- DRIVE -- - print("Driving at 10 mm/s (expecting approx 5.6 rpm 64 deg/s)") - alvik.drive(10, 20, linear_unit='mm/s', angular_unit='%') - sleep_ms(2000) - print(f"Current speed is {alvik.get_drive_speed()} (mm/s, deg/s))") - - print("Driving at 10 mm/s (expecting approx 5.6 rpm)") - alvik.drive(10, 0, linear_unit='mm/s') - sleep_ms(2000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - print("Driving at 2 cm/s (expecting approx 11.2 rpm)") - alvik.drive(2, 0, linear_unit='cm/s') - sleep_ms(2000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - print("Driving at 1 in/s (expecting approx 14 rpm)") - alvik.drive(1, 0, linear_unit='in/s') - sleep_ms(2000) - print(f"Current speed is {alvik.get_wheels_speed()} rpm") - - print("Driving at 5 mm/s (expecting approx 5.6 rpm) pi/8 rad/s (22.5 deg/s)") - alvik.drive(5, 3.1415/8, linear_unit='mm/s', angular_unit='rad/s') - sleep_ms(2000) - print(f"Current speed is {alvik.get_drive_speed()} (mm/s) (rpm)") - - print("Driving at 5 mm/s (expecting approx 5.6 rpm) 1/8 rev/s (45 deg/s)") - alvik.drive(5, 1/8, linear_unit='mm/s', angular_unit='rev/s') - sleep_ms(2000) - print(f"Current speed is {alvik.get_drive_speed()} (mm/s) (rpm)") - - alvik.stop() - sys.exit() - - except KeyboardInterrupt as e: - print('over') - alvik.stop() - sys.exit() +try: + + # -- LINEAR MOVEMENTS -- + + print("Move fw 0.05 m") + alvik.move(0.05, unit='m') + sleep_ms(2000) + + print("Move fw 10 cm") + alvik.move(5, unit='cm') + sleep_ms(2000) + + print("Move bw 100 mm") + alvik.move(-100, unit='mm') + sleep_ms(2000) + + print("Move fw 1 inch") + alvik.move(1, unit='in') + sleep_ms(2000) + + print(f"Current position: {alvik.get_pose()}") + alvik.reset_pose(0, 0, theta=3.1415, angle_unit='rad') + sleep_ms(2000) + + print(f"Current position: {alvik.get_pose()}") + + # -- WHEEL ROTATIONS -- + alvik.right_wheel.reset() + sleep_ms(2000) + curr_pos = alvik.right_wheel.get_position() + print(f'R wheel pos: {curr_pos}') + sleep_ms(2000) + + print("Rotate right wheel 25% fw") + alvik.right_wheel.set_position(25, unit='%') + sleep_ms(2000) + curr_pos = alvik.right_wheel.get_position() + print(f'R wheel pos: {curr_pos}') + + print("Rotate right wheel 90 deg bw") + alvik.right_wheel.set_position(-90, unit='deg') + sleep_ms(2000) + curr_pos = alvik.right_wheel.get_position() + print(f'R wheel pos: {curr_pos}') + + print("Rotate right wheel pi rad fw") + alvik.right_wheel.set_position(3.14, unit='rad') + sleep_ms(2000) + curr_pos = alvik.right_wheel.get_position() + print(f'R wheel pos: {curr_pos}') + + print("Rotate right wheel a quarter revolution bw") + alvik.right_wheel.set_position(-0.25, unit='rev') + sleep_ms(2000) + curr_pos = alvik.right_wheel.get_position() + print(f'R wheel pos: {curr_pos}') + + # -- WHEELS SPEED -- + print("Set speed 50% max_rpm (35.0 rpm)") + alvik.set_wheels_speed(50, 50, '%') + sleep_ms(1000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + print("Set speed 12 rpm (1 rev in 5 sec)") + alvik.set_wheels_speed(12, 12, 'rpm') + sleep_ms(1000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + print("Set speed -pi rad/s (1 back rev in 2 sec)") + alvik.set_wheels_speed(-3.1415, -3.1415, 'rad/s') + sleep_ms(1000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + print("Set speed 180 deg/s (1 back rev in 2 sec)") + alvik.set_wheels_speed(180, 180, 'deg/s') + sleep_ms(1000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + # -- DRIVE -- + print("Driving at 10 mm/s (expecting approx 5.6 rpm 64 deg/s)") + alvik.drive(10, 20, linear_unit='mm/s', angular_unit='%') + sleep_ms(2000) + print(f"Current speed is {alvik.get_drive_speed()} (mm/s, deg/s))") + + print("Driving at 10 mm/s (expecting approx 5.6 rpm)") + alvik.drive(10, 0, linear_unit='mm/s') + sleep_ms(2000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + print("Driving at 2 cm/s (expecting approx 11.2 rpm)") + alvik.drive(2, 0, linear_unit='cm/s') + sleep_ms(2000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + print("Driving at 1 in/s (expecting approx 14 rpm)") + alvik.drive(1, 0, linear_unit='in/s') + sleep_ms(2000) + print(f"Current speed is {alvik.get_wheels_speed()} rpm") + + print("Driving at 5 mm/s (expecting approx 5.6 rpm) pi/8 rad/s (22.5 deg/s)") + alvik.drive(5, 3.1415/8, linear_unit='mm/s', angular_unit='rad/s') + sleep_ms(2000) + print(f"Current speed is {alvik.get_drive_speed()} (mm/s) (rpm)") + + print("Driving at 5 mm/s (expecting approx 5.6 rpm) 1/8 rev/s (45 deg/s)") + alvik.drive(5, 1/8, linear_unit='mm/s', angular_unit='rev/s') + sleep_ms(2000) + print(f"Current speed is {alvik.get_drive_speed()} (mm/s) (rpm)") + +except KeyboardInterrupt as e: + print('Test interrupted') + +finally: + alvik.stop() + print('END of measurement units test') diff --git a/examples/tests/test_version.py b/examples/tests/test_version.py index 1682316..52c0660 100644 --- a/examples/tests/test_version.py +++ b/examples/tests/test_version.py @@ -1,6 +1,6 @@ from arduino_alvik import ArduinoAlvik from time import sleep_ms -import sys + alvik = ArduinoAlvik() @@ -16,4 +16,4 @@ except KeyboardInterrupt as e: print('over') alvik.stop() - sys.exit() \ No newline at end of file + break \ No newline at end of file