From 830d662e08a14526250f81dde6f910b5212e735a Mon Sep 17 00:00:00 2001 From: waldluis Date: Fri, 5 May 2023 10:40:33 +0200 Subject: [PATCH] Added color code driving, changed Plant order, Docu update --- documentation/Robot.docx | Bin 58751 -> 76698 bytes software/roboter/ev3/drive_back.py | 18 ++++++++--- software/roboter/ev3/drive_plant.py | 48 ++++++++++++++++++++++++++++ software/roboter/ev3/plant_1.py | 2 +- software/roboter/ev3/plant_2.py | 2 +- software/roboter/ev3/plant_3.py | 2 +- software/roboter/ev3/plant_4.py | 2 +- software/roboter/ev3/plant_5.py | 2 +- software/roboter/ev3/plant_6.py | 2 +- software/roboter/ev3/sensortest.py | 21 ------------ software/roboter/raspy/functions.py | 8 ++--- 11 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 software/roboter/ev3/drive_plant.py delete mode 100644 software/roboter/ev3/sensortest.py diff --git a/documentation/Robot.docx b/documentation/Robot.docx index dc6588fc45d2fefcd7d7705555971472246edc95..bd36f524ab76f74e1c277f1ab572f47160f891c9 100644 GIT binary patch delta 28332 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 delta 10352 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

?PeYHVSWemW~(|3F8UF< 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 NQpAhHtJQ~%{|C_IA29#` diff --git a/software/roboter/ev3/drive_back.py b/software/roboter/ev3/drive_back.py index 8968f82..0c4d647 100644 --- a/software/roboter/ev3/drive_back.py +++ b/software/roboter/ev3/drive_back.py @@ -8,23 +8,31 @@ motorLeft = LargeMotor(OUTPUT_D) motorRight = LargeMotor(OUTPUT_A) motorUpDown = Motor(OUTPUT_C) motorLeftRight = Motor(OUTPUT_B) -ultraSensor = UltrasonicSensor(INPUT_4) -touchSensor = TouchSensor(INPUT_1) +sensorUltraSonic = UltrasonicSensor(INPUT_4) +sensorTouch = TouchSensor(INPUT_1) + +plantID = int(sys.argv[1]) + +# Set direction of arm rotation back to middle +if plantID % 2 == 0: + leftRight = 50 # rotating right +else: + leftRight = -50 # rotating left motorUpDown.on_for_seconds(SpeedPercent(-50), seconds=2.8) -motorLeftRight.on_for_degrees(SpeedPercent(int(sys.argv[1])), 400) +motorLeftRight.on_for_degrees(SpeedPercent(leftRight), 400) motorLeft.on(SpeedPercent(-70), block=False) motorRight.on(SpeedPercent(-70)) while True: - if ultraSensor.distance_centimeters < 10: + if sensorUltraSonic.distance_centimeters < 10: motorLeft.on(SpeedPercent(-25), block=False) motorRight.on(SpeedPercent(-25)) break -touchSensor.wait_for_pressed(timeout_ms=None, sleep_ms=10) +sensorTouch.wait_for_pressed(timeout_ms=None, sleep_ms=10) motorLeft.off() motorRight.off() \ No newline at end of file diff --git a/software/roboter/ev3/drive_plant.py b/software/roboter/ev3/drive_plant.py new file mode 100644 index 0000000..ab61c49 --- /dev/null +++ b/software/roboter/ev3/drive_plant.py @@ -0,0 +1,48 @@ +#!/usr/bin/env pybricks-micropython +''' +Script to drive robot to plant. +Plant number is passed as argument. +''' + + +from ev3dev2.motor import Motor, LargeMotor, OUTPUT_A, OUTPUT_B, OUTPUT_C, OUTPUT_D, SpeedPercent +from ev3dev2.sensor.lego import ColorSensor +from ev3dev2.sensor import INPUT_2 +import sys + +motorRight = LargeMotor(OUTPUT_A) +motorLeft = LargeMotor(OUTPUT_D) +motorUpDown = Motor(OUTPUT_C) +motorLeftRight = Motor(OUTPUT_B) + +sensorColor = ColorSensor(INPUT_2) + +plantID = int(sys.argv[1]) + +# Set color according to plant number +if plantID == 1 or plantID == 2: + colorCode = ColorSensor.COLOR_RED +elif plantID == 3 or plantID == 4: + colorCode = ColorSensor.COLOR_GREEN +elif plantID == 5 or plantID == 6: + colorCode = ColorSensor.COLOR_BLUE + +# Set direction of arm rotation +if plantID % 2 == 0: + leftRight = -50 # rotating left +else: + leftRight = 50 # rotating right + + +motorRight.on(SpeedPercent(70), block=False) +motorLeft.on(SpeedPercent(70)) + +while True: + if sensorColor.color == colorCode: + break + +motorLeft.off() +motorRight.off() + +motorLeftRight.on_for_degrees(SpeedPercent(leftRight), 400) +motorUpDown.on_for_seconds(SpeedPercent(50), seconds=2.8) \ No newline at end of file diff --git a/software/roboter/ev3/plant_1.py b/software/roboter/ev3/plant_1.py index 588f371..a8eb80d 100644 --- a/software/roboter/ev3/plant_1.py +++ b/software/roboter/ev3/plant_1.py @@ -10,6 +10,6 @@ motorLeftRight = Motor(OUTPUT_B) motorRight.on_for_seconds(SpeedPercent(70), seconds=0.8, block=False) motorLeft.on_for_seconds(SpeedPercent(70), seconds=0.8) -motorLeftRight.on_for_degrees(SpeedPercent(-50), 400) +motorLeftRight.on_for_degrees(SpeedPercent(50), 400) motorUpDown.on_for_seconds(SpeedPercent(50), seconds=2.8) diff --git a/software/roboter/ev3/plant_2.py b/software/roboter/ev3/plant_2.py index 9b50771..a33cc9d 100644 --- a/software/roboter/ev3/plant_2.py +++ b/software/roboter/ev3/plant_2.py @@ -10,7 +10,7 @@ motorLeftRight = Motor(OUTPUT_B) motorRight.on_for_seconds(SpeedPercent(70), seconds=0.8, block=False) motorLeft.on_for_seconds(SpeedPercent(70), seconds=0.8) -motorLeftRight.on_for_degrees(SpeedPercent(50), 400) +motorLeftRight.on_for_degrees(SpeedPercent(-50), 400) motorUpDown.on_for_seconds(SpeedPercent(50), seconds=2.8) diff --git a/software/roboter/ev3/plant_3.py b/software/roboter/ev3/plant_3.py index 8810f91..6df695d 100644 --- a/software/roboter/ev3/plant_3.py +++ b/software/roboter/ev3/plant_3.py @@ -10,7 +10,7 @@ motorLeftRight = Motor(OUTPUT_B) motorRight.on_for_seconds(SpeedPercent(70), seconds=2.2, block=False) motorLeft.on_for_seconds(SpeedPercent(70), seconds=2.2) -motorLeftRight.on_for_degrees(SpeedPercent(-50), 400) +motorLeftRight.on_for_degrees(SpeedPercent(50), 400) motorUpDown.on_for_seconds(SpeedPercent(50), seconds=2.8) diff --git a/software/roboter/ev3/plant_4.py b/software/roboter/ev3/plant_4.py index d7dd665..04304ad 100644 --- a/software/roboter/ev3/plant_4.py +++ b/software/roboter/ev3/plant_4.py @@ -10,6 +10,6 @@ motorLeftRight = Motor(OUTPUT_B) motorRight.on_for_seconds(SpeedPercent(70), seconds=2.2, block=False) motorLeft.on_for_seconds(SpeedPercent(70), seconds=2.2) -motorLeftRight.on_for_degrees(SpeedPercent(50), 400) +motorLeftRight.on_for_degrees(SpeedPercent(-50), 400) motorUpDown.on_for_seconds(SpeedPercent(50), seconds=3) diff --git a/software/roboter/ev3/plant_5.py b/software/roboter/ev3/plant_5.py index bc42413..1d9b6c9 100644 --- a/software/roboter/ev3/plant_5.py +++ b/software/roboter/ev3/plant_5.py @@ -10,7 +10,7 @@ motorLeftRight = Motor(OUTPUT_B) motorRight.on_for_seconds(SpeedPercent(70), seconds=2.7, block=False) motorLeft.on_for_seconds(SpeedPercent(70), seconds=2.7) -motorLeftRight.on_for_degrees(SpeedPercent(-50), 400) +motorLeftRight.on_for_degrees(SpeedPercent(50), 400) motorUpDown.on_for_seconds(SpeedPercent(50), seconds=3) diff --git a/software/roboter/ev3/plant_6.py b/software/roboter/ev3/plant_6.py index 1d9b6c9..bc42413 100644 --- a/software/roboter/ev3/plant_6.py +++ b/software/roboter/ev3/plant_6.py @@ -10,7 +10,7 @@ motorLeftRight = Motor(OUTPUT_B) motorRight.on_for_seconds(SpeedPercent(70), seconds=2.7, block=False) motorLeft.on_for_seconds(SpeedPercent(70), seconds=2.7) -motorLeftRight.on_for_degrees(SpeedPercent(50), 400) +motorLeftRight.on_for_degrees(SpeedPercent(-50), 400) motorUpDown.on_for_seconds(SpeedPercent(50), seconds=3) diff --git a/software/roboter/ev3/sensortest.py b/software/roboter/ev3/sensortest.py deleted file mode 100644 index 66d0f63..0000000 --- a/software/roboter/ev3/sensortest.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python3 -from ev3dev2.motor import LargeMotor, OUTPUT_A, SpeedPercent -from ev3dev2.sensor.lego import TouchSensor, UltrasonicSensor -from ev3dev2.sensor import INPUT_1, INPUT_4 - -m = LargeMotor(OUTPUT_A) -touch = TouchSensor(INPUT_1) -ultraSonic = UltrasonicSensor(INPUT_4) -ultraSonic.MODE_US_DIST_CM - -m.on(SpeedPercent(50)) - -while True: - if ultraSonic.distance_centimeters < 10: - m.on(SpeedPercent(25)) - break - -touch.wait_for_pressed(timeout_ms=None, sleep_ms=10) -m.off() - - diff --git a/software/roboter/raspy/functions.py b/software/roboter/raspy/functions.py index 9129f96..a32d108 100644 --- a/software/roboter/raspy/functions.py +++ b/software/roboter/raspy/functions.py @@ -32,7 +32,9 @@ def drive_plant_thread(plantID, actionID, client: mqtt.Client): actionID (_type_): current ID of driving action client (mqtt.Client): current mqtt client for publishing """ + # FIXME Change to color code driving os.system(f'sshpass -p maker ssh robot@ev3dev.local python3 /home/robot/Programme/plant_{plantID}.py') + # os.system(f'sshpass -p maker ssh robot@ev3dev.local python3 /home/robot/Programme/drive_plant.py {plantID}') print("Measuring Sensors") @@ -40,11 +42,7 @@ def drive_plant_thread(plantID, actionID, client: mqtt.Client): # measure_send_data(plantID, actionID, client) print("Robot driving home") - if plantID % 2 == 0: - leftRight = -50 #rotating left - else: - leftRight = 50 #rotating right - os.system(f'sshpass -p maker ssh robot@ev3dev.local python3 /home/robot/Programme/drive_back.py {leftRight}') + os.system(f'sshpass -p maker ssh robot@ev3dev.local python3 /home/robot/Programme/drive_back.py {plantID}') print("Robot home") #TODO decide about robot occupied message