From a65ad1470cafcfb2245d1cf6ab1f58a769c74b23 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Fri, 31 Oct 2025 16:09:41 +0000 Subject: [PATCH 01/33] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5187815..3567d58 100644 --- a/README.md +++ b/README.md @@ -94,12 +94,12 @@ Repository ### Color Start System | Color | Mission | |-------|-----------| -| Green 🟩 | Run 1 | -| Purple 🟪 | Run 2 | -| Red 🟥| Run 3 | -| Yellow 🟨| Run 4 | -| Blue 🟦| Run 5 | -| Orange 🟧| Run 6 | +| ```Green 🟩 ```| Run 1 | +| ```Purple 🟪 ```| Run 2 | +| ```Red 🟥 ```| Run 3 | +| ```Yellow 🟨 ```| Run 4 | +| ```Blue 🟦 ```| Run 5 | +| ```Orange 🟧 ```| Run 6 | --- From 3a457218125534f324bd6e62bd203513fb3cf608 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Tue, 4 Nov 2025 01:10:02 +0000 Subject: [PATCH 02/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 58 +++++++++------------ 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index c48de0b..ac36537 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -21,7 +21,7 @@ drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK) drive_base.settings(600, 500, 300, 200) drive_base.use_gyro(True) -WALL_DISTANCE = 300 # mm +WALL_DISTANCE = 200 # mm async def drive_forward(): """Drive forward continuously using DriveBase.""" @@ -61,15 +61,9 @@ async def Run1(): # From M8_5.py right_arm.run_angle(50, 500) await drive_base.turn(45) await drive_base.straight(-145) - await drive_base.turn(-60) - await drive_base.straight(90) - await left_arm.run_angle(1000, 450) - await drive_base.straight(-145) - await left_arm.run_angle(1000, -450) - await drive_base.straight(10) - await drive_base.turn(35) - await drive_base.straight(-600) - + await drive_base.turn(-30) + await drive_base.straight(-700) + async def Run2(): # From Heavy_lifting_final.py await drive_base.straight(200) await drive_base.turn(-20) @@ -105,39 +99,37 @@ async def Run3(): # tip the scale.py await drive_base.turn(40) # turning right await left_arm.run_angle(410,-400) #lift a little bit await drive_base.straight(80) - await drive_base.turn(-41) #ma din din din dun 67 41 21 69 + await drive_base.turn(-41) #ma din din din dun 67 41 21 await drive_base.straight(900) async def Run4(): # From Send_Over_Final.py - #Get to mission - await drive_base.straight(920) - await drive_base.turn(-90,Stop.HOLD) - await drive_base.straight(65) - #Solve mission + right_arm.run_angle(800,800) + await drive_base.straight(170) + await drive_base.turn(-90) + + await drive_base.straight(270) + await drive_base.turn(59) + await drive_base.straight(202) + await drive_base.turn(2) + await right_arm.run_angle(350,-800) + await right_arm.run_angle(800,800) + await drive_base.straight(-20) + await drive_base.straight(-35) + await drive_base.turn(-60) + await drive_base.straight(342) + await drive_base.turn(-89) + await drive_base.straight(75) # Tralelo Tralala shark with blue shoes drive_base.turn(-10) - await left_arm.run_angle(10000, 4000) - #Get to Red Start + await left_arm.run_angle(1000,-4000) await drive_base.straight(-110) await drive_base.turn(90) - # while True: - # distance_mm = await lazer_ranger.distance() - # print('distancing...',distance_mm) - - # if distance_mm < 300: - # drive_base.stop - # break - # else: - # drive_base.straight(300) - # print('running...') - # await wait(10) + await multitask( drive_forward(), monitor_distance() ) - - # Add Rishi's code here async def Run5(): await drive_base.straight(519) @@ -159,9 +151,9 @@ async def Run5(): await drive_base.straight(-65) await drive_base.turn(45) await drive_base.straight(175) - await drive_base.turn(24.5) + await drive_base.turn(26) await drive_base.straight(-100) - await right_arm.run_angle(10000, -8500) + await right_arm.run_angle(10000, -9000) await drive_base.straight(100) await right_arm.run_angle(10000, 3500) await drive_base.turn(-30) From 9cdd9886e3b164658fa02e219cc84471a481d205 Mon Sep 17 00:00:00 2001 From: Rishikesh Lolapu <31lolapr@elmbrookstudents.org> Date: Tue, 4 Nov 2025 01:15:50 +0000 Subject: [PATCH 03/33] Update codes_for_scrimmage/hazmat/HazmatCodeChanges.py --- .../hazmat/HazmatCodeChanges.py | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/codes_for_scrimmage/hazmat/HazmatCodeChanges.py b/codes_for_scrimmage/hazmat/HazmatCodeChanges.py index c48de0b..36efc37 100644 --- a/codes_for_scrimmage/hazmat/HazmatCodeChanges.py +++ b/codes_for_scrimmage/hazmat/HazmatCodeChanges.py @@ -140,40 +140,41 @@ async def Run4(): # From Send_Over_Final.py # Add Rishi's code here async def Run5(): - await drive_base.straight(519) - await left_arm.run_angle(-10000, 300) - await left_arm.run_angle(10000, 600) - await drive_base.straight(160) - await drive_base.turn(-30) - await drive_base.straight(50) - await right_arm.run_angle(3000, 3000) - await drive_base.straight(-150) - await drive_base.turn(120) - await drive_base.straight(25) - await right_arm.run_angle(10000, -3000) - await drive_base.straight(-110) - await drive_base.turn(-43) - await right_arm.run_angle(10000, -3000) - await drive_base.straight(295) - await right_arm.run_angle(10000, 9000) - await drive_base.straight(-65) - await drive_base.turn(45) - await drive_base.straight(175) - await drive_base.turn(24.5) - await drive_base.straight(-100) - await right_arm.run_angle(10000, -8500) + await drive_base.straight(700) + await drive_base.turn(-18) await drive_base.straight(100) - await right_arm.run_angle(10000, 3500) - await drive_base.turn(-30) - await drive_base.straight(-300) - await drive_base.turn(-80) - await drive_base.straight(-700) + await drive_base.straight(-205) + await drive_base.turn(63) + await drive_base.straight(125) + await arm_motor.run_angle(1000, -1200) + await drive_base.straight(84) + await arm_motor.run_angle(300, 1200) + await drive_base.straight(-875) # Add - Adi's code here async def Run6(): - await drive_base.straight(750) - await drive_base.straight(-650) + await drive_base.straight(500) + await right_arm.run_angle(300,500) + await drive_base.straight(-75) + await right_arm.run_angle(300, -900) + await drive_base.straight(-350) + await wait(1000) + await drive_base.straight(800) + await drive_base.straight(-200) + await drive_base.turn(-15) + await drive_base.straight(350) + await drive_base.turn(-94) + await drive_base.straight(-80) + await left_arm.run_angle(500, 900) + await drive_base.straight(50) + await drive_base.turn(-10) + await drive_base.straight(50) + await left_arm.run_angle(700, -200) + await drive_base.turn(30) + await drive_base.straight(-60) + await drive_base.turn(80) + await drive_base.straight(-900) # Function to classify color based on HSV From 401033b1856dcb34cab47d70beb1a4a6defd538e Mon Sep 17 00:00:00 2001 From: Rishikesh Lolapu <31lolapr@elmbrookstudents.org> Date: Tue, 4 Nov 2025 01:18:44 +0000 Subject: [PATCH 04/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 61 ++++++++++----------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index ac36537..ae79328 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -132,41 +132,40 @@ async def Run4(): # From Send_Over_Final.py # Add Rishi's code here async def Run5(): - await drive_base.straight(519) - await left_arm.run_angle(-10000, 300) - await left_arm.run_angle(10000, 600) - await drive_base.straight(160) - await drive_base.turn(-30) - await drive_base.straight(50) - await right_arm.run_angle(3000, 3000) - await drive_base.straight(-150) - await drive_base.turn(120) - await drive_base.straight(25) - await right_arm.run_angle(10000, -3000) - await drive_base.straight(-110) - await drive_base.turn(-43) - await right_arm.run_angle(10000, -3000) - await drive_base.straight(295) - await right_arm.run_angle(10000, 9000) - await drive_base.straight(-65) - await drive_base.turn(45) - await drive_base.straight(175) - await drive_base.turn(26) - await drive_base.straight(-100) - await right_arm.run_angle(10000, -9000) + await drive_base.straight(700) + await drive_base.turn(-18) await drive_base.straight(100) - await right_arm.run_angle(10000, 3500) - await drive_base.turn(-30) - await drive_base.straight(-300) - await drive_base.turn(-80) - await drive_base.straight(-700) - + await drive_base.straight(-205) + await drive_base.turn(63) + await drive_base.straight(125) + await arm_motor.run_angle(1000, -1200) + await drive_base.straight(84) + await arm_motor.run_angle(300, 1200) + await drive_base.straight(-875) # Add - Adi's code here async def Run6(): - await drive_base.straight(750) - await drive_base.straight(-650) - + await drive_base.straight(500) + await right_arm.run_angle(300,500) + await drive_base.straight(-75) + await right_arm.run_angle(300, -900) + await drive_base.straight(-350) + await wait(1000) + await drive_base.straight(800) + await drive_base.straight(-200) + await drive_base.turn(-15) + await drive_base.straight(350) + await drive_base.turn(-94) + await drive_base.straight(-80) + await left_arm.run_angle(500, 900) + await drive_base.straight(50) + await drive_base.turn(-10) + await drive_base.straight(50) + await left_arm.run_angle(700, -200) + await drive_base.turn(30) + await drive_base.straight(-60) + await drive_base.turn(80) + await drive_base.straight(-900) # Function to classify color based on HSV def detect_color(h, s, v, reflected): From 3b81a3ff2bb65738738cb6c1b099539f9fc9b591 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Tue, 4 Nov 2025 02:57:00 +0000 Subject: [PATCH 05/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 54 ++++++++++----------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index ae79328..6037463 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -45,24 +45,35 @@ async def monitor_distance(): # New Section async def Run1(): # From M8_5.py - left_arm.run_angle(1000, -300) - right_arm.run_angle(1000, 500) + left_arm.run_angle(1000, 300) + right_arm.run_angle(1000,500) await drive_base.straight(320) - await right_arm.run_angle(5000, -500, Stop.HOLD) - await right_arm.run_angle(5000, 500, Stop.HOLD) - await right_arm.run_angle(5000, -500, Stop.HOLD) - await right_arm.run_angle(5000, 500, Stop.HOLD) - await right_arm.run_angle(5000, -500, Stop.HOLD) + + await right_arm.run_angle(5000,-500, Stop.HOLD) + await right_arm.run_angle(5000,500, Stop.HOLD) + await right_arm.run_angle(5000,-500, Stop.HOLD) + await right_arm.run_angle(5000,500, Stop.HOLD) + await right_arm.run_angle(5000,-500, Stop.HOLD) + await drive_base.turn(-20) await drive_base.straight(277) await drive_base.turn(20) await drive_base.straight(65) + await drive_base.turn(-30) - right_arm.run_angle(50, 500) + right_arm.run_angle(70,500) await drive_base.turn(45) await drive_base.straight(-145) - await drive_base.turn(-30) - await drive_base.straight(-700) + await drive_base.turn(-60) + await drive_base.straight(90) + await left_arm.run_angle(1000,-450) + await drive_base.straight(-150) + await left_arm.run_angle(1000,450) + await drive_base.straight(27.67) #turns back to solve market place + await drive_base.turn(90) #Will solve market place + await drive_base.straight(-450) + await drive_base.turn(70) + await drive_base.straight(600) async def Run2(): # From Heavy_lifting_final.py await drive_base.straight(200) @@ -104,27 +115,16 @@ async def Run3(): # tip the scale.py async def Run4(): # From Send_Over_Final.py - right_arm.run_angle(800,800) - await drive_base.straight(170) - await drive_base.turn(-90) - await drive_base.straight(270) - await drive_base.turn(59) - await drive_base.straight(202) - await drive_base.turn(2) - await right_arm.run_angle(350,-800) - await right_arm.run_angle(800,800) - await drive_base.straight(-20) - await drive_base.straight(-35) - await drive_base.turn(-60) - await drive_base.straight(342) - await drive_base.turn(-89) - await drive_base.straight(75) # Tralelo Tralala shark with blue shoes + await drive_base.straight(920) + await drive_base.turn(-90,Stop.HOLD) + await drive_base.straight(65) + #Solve drive_base.turn(-10) - await left_arm.run_angle(1000,-4000) + await left_arm.run_angle(10000,-4000) await drive_base.straight(-110) await drive_base.turn(90) - + await multitask( drive_forward(), monitor_distance() From 0c7633d92dd3470c281db4bcdd60e48a1b123d89 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Tue, 4 Nov 2025 18:21:26 +0000 Subject: [PATCH 06/33] Update missions/M8_5.py --- missions/M8_5.py | 61 +++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/missions/M8_5.py b/missions/M8_5.py index 95ecc9e..c91d27a 100644 --- a/missions/M8_5.py +++ b/missions/M8_5.py @@ -19,31 +19,44 @@ drive_base.settings(600,500,300,200) drive_base.use_gyro(True) async def main(): - left_arm.run_angle(1000, 300) - right_arm.run_angle(1000,500) - await drive_base.straight(320) + + right_arm.run_angle(1000,450) + left_arm.run_angle(500,-80) + await drive_base.straight(200) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) + await drive_base.turn(-40) + await drive_base.straight(325) + await left_arm.run_angle(500,80) - await drive_base.turn(-20) - await drive_base.straight(277) - await drive_base.turn(20) - await drive_base.straight(65) + await drive_base.straight(-100) + await drive_base.straight(50) + await left_arm.run_angle(500,-170) + + await drive_base.straight(-270) + await drive_base.turn(40) + await drive_base.straight(135) + left_arm.run_angle(1000,-670) + + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + right_arm.run_angle(5000,450, Stop.HOLD) + + await drive_base.turn(-35) + await drive_base.straight(300) + await drive_base.turn(63) + await drive_base.straight(170) + + await drive_base.turn(-80) + await drive_base.straight(87) + await drive_base.turn(-15) + + await drive_base.straight(-120) + await drive_base.turn(-100) + await drive_base.straight(300) + await drive_base.turn(-45) + await drive_base.straight(500) - await drive_base.turn(-30) - right_arm.run_angle(50,500) - await drive_base.turn(45) - await drive_base.straight(-145) - await drive_base.turn(-60) - await drive_base.straight(90) - await left_arm.run_angle(1000,-450) - await drive_base.straight(-145) - await left_arm.run_angle(1000,450) - await drive_base.straight(10) - await drive_base.turn(35) - await drive_base.straight(-600) run_task(main()) \ No newline at end of file From debbc4e4d0abc2cd6709f8799a8102553bd9ddaa Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 00:03:03 +0000 Subject: [PATCH 07/33] Delete missions/Set2.py --- missions/Set2.py | 50 ------------------------------------------------ 1 file changed, 50 deletions(-) delete mode 100644 missions/Set2.py diff --git a/missions/Set2.py b/missions/Set2.py deleted file mode 100644 index 9298da3..0000000 --- a/missions/Set2.py +++ /dev/null @@ -1,50 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch, run_task, multitask - -hub = PrimeHub() - -# Initialize both motors. In this example, the motor on the -# left must turn counterclockwise to make the robot go forward. -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -arm_motor = Motor(Port.D, Direction.CLOCKWISE) -arm_motor_left= Motor(Port.C, Direction.CLOCKWISE) -# Initialize the drive base. In this example, the wheel diameter is 56mm. -# The distance between the two wheel-ground contact points is 112mm. -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) - -print('The default settings are: ' + str(drive_base.settings())) -drive_base.settings(300,1000,300,750) -# Optionally, uncomment the line below to use the gyro for improved accuracy. -drive_base.use_gyro(True) - -async def main(): - await drive_base.straight(519) - await arm_motor_left.run_angle(-10000, 300) - await arm_motor_left.run_angle(10000, 600) - await drive_base.straight(160) - await drive_base.turn(-30) - await drive_base.straight(50) - await arm_motor.run_angle(3000, 3000) - await drive_base.straight(-150) - await drive_base.turn(135) - await drive_base.straight(50) - await arm_motor.run_angle(10000, -3000) - await drive_base.straight(-100) - await drive_base.turn(-54) - await arm_motor.run_angle(10000, -3000) - await drive_base.straight(250) - await drive_base.turn(-5) - await arm_motor.run_angle(10000, 7000) - await drive_base.straight(-50) - await drive_base.turn(68) - await arm_motor.run_angle(10000, -6000) - await drive_base.straight(200) - await arm_motor.run_angle(10000, 4000) - await drive_base.turn(-40) - await arm_motor.run_angle(10000, 7000) -run_task(main()) \ No newline at end of file From b91e701f4c7bbb710d9f4d82fa5275e3a098e1ed Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 00:03:28 +0000 Subject: [PATCH 08/33] Upload files to "missions" from risshi ramdom ahhhh repo --- missions/Rishi.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 missions/Rishi.py diff --git a/missions/Rishi.py b/missions/Rishi.py new file mode 100644 index 0000000..7d84ee2 --- /dev/null +++ b/missions/Rishi.py @@ -0,0 +1,42 @@ +from pybricks.hubs import PrimeHub +from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor +from pybricks.parameters import Button, Color, Direction, Port, Side, Stop +from pybricks.robotics import DriveBase +from pybricks.tools import wait, StopWatch, run_task, multitask + +hub = PrimeHub() + +# Initialize both motors. In this example, the motor on the +# left must turn counterclockwise to make the robot go forward. +left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) +right_motor = Motor(Port.B) + +arm_motor = Motor(Port.D, Direction.CLOCKWISE) +arm_motor_left= Motor(Port.C, Direction.CLOCKWISE) +# Initialize the drive base. In this example, the wheel diameter is 56mm. +# The distance between the two wheel-ground contact points is 112mm. +drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) + +print('The default settings are: ' + str(drive_base.settings())) +drive_base.settings(300,1000,300,750) +# Optionally, uncomment the line below to use the gyro for improved accuracy. +drive_base.use_gyro(True) + +async def main(): + await drive_base.straight(519) + await arm_motor_left.run_angle(-10000, 300) + await arm_motor_left.run_angle(10000, 600) + await drive_base.straight(160) + await drive_base.turn(-30) + await drive_base.straight(50) + await arm_motor.run_angle(3000, 3000) + await drive_base.straight(-150) + await drive_base.turn(135) + await drive_base.straight(50) + await arm_motor.run_angle(10000, -3000) + await drive_base.straight(-100) + await drive_base.turn(-54) + await arm_motor.run_angle(10000, -3000) + await drive_base.straight(200) + await arm_motor.run_angle(10000, 10000) +run_task(main()) \ No newline at end of file From 14bc8d291a1db58569f55faac5b32f9c248f5e75 Mon Sep 17 00:00:00 2001 From: Rishikesh Lolapu <31lolapr@elmbrookstudents.org> Date: Thu, 6 Nov 2025 00:58:52 +0000 Subject: [PATCH 09/33] Add missions/Hypo.py --- missions/Hypo.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 missions/Hypo.py diff --git a/missions/Hypo.py b/missions/Hypo.py new file mode 100644 index 0000000..47064db --- /dev/null +++ b/missions/Hypo.py @@ -0,0 +1,37 @@ +from pybricks.hubs import PrimeHub +from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor +from pybricks.parameters import Button, Color, Direction, Port, Side, Stop +from pybricks.robotics import DriveBase +from pybricks.tools import wait, StopWatch, run_task, multitask + +hub = PrimeHub() + +# Initialize both motors. In this example, the motor on the +# left must turn counterclockwise to make the robot go forward. +left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) +right_motor = Motor(Port.B) + +arm_motor = Motor(Port.D, Direction.CLOCKWISE) +arm_motor_left= Motor(Port.C, Direction.CLOCKWISE) +# Initialize the drive base. In this example, the wheel diameter is 56mm. +# The distance between the two wheel-ground contact points is 112mm. +drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) + +print('The default settings are: ' + str(drive_base.settings())) +drive_base.settings(300,1000,300,750) +# Optionally, uncomment the line below to use the gyro for improved accuracy. +drive_base.use_gyro(True) + +async def main(): + await drive_base.straight(700) + await drive_base.turn(-17) + await drive_base.straight(100) + await drive_base.straight(-205) + await drive_base.turn(62) + await drive_base.straight(125) + await arm_motor.run_angle(1000, -1200) + await drive_base.straight(87) + await arm_motor.run_angle(300, 1200) + await drive_base.straight(-875) + +run_task(main()) \ No newline at end of file From 9a573c4eb23ba189732b272dbaa91a888f85e45f Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:03:46 +0000 Subject: [PATCH 10/33] Delete missions/Bautism.py --- missions/Bautism.py | 45 --------------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 missions/Bautism.py diff --git a/missions/Bautism.py b/missions/Bautism.py deleted file mode 100644 index aeb80c2..0000000 --- a/missions/Bautism.py +++ /dev/null @@ -1,45 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch, run_task - -hub = PrimeHub() - -# Initialize both motors. In this example, the motor on the -# left must turn counterclockwise to make the robot go forward. -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -arm_motor = Motor(Port.D, Direction.CLOCKWISE) -arm_motor_left= Motor(Port.C, Direction.CLOCKWISE) -# Initialize the drive base. In this example, the wheel diameter is 56mm. -# The distance between the two wheel-ground contact points is 112mm. -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) - -print('The default settings are: ' + str(drive_base.settings())) -drive_base.settings(300,1000,300,750) -# Optionally, uncomment the line below to use the gyro for improved accuracy. -drive_base.use_gyro(True) - -async def main(): - await drive_base.straight(519) - await arm_motor_left.run_angle(300, -100) - await arm_motor_left.run_angle(300, 500) - await drive_base.straight(180) - await drive_base.turn(-37) - await drive_base.straight(50) - await arm_motor.run_angle(300, -400) - await drive_base.straight(-150) - await drive_base.turn(135) - await drive_base.straight(50) - await arm_motor.run_angle(300, 400) - await drive_base.straight(-75) - await arm_motor.run_angle(300, 300) - await drive_base.turn(-50) - await drive_base.straight(162) - await arm_motor.run_angle(100, -200) - await drive_base.straight(30) - await arm_motor.run_angle(50,-500) - -run_task(main()) \ No newline at end of file From 5f0ffea7bc9ca8eb09784e8659e449265445a9fb Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:04:31 +0000 Subject: [PATCH 11/33] Delete missions/Boat_mission.py --- missions/Boat_mission.py | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 missions/Boat_mission.py diff --git a/missions/Boat_mission.py b/missions/Boat_mission.py deleted file mode 100644 index 6d87949..0000000 --- a/missions/Boat_mission.py +++ /dev/null @@ -1,27 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task,multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) - -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) - -drive_base.settings(880,850,700,700) - -drive_base.use_gyro(True) - -first_run = True - -async def main(): - await drive_base.straight(750) - await drive_base.straight(-650) - -run_task(main()) \ No newline at end of file From d056255994b21babf56a566b8375dd85374f5295 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:04:37 +0000 Subject: [PATCH 12/33] Delete missions/Boat.py --- missions/Boat.py | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 missions/Boat.py diff --git a/missions/Boat.py b/missions/Boat.py deleted file mode 100644 index bb42eb7..0000000 --- a/missions/Boat.py +++ /dev/null @@ -1,27 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task,multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) - -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) - -drive_base.settings(550,700,100,100) - -drive_base.use_gyro(True) - -first_run = False - -async def main(): - await drive_base.straight(750) - await drive_base.straight(-650) - -run_task(main()) \ No newline at end of file From eea26150f9ae54ff85caaf8f4b69a1a20eebd79c Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:05:24 +0000 Subject: [PATCH 13/33] Upload files to "missions" --- missions/Boat.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 missions/Boat.py diff --git a/missions/Boat.py b/missions/Boat.py new file mode 100644 index 0000000..bb42eb7 --- /dev/null +++ b/missions/Boat.py @@ -0,0 +1,27 @@ +from pybricks.hubs import PrimeHub +from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor +from pybricks.parameters import Button, Color, Direction, Port, Side, Stop +from pybricks.robotics import DriveBase +from pybricks.tools import wait, StopWatch +from pybricks.tools import run_task,multitask + +hub = PrimeHub() + +left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) +right_motor = Motor(Port.B) +left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) +right_arm = Motor(Port.D) + +drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) + +drive_base.settings(550,700,100,100) + +drive_base.use_gyro(True) + +first_run = False + +async def main(): + await drive_base.straight(750) + await drive_base.straight(-650) + +run_task(main()) \ No newline at end of file From b97dcf6837097277fb3f360bc7111245246235a2 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:05:57 +0000 Subject: [PATCH 14/33] Delete missions/Heavy lifting.py --- missions/Heavy lifting.py | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 missions/Heavy lifting.py diff --git a/missions/Heavy lifting.py b/missions/Heavy lifting.py deleted file mode 100644 index 643e47d..0000000 --- a/missions/Heavy lifting.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task, multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) -drive_base.settings(600,500,300,200) -drive_base.use_gyro(True) - -async def main(): - await right_arm.run_angle(2000,1000) - - await drive_base.straight(200) - await drive_base.turn(-20) - await drive_base.straight(525) - await drive_base.turn(60) - await drive_base.straight(30) - - await right_arm.run_angle(2000,-1000) - await drive_base.straight(30) - await right_arm.run_angle(3000,1000) - await drive_base.straight(-60) - - await drive_base.turn(-60) - await drive_base.straight(-525) - await drive_base.turn(20) - await drive_base.straight(-200) - From 6c6b7f1f02ecadbf5c7fba3792c8ca7121897590 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:06:05 +0000 Subject: [PATCH 15/33] Delete missions/Heavy_lifting_final.py --- missions/Heavy_lifting_final.py | 36 --------------------------------- 1 file changed, 36 deletions(-) delete mode 100644 missions/Heavy_lifting_final.py diff --git a/missions/Heavy_lifting_final.py b/missions/Heavy_lifting_final.py deleted file mode 100644 index 5a9dd1d..0000000 --- a/missions/Heavy_lifting_final.py +++ /dev/null @@ -1,36 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task, multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) -drive_base.settings(600,500,300,200) -drive_base.use_gyro(True) - -async def main(): - #Get to mission - await drive_base.straight(200) - await drive_base.turn(-20) - await drive_base.straight(525) - await drive_base.turn(60) - #Solve mission - await drive_base.straight(50) - await right_arm.run_angle(2000,1000) - await drive_base.straight(-50) - await drive_base.turn(45) - await drive_base.straight(50) - await right_arm.run_angle(350,-1000) - #Return home - await drive_base.straight(-100) - await drive_base.turn(-100) - await drive_base.straight(-600) -run_task(main()) \ No newline at end of file From 9ca07a36a85212810bc05427473762f5b1d420e2 Mon Sep 17 00:00:00 2001 From: Rishikesh Lolapu <31lolapr@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:06:09 +0000 Subject: [PATCH 16/33] Update missions/Boat.py --- missions/Boat.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/missions/Boat.py b/missions/Boat.py index bb42eb7..47064db 100644 --- a/missions/Boat.py +++ b/missions/Boat.py @@ -2,26 +2,36 @@ from pybricks.hubs import PrimeHub from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor from pybricks.parameters import Button, Color, Direction, Port, Side, Stop from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task,multitask +from pybricks.tools import wait, StopWatch, run_task, multitask hub = PrimeHub() +# Initialize both motors. In this example, the motor on the +# left must turn counterclockwise to make the robot go forward. left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) right_motor = Motor(Port.B) -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) +arm_motor = Motor(Port.D, Direction.CLOCKWISE) +arm_motor_left= Motor(Port.C, Direction.CLOCKWISE) +# Initialize the drive base. In this example, the wheel diameter is 56mm. +# The distance between the two wheel-ground contact points is 112mm. drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) -drive_base.settings(550,700,100,100) - +print('The default settings are: ' + str(drive_base.settings())) +drive_base.settings(300,1000,300,750) +# Optionally, uncomment the line below to use the gyro for improved accuracy. drive_base.use_gyro(True) -first_run = False - async def main(): - await drive_base.straight(750) - await drive_base.straight(-650) - + await drive_base.straight(700) + await drive_base.turn(-17) + await drive_base.straight(100) + await drive_base.straight(-205) + await drive_base.turn(62) + await drive_base.straight(125) + await arm_motor.run_angle(1000, -1200) + await drive_base.straight(87) + await arm_motor.run_angle(300, 1200) + await drive_base.straight(-875) + run_task(main()) \ No newline at end of file From 4b7491637d3b2bab7f572c7d01cd2740f2db40b5 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:06:20 +0000 Subject: [PATCH 17/33] Delete missions/Lift.py --- missions/Lift.py | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 missions/Lift.py diff --git a/missions/Lift.py b/missions/Lift.py deleted file mode 100644 index a5e1773..0000000 --- a/missions/Lift.py +++ /dev/null @@ -1,34 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task, multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) -drive_base.settings(600,500,300,200) -drive_base.use_gyro(True) - -async def main(): - await drive_base.straight(200) - await drive_base.turn(-20) - await drive_base.straight(525) - await drive_base.turn(60) - - await drive_base.straight(50) - await right_arm.run_angle(2000,1000) - await drive_base.straight(-50) - await drive_base.turn(45) - await drive_base.straight(50) - await right_arm.run_angle(350,-1000) - - await drive_base.turn(-100) - await drive_base.straight(-600) -run_task(main()) \ No newline at end of file From 439aca673f687ce32b73b3ca1ba127653f2ac10b Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:06:28 +0000 Subject: [PATCH 18/33] Delete missions/Lift2.py --- missions/Lift2.py | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 missions/Lift2.py diff --git a/missions/Lift2.py b/missions/Lift2.py deleted file mode 100644 index a5e1773..0000000 --- a/missions/Lift2.py +++ /dev/null @@ -1,34 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task, multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) -drive_base.settings(600,500,300,200) -drive_base.use_gyro(True) - -async def main(): - await drive_base.straight(200) - await drive_base.turn(-20) - await drive_base.straight(525) - await drive_base.turn(60) - - await drive_base.straight(50) - await right_arm.run_angle(2000,1000) - await drive_base.straight(-50) - await drive_base.turn(45) - await drive_base.straight(50) - await right_arm.run_angle(350,-1000) - - await drive_base.turn(-100) - await drive_base.straight(-600) -run_task(main()) \ No newline at end of file From b1f378eae72d53111b1a02036ac40410fb2e9e2b Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:06:43 +0000 Subject: [PATCH 19/33] Delete missions/Sand Mission.py --- missions/Sand Mission.py | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 missions/Sand Mission.py diff --git a/missions/Sand Mission.py b/missions/Sand Mission.py deleted file mode 100644 index 368ba5c..0000000 --- a/missions/Sand Mission.py +++ /dev/null @@ -1,29 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task,multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) - -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) - -drive_base.settings(400,500,100,100) - -drive_base.use_gyro(True) - - -async def main(): - await drive_base.straight(500) - await right_arm.run_angle(300,100) - await drive_base.straight(-100) - await right_arm.run_angle(300,-100) - await drive_base.straight(-350) - -run_task(main()) \ No newline at end of file From 73553b0964fbc2f089e13df847f1ca3a11995ff5 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:07:19 +0000 Subject: [PATCH 20/33] Delete missions/Send_Over.py --- missions/Send_Over.py | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 missions/Send_Over.py diff --git a/missions/Send_Over.py b/missions/Send_Over.py deleted file mode 100644 index 61e2d37..0000000 --- a/missions/Send_Over.py +++ /dev/null @@ -1,31 +0,0 @@ -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch -from pybricks.tools import run_task, multitask - -hub = PrimeHub() - -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE) -right_arm = Motor(Port.D) - -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180) - -drive_base.settings(600,500,300,200) -drive_base.use_gyro(True) - -async def main(): - - await drive_base.straight(915) - await drive_base.turn(-90) - await drive_base.straight(60) - await left_arm.run_angle(10000,-4000) - await drive_base.straight(-90) - await drive_base.turn(80) - await drive_base.straight(2000) - -run_task(main()) \ No newline at end of file From 8d4b296331517aafcf6dae11c7ff7705a79405e5 Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:08:04 +0000 Subject: [PATCH 21/33] Delete missions/mission_09_old.py --- missions/mission_09_old.py | 44 -------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 missions/mission_09_old.py diff --git a/missions/mission_09_old.py b/missions/mission_09_old.py deleted file mode 100644 index ffdf445..0000000 --- a/missions/mission_09_old.py +++ /dev/null @@ -1,44 +0,0 @@ -# ---JOHANNES--- -# THIS CODE IS NOT USED ANYMORE AND SHOULD NOT BE USED!!!!!! -from pybricks.hubs import PrimeHub -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.robotics import DriveBase -from pybricks.tools import wait, StopWatch - -hub = PrimeHub() - -# Initialize both motors. In this example, the motor on the -# left must turn counterclockwise to make the robot go forward. -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) - -arm_motor = Motor(Port.E, Direction.CLOCKWISE) -arm_motor.run_angle(299,90, Stop.HOLD) -# Initialize the drive base. In this example, the wheel diameter is 56mm. -# The distance between the two wheel-ground contact points is 112mm. -drive_base = DriveBase(left_motor, right_motor, wheel_diameter=54, axle_track=140) - -print('The default settings are: ' + str(drive_base.settings())) -drive_base.settings(100,1000,166,750) -# Optionally, uncomment the line below to use the gyro for improved accuracy. -drive_base.use_gyro(True) - -async def solveM9(): - print("Solving Mission 9") - await drive_base.turn(45) - await drive_base.straight(260) - await arm_motor.run_angle(500,-500, Stop.HOLD) - await drive_base.straight(-40) - await drive_base.turn(92) - await drive_base.straight(-120) - await drive_base.straight(220) - await arm_motor.run_angle(500,100, Stop.HOLD) - await drive_base.turn(-50) - await drive_base.straight(-600) -async def main(): - await drive_base.straight(50) - print("Hello, Robot is starting to run.") - await solveM9() - -run_task(main()) \ No newline at end of file From a690350d1d042eef906624a594583eff8fc5c3a7 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:08:31 +0000 Subject: [PATCH 22/33] Update missions/Send_Over_Final.py --- missions/Send_Over_Final.py | 45 ++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/missions/Send_Over_Final.py b/missions/Send_Over_Final.py index db9a179..61a1f33 100644 --- a/missions/Send_Over_Final.py +++ b/missions/Send_Over_Final.py @@ -19,28 +19,41 @@ drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track= drive_base.settings(600,500,300,200) drive_base.use_gyro(True) +WALL_DISTANCE = 200 # mm + +async def drive_forward(): + """Drive forward continuously using DriveBase.""" + drive_base.drive(400, 0) + + +async def monitor_distance(): + """Monitor ultrasonic sensor and stop when wall is detected.""" + while True: + distance = await lazer_ranger.distance() + print('Distancing...',distance) + + if distance < WALL_DISTANCE: + # Stop the drivebase + await drive_base.stop + print(f"Wall detected at {distance}mm!") + break + + # Small delay to prevent overwhelming the sensor + await wait(50) + async def main(): - #Get to mission - await drive_base.straight(920) + await drive_base.straight(-920) await drive_base.turn(-90,Stop.HOLD) await drive_base.straight(65) - #Solve mission + #Solve drive_base.turn(-10) await left_arm.run_angle(10000,-4000) - #Get to Red Start await drive_base.straight(-110) await drive_base.turn(90) - await drive_base.straight(500) - while True: - distance_mm = await lazer_ranger.distance() - print('distancing...',distance_mm) - - if distance_mm < 300: - drive_base.stop - break - else: - drive_base.straight(300) - print('running...') - await wait(10) +await multitask( + drive_forward(), + monitor_distance() + ) + run_task(main()) \ No newline at end of file From e92404394566d4e4df363a5595c442f418ee31ab Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:11:00 +0000 Subject: [PATCH 23/33] Upload files to "utils/tests" --- utils/tests/colorsensortest.py | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 utils/tests/colorsensortest.py diff --git a/utils/tests/colorsensortest.py b/utils/tests/colorsensortest.py new file mode 100644 index 0000000..b01d0d9 --- /dev/null +++ b/utils/tests/colorsensortest.py @@ -0,0 +1,45 @@ +from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor +from pybricks.parameters import Button, Color, Direction, Port, Side, Stop +from pybricks.tools import run_task, multitask +from pybricks.tools import wait, StopWatch +from pybricks.robotics import DriveBase +from pybricks.hubs import PrimeHub + +# Initialize hub and devices +hub = PrimeHub() + +color_sensor = ColorSensor(Port.F) + +# Color Settings +# https://docs.pybricks.com/en/latest/parameters/color.html +print("Default Detected Colors:", color_sensor.detectable_colors()) + +# Custom color Hue, Saturation, Brightness value for Lego bricks +Color.MAGENTA = Color(300,100,100) +Color.VIOLET = Color(277,68,32) +Color.BLUE = Color(240,100,100) +Color.CYAN = Color(180,100,100) + +LEGO_BRICKS_COLOR = [ + Color.BLUE, + Color.GREEN, + Color.WHITE, + Color.RED, + Color.YELLOW, + Color.MAGENTA, + Color.VIOLET, + Color.NONE +] +#Update Detectable colors +color_sensor.detectable_colors(LEGO_BRICKS_COLOR) +print(f'Yellow:{Color.YELLOW} : {Color.YELLOW.h}, {Color.YELLOW.s}, {Color.YELLOW.v}') +print("Updated Detected Colors:", color_sensor.detectable_colors()) +async def main(): + while True: + color_reflected_percent = await color_sensor.reflection() + print(color_reflected_percent) + + if color_reflected_percent > 1: # Make sure we actually have color reflections before checking for color + color_detected = await color_sensor.color() + print(f'Detected color:{color_detected} : {color_detected.h}, {color_detected.s}, {color_detected.v}') +run_task(main()) \ No newline at end of file From 074703af1aadfa180dd42a09ee169ab81d60a07d Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:24:37 +0000 Subject: [PATCH 24/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 62 ++++++++++++--------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index 6037463..6d22efd 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -45,35 +45,45 @@ async def monitor_distance(): # New Section async def Run1(): # From M8_5.py - left_arm.run_angle(1000, 300) - right_arm.run_angle(1000,500) - await drive_base.straight(320) + right_arm.run_angle(1000,450) + left_arm.run_angle(500,-80) + await drive_base.straight(200) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) + await drive_base.turn(-40) + await drive_base.straight(325) + await left_arm.run_angle(500,80) - await drive_base.turn(-20) - await drive_base.straight(277) - await drive_base.turn(20) - await drive_base.straight(65) + await drive_base.straight(-100) + await drive_base.straight(50) + await left_arm.run_angle(500,-170) + + await drive_base.straight(-270) + await drive_base.turn(40) + await drive_base.straight(135) + left_arm.run_angle(1000,-670) + + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + right_arm.run_angle(5000,450, Stop.HOLD) + + await drive_base.turn(-35) + await drive_base.straight(300) + await drive_base.turn(63) + await drive_base.straight(170) + + await drive_base.turn(-80) + await drive_base.straight(87) + await drive_base.turn(-15) + + await drive_base.straight(-120) + await drive_base.turn(-100) + await drive_base.straight(300) + await drive_base.turn(-45) + await drive_base.straight(500) - await drive_base.turn(-30) - right_arm.run_angle(70,500) - await drive_base.turn(45) - await drive_base.straight(-145) - await drive_base.turn(-60) - await drive_base.straight(90) - await left_arm.run_angle(1000,-450) - await drive_base.straight(-150) - await left_arm.run_angle(1000,450) - await drive_base.straight(27.67) #turns back to solve market place - await drive_base.turn(90) #Will solve market place - await drive_base.straight(-450) - await drive_base.turn(70) - await drive_base.straight(600) async def Run2(): # From Heavy_lifting_final.py await drive_base.straight(200) From 214ea1c22e0aa876f32872ea06611de5d74d1af9 Mon Sep 17 00:00:00 2001 From: Rishikesh Lolapu <31lolapr@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:24:47 +0000 Subject: [PATCH 25/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 259 +++++++++++++++++--- 1 file changed, 223 insertions(+), 36 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index 6d22efd..a868844 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -45,45 +45,35 @@ async def monitor_distance(): # New Section async def Run1(): # From M8_5.py - right_arm.run_angle(1000,450) - left_arm.run_angle(500,-80) - await drive_base.straight(200) + left_arm.run_angle(1000, 300) + right_arm.run_angle(1000,500) + await drive_base.straight(320) - await drive_base.turn(-40) - await drive_base.straight(325) - await left_arm.run_angle(500,80) + await right_arm.run_angle(5000,-500, Stop.HOLD) + await right_arm.run_angle(5000,500, Stop.HOLD) + await right_arm.run_angle(5000,-500, Stop.HOLD) + await right_arm.run_angle(5000,500, Stop.HOLD) + await right_arm.run_angle(5000,-500, Stop.HOLD) - await drive_base.straight(-100) - await drive_base.straight(50) - await left_arm.run_angle(500,-170) - - await drive_base.straight(-270) - await drive_base.turn(40) - await drive_base.straight(135) - left_arm.run_angle(1000,-670) - - await right_arm.run_angle(5000,-450, Stop.HOLD) - await right_arm.run_angle(5000,450, Stop.HOLD) - await right_arm.run_angle(5000,-450, Stop.HOLD) - await right_arm.run_angle(5000,450, Stop.HOLD) - await right_arm.run_angle(5000,-450, Stop.HOLD) - right_arm.run_angle(5000,450, Stop.HOLD) - - await drive_base.turn(-35) - await drive_base.straight(300) - await drive_base.turn(63) - await drive_base.straight(170) - - await drive_base.turn(-80) - await drive_base.straight(87) - await drive_base.turn(-15) - - await drive_base.straight(-120) - await drive_base.turn(-100) - await drive_base.straight(300) - await drive_base.turn(-45) - await drive_base.straight(500) + await drive_base.turn(-20) + await drive_base.straight(277) + await drive_base.turn(20) + await drive_base.straight(65) + await drive_base.turn(-30) + right_arm.run_angle(70,500) + await drive_base.turn(45) + await drive_base.straight(-145) + await drive_base.turn(-60) + await drive_base.straight(90) + await left_arm.run_angle(1000,-450) + await drive_base.straight(-150) + await left_arm.run_angle(1000,450) + await drive_base.straight(27.67) #turns back to solve market place + await drive_base.turn(90) #Will solve market place + await drive_base.straight(-450) + await drive_base.turn(70) + await drive_base.straight(600) async def Run2(): # From Heavy_lifting_final.py await drive_base.straight(200) @@ -153,6 +143,153 @@ async def Run5(): await arm_motor.run_angle(300, 1200) await drive_base.straight(-875) +# Add - Adi's code here +async def Run6(): +from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor +from pybricks.parameters import Button, Color, Direction, Port, Side, Stop +from pybricks.tools import run_task, multitask +from pybricks.tools import wait, StopWatch +from pybricks.robotics import DriveBase +from pybricks.hubs import PrimeHub + +# Initialize hub and devices +hub = PrimeHub() +left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) +right_motor = Motor(Port.B) +left_arm = Motor(Port.C) +right_arm = Motor(Port.D) +lazer_ranger = UltrasonicSensor(Port.E) +color_sensor = ColorSensor(Port.F) + +# DriveBase configuration +WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels) +AXLE_TRACK = 180 # mm (distance between wheels) +drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK) +drive_base.settings(600, 500, 300, 200) +drive_base.use_gyro(True) + +WALL_DISTANCE = 200 # mm + +async def drive_forward(): + """Drive forward continuously using DriveBase.""" + drive_base.drive(400, 0) + + +async def monitor_distance(): + """Monitor ultrasonic sensor and stop when wall is detected.""" + while True: + distance = await lazer_ranger.distance() + print('Distancing...',distance) + + if distance < WALL_DISTANCE: + # Stop the drivebase + await drive_base.stop + print(f"Wall detected at {distance}mm!") + break + + # Small delay to prevent overwhelming the sensor + await wait(50) + +# New Section +async def Run1(): # From M8_5.py + left_arm.run_angle(1000, 300) + right_arm.run_angle(1000,500) + await drive_base.straight(320) + + await right_arm.run_angle(5000,-500, Stop.HOLD) + await right_arm.run_angle(5000,500, Stop.HOLD) + await right_arm.run_angle(5000,-500, Stop.HOLD) + await right_arm.run_angle(5000,500, Stop.HOLD) + await right_arm.run_angle(5000,-500, Stop.HOLD) + + await drive_base.turn(-20) + await drive_base.straight(277) + await drive_base.turn(20) + await drive_base.straight(65) + + await drive_base.turn(-30) + right_arm.run_angle(70,500) + await drive_base.turn(45) + await drive_base.straight(-145) + await drive_base.turn(-60) + await drive_base.straight(90) + await left_arm.run_angle(1000,-450) + await drive_base.straight(-150) + await left_arm.run_angle(1000,450) + await drive_base.straight(27.67) #turns back to solve market place + await drive_base.turn(90) #Will solve market place + await drive_base.straight(-450) + await drive_base.turn(70) + await drive_base.straight(600) + +async def Run2(): # From Heavy_lifting_final.py + await drive_base.straight(200) + await drive_base.turn(-20) + await drive_base.straight(536) + await drive_base.turn(60, Stop.HOLD) + await drive_base.straight(30) + await right_arm.run_angle(5000, 2900) + await drive_base.straight(40) + await right_arm.run_angle(5000, -4000) + await drive_base.straight(-60) + await drive_base.turn(-60) + await drive_base.straight(-670) + + +async def Run3(): # tip the scale.py + left_arm.run_angle(600,-200) + right_arm.run_angle(500,200) + await drive_base.straight(70) + + await drive_base.turn(-70) + await drive_base.straight(900) + await drive_base.turn(115) + + await drive_base.straight(75) + await drive_base.straight(33) + await right_arm.run_angle(500,-250) + await right_arm.run_angle(500,250) + await drive_base.turn(66) + await drive_base.straight(7) + + await left_arm.run_angle(560,390) #going down + print('turning now...') + await drive_base.turn(40) # turning right + await left_arm.run_angle(410,-400) #lift a little bit + await drive_base.straight(80) + await drive_base.turn(-41) #ma din din din dun 67 41 21 + await drive_base.straight(900) + + +async def Run4(): # From Send_Over_Final.py + + await drive_base.straight(920) + await drive_base.turn(-90,Stop.HOLD) + await drive_base.straight(65) + #Solve + drive_base.turn(-10) + await left_arm.run_angle(10000,-4000) + await drive_base.straight(-110) + await drive_base.turn(90) + + await multitask( + drive_forward(), + monitor_distance() + ) + +# Add Rishi's code here +async def Run5(): + await drive_base.straight(700) + await drive_base.turn(-18) + await drive_base.straight(100) + await drive_base.straight(-205) + await drive_base.turn(63) + await drive_base.straight(125) + await right_arm.run_angle(1000, -1200) + await drive_base.straight(84) + await right_arm.run_angle(300, 1200) + await drive_base.straight(-875) + # Add - Adi's code here async def Run6(): await drive_base.straight(500) @@ -197,6 +334,56 @@ def detect_color(h, s, v, reflected): return "Unknown" +async def main(): + while True: + h, s, v = await color_sensor.hsv() + reflected = await color_sensor.reflection() + color = detect_color(h, s, v, reflected) + + if color == "Red": + print('Running Mission 3') + await Run3() #red + elif color == "Orange": + print('Running Mission 6') + await Run6() #orange + elif color == "Yellow": + print('Running Mission 4') + await Run4() #yellow + elif color == "Green": + print('Running Mission 1') + await Run1() #green - vertically + elif color == "Blue": + print('Running Mission 5') + await Run5() #blue - vertically + elif color == "Purple": + print('Running Mission 2') + await Run2() #purple - vertically + else: + print(f"Unknown color detected (Hue: {h}, Sat: {s}, Val: {v})") + await wait(10) +# Run the main function +run_task(main()) + +# Function to classify color based on HSV +def detect_color(h, s, v, reflected): + if reflected > 4: + if h < 4 or h > 350: # red + return "Red" + elif 3 < h < 40 and s > 70: # orange + return "Orange" + elif 47 < h < 56: # yellow + return "Yellow" + elif 70 < h < 160: # green - do it vertically not horizontally for accuracy + return "Green" + elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy + return "Blue" + elif 260 < h < 350: # purple + return "Purple" + else: + return "Unknown" + return "Unknown" + + async def main(): while True: h, s, v = await color_sensor.hsv() From 69745c053f7bc48d1a7589841d43dc32069cd575 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:26:47 +0000 Subject: [PATCH 26/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 62 ++++++++++++--------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index a868844..daad2b2 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -192,35 +192,45 @@ async def monitor_distance(): # New Section async def Run1(): # From M8_5.py - left_arm.run_angle(1000, 300) - right_arm.run_angle(1000,500) - await drive_base.straight(320) + right_arm.run_angle(1000,450) + left_arm.run_angle(500,-80) + await drive_base.straight(200) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) + await drive_base.turn(-40) + await drive_base.straight(325) + await left_arm.run_angle(500,80) - await drive_base.turn(-20) - await drive_base.straight(277) - await drive_base.turn(20) - await drive_base.straight(65) + await drive_base.straight(-100) + await drive_base.straight(50) + await left_arm.run_angle(500,-170) + + await drive_base.straight(-270) + await drive_base.turn(40) + await drive_base.straight(135) + left_arm.run_angle(1000,-670) + + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + right_arm.run_angle(5000,450, Stop.HOLD) + + await drive_base.turn(-35) + await drive_base.straight(300) + await drive_base.turn(63) + await drive_base.straight(170) + + await drive_base.turn(-80) + await drive_base.straight(87) + await drive_base.turn(-15) + + await drive_base.straight(-120) + await drive_base.turn(-100) + await drive_base.straight(300) + await drive_base.turn(-45) + await drive_base.straight(500) - await drive_base.turn(-30) - right_arm.run_angle(70,500) - await drive_base.turn(45) - await drive_base.straight(-145) - await drive_base.turn(-60) - await drive_base.straight(90) - await left_arm.run_angle(1000,-450) - await drive_base.straight(-150) - await left_arm.run_angle(1000,450) - await drive_base.straight(27.67) #turns back to solve market place - await drive_base.turn(90) #Will solve market place - await drive_base.straight(-450) - await drive_base.turn(70) - await drive_base.straight(600) async def Run2(): # From Heavy_lifting_final.py await drive_base.straight(200) From 411f46d55ea774fd52d1f819d613e27042023fe7 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:36:51 +0000 Subject: [PATCH 27/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 249 -------------------- 1 file changed, 249 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index daad2b2..6e785c7 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -145,256 +145,7 @@ async def Run5(): # Add - Adi's code here async def Run6(): -from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor -from pybricks.parameters import Button, Color, Direction, Port, Side, Stop -from pybricks.tools import run_task, multitask -from pybricks.tools import wait, StopWatch -from pybricks.robotics import DriveBase -from pybricks.hubs import PrimeHub -# Initialize hub and devices -hub = PrimeHub() -left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) -right_motor = Motor(Port.B) -left_arm = Motor(Port.C) -right_arm = Motor(Port.D) -lazer_ranger = UltrasonicSensor(Port.E) -color_sensor = ColorSensor(Port.F) - -# DriveBase configuration -WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels) -AXLE_TRACK = 180 # mm (distance between wheels) -drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK) -drive_base.settings(600, 500, 300, 200) -drive_base.use_gyro(True) - -WALL_DISTANCE = 200 # mm - -async def drive_forward(): - """Drive forward continuously using DriveBase.""" - drive_base.drive(400, 0) - - -async def monitor_distance(): - """Monitor ultrasonic sensor and stop when wall is detected.""" - while True: - distance = await lazer_ranger.distance() - print('Distancing...',distance) - - if distance < WALL_DISTANCE: - # Stop the drivebase - await drive_base.stop - print(f"Wall detected at {distance}mm!") - break - - # Small delay to prevent overwhelming the sensor - await wait(50) - -# New Section -async def Run1(): # From M8_5.py - right_arm.run_angle(1000,450) - left_arm.run_angle(500,-80) - await drive_base.straight(200) - - await drive_base.turn(-40) - await drive_base.straight(325) - await left_arm.run_angle(500,80) - - await drive_base.straight(-100) - await drive_base.straight(50) - await left_arm.run_angle(500,-170) - - await drive_base.straight(-270) - await drive_base.turn(40) - await drive_base.straight(135) - left_arm.run_angle(1000,-670) - - await right_arm.run_angle(5000,-450, Stop.HOLD) - await right_arm.run_angle(5000,450, Stop.HOLD) - await right_arm.run_angle(5000,-450, Stop.HOLD) - await right_arm.run_angle(5000,450, Stop.HOLD) - await right_arm.run_angle(5000,-450, Stop.HOLD) - right_arm.run_angle(5000,450, Stop.HOLD) - - await drive_base.turn(-35) - await drive_base.straight(300) - await drive_base.turn(63) - await drive_base.straight(170) - - await drive_base.turn(-80) - await drive_base.straight(87) - await drive_base.turn(-15) - - await drive_base.straight(-120) - await drive_base.turn(-100) - await drive_base.straight(300) - await drive_base.turn(-45) - await drive_base.straight(500) - - -async def Run2(): # From Heavy_lifting_final.py - await drive_base.straight(200) - await drive_base.turn(-20) - await drive_base.straight(536) - await drive_base.turn(60, Stop.HOLD) - await drive_base.straight(30) - await right_arm.run_angle(5000, 2900) - await drive_base.straight(40) - await right_arm.run_angle(5000, -4000) - await drive_base.straight(-60) - await drive_base.turn(-60) - await drive_base.straight(-670) - - -async def Run3(): # tip the scale.py - left_arm.run_angle(600,-200) - right_arm.run_angle(500,200) - await drive_base.straight(70) - - await drive_base.turn(-70) - await drive_base.straight(900) - await drive_base.turn(115) - - await drive_base.straight(75) - await drive_base.straight(33) - await right_arm.run_angle(500,-250) - await right_arm.run_angle(500,250) - await drive_base.turn(66) - await drive_base.straight(7) - - await left_arm.run_angle(560,390) #going down - print('turning now...') - await drive_base.turn(40) # turning right - await left_arm.run_angle(410,-400) #lift a little bit - await drive_base.straight(80) - await drive_base.turn(-41) #ma din din din dun 67 41 21 - await drive_base.straight(900) - - -async def Run4(): # From Send_Over_Final.py - - await drive_base.straight(920) - await drive_base.turn(-90,Stop.HOLD) - await drive_base.straight(65) - #Solve - drive_base.turn(-10) - await left_arm.run_angle(10000,-4000) - await drive_base.straight(-110) - await drive_base.turn(90) - - await multitask( - drive_forward(), - monitor_distance() - ) - -# Add Rishi's code here -async def Run5(): - await drive_base.straight(700) - await drive_base.turn(-18) - await drive_base.straight(100) - await drive_base.straight(-205) - await drive_base.turn(63) - await drive_base.straight(125) - await right_arm.run_angle(1000, -1200) - await drive_base.straight(84) - await right_arm.run_angle(300, 1200) - await drive_base.straight(-875) - -# Add - Adi's code here -async def Run6(): - await drive_base.straight(500) - await right_arm.run_angle(300,500) - await drive_base.straight(-75) - await right_arm.run_angle(300, -900) - await drive_base.straight(-350) - await wait(1000) - await drive_base.straight(800) - await drive_base.straight(-200) - await drive_base.turn(-15) - await drive_base.straight(350) - await drive_base.turn(-94) - await drive_base.straight(-80) - await left_arm.run_angle(500, 900) - await drive_base.straight(50) - await drive_base.turn(-10) - await drive_base.straight(50) - await left_arm.run_angle(700, -200) - await drive_base.turn(30) - await drive_base.straight(-60) - await drive_base.turn(80) - await drive_base.straight(-900) - -# Function to classify color based on HSV -def detect_color(h, s, v, reflected): - if reflected > 4: - if h < 4 or h > 350: # red - return "Red" - elif 3 < h < 40 and s > 70: # orange - return "Orange" - elif 47 < h < 56: # yellow - return "Yellow" - elif 70 < h < 160: # green - do it vertically not horizontally for accuracy - return "Green" - elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy - return "Blue" - elif 260 < h < 350: # purple - return "Purple" - else: - return "Unknown" - return "Unknown" - - -async def main(): - while True: - h, s, v = await color_sensor.hsv() - reflected = await color_sensor.reflection() - color = detect_color(h, s, v, reflected) - - if color == "Red": - print('Running Mission 3') - await Run3() #red - elif color == "Orange": - print('Running Mission 6') - await Run6() #orange - elif color == "Yellow": - print('Running Mission 4') - await Run4() #yellow - elif color == "Green": - print('Running Mission 1') - await Run1() #green - vertically - elif color == "Blue": - print('Running Mission 5') - await Run5() #blue - vertically - elif color == "Purple": - print('Running Mission 2') - await Run2() #purple - vertically - else: - print(f"Unknown color detected (Hue: {h}, Sat: {s}, Val: {v})") - await wait(10) -# Run the main function -run_task(main()) - -# Function to classify color based on HSV -def detect_color(h, s, v, reflected): - if reflected > 4: - if h < 4 or h > 350: # red - return "Red" - elif 3 < h < 40 and s > 70: # orange - return "Orange" - elif 47 < h < 56: # yellow - return "Yellow" - elif 70 < h < 160: # green - do it vertically not horizontally for accuracy - return "Green" - elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy - return "Blue" - elif 260 < h < 350: # purple - return "Purple" - else: - return "Unknown" - return "Unknown" - - -async def main(): while True: h, s, v = await color_sensor.hsv() reflected = await color_sensor.reflection() From acc44dac2257966bf8706e77aea4c6e2a9d5e8b0 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:44:09 +0000 Subject: [PATCH 28/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 83 ++++++++++++++------- 1 file changed, 57 insertions(+), 26 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index 6e785c7..3e1ead0 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -45,35 +45,45 @@ async def monitor_distance(): # New Section async def Run1(): # From M8_5.py - left_arm.run_angle(1000, 300) - right_arm.run_angle(1000,500) - await drive_base.straight(320) + right_arm.run_angle(1000,450) + left_arm.run_angle(500,-80) + await drive_base.straight(200) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) - await right_arm.run_angle(5000,500, Stop.HOLD) - await right_arm.run_angle(5000,-500, Stop.HOLD) + await drive_base.turn(-40) + await drive_base.straight(325) + await left_arm.run_angle(500,80) - await drive_base.turn(-20) - await drive_base.straight(277) - await drive_base.turn(20) - await drive_base.straight(65) + await drive_base.straight(-100) + await drive_base.straight(50) + await left_arm.run_angle(500,-170) + + await drive_base.straight(-270) + await drive_base.turn(40) + await drive_base.straight(135) + left_arm.run_angle(1000,-670) + + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + await right_arm.run_angle(5000,450, Stop.HOLD) + await right_arm.run_angle(5000,-450, Stop.HOLD) + right_arm.run_angle(5000,450, Stop.HOLD) + + await drive_base.turn(-35) + await drive_base.straight(300) + await drive_base.turn(63) + await drive_base.straight(170) + + await drive_base.turn(-80) + await drive_base.straight(87) + await drive_base.turn(-15) + + await drive_base.straight(-120) + await drive_base.turn(-100) + await drive_base.straight(300) + await drive_base.turn(-45) + await drive_base.straight(500) - await drive_base.turn(-30) - right_arm.run_angle(70,500) - await drive_base.turn(45) - await drive_base.straight(-145) - await drive_base.turn(-60) - await drive_base.straight(90) - await left_arm.run_angle(1000,-450) - await drive_base.straight(-150) - await left_arm.run_angle(1000,450) - await drive_base.straight(27.67) #turns back to solve market place - await drive_base.turn(90) #Will solve market place - await drive_base.straight(-450) - await drive_base.turn(70) - await drive_base.straight(600) async def Run2(): # From Heavy_lifting_final.py await drive_base.straight(200) @@ -145,7 +155,28 @@ async def Run5(): # Add - Adi's code here async def Run6(): + await drive_base.stop +# Function to classify color based on HSV +def detect_color(h, s, v, reflected): + if reflected > 4: + if h < 4 or h > 350: # red + return "Red" + elif 3 < h < 40 and s > 70: # orange + return "Orange" + elif 47 < h < 56: # yellow + return "Yellow" + elif 70 < h < 160: # green - do it vertically not horizontally for accuracy + return "Green" + elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy + return "Blue" + elif 260 < h < 350: # purple + return "Purple" + else: + return "Unknown" + return "Unknown" + +async def main(): while True: h, s, v = await color_sensor.hsv() reflected = await color_sensor.reflection() From 16e96693cc0fb136a682b95d0dc815650e4faf3a Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:47:54 +0000 Subject: [PATCH 29/33] Update utils/tests/colorsensortest.py --- utils/tests/colorsensortest.py | 44 ++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/utils/tests/colorsensortest.py b/utils/tests/colorsensortest.py index b01d0d9..3d5a8d9 100644 --- a/utils/tests/colorsensortest.py +++ b/utils/tests/colorsensortest.py @@ -15,11 +15,10 @@ color_sensor = ColorSensor(Port.F) print("Default Detected Colors:", color_sensor.detectable_colors()) # Custom color Hue, Saturation, Brightness value for Lego bricks -Color.MAGENTA = Color(300,100,100) -Color.VIOLET = Color(277,68,32) +Color.MAGENTA = Color(315,100,60) Color.BLUE = Color(240,100,100) Color.CYAN = Color(180,100,100) - +Color.RED = Color(350, 100, 100) LEGO_BRICKS_COLOR = [ Color.BLUE, Color.GREEN, @@ -27,19 +26,44 @@ LEGO_BRICKS_COLOR = [ Color.RED, Color.YELLOW, Color.MAGENTA, - Color.VIOLET, Color.NONE ] +magenta_counter = 0 +stable_color = None +real_color = None #Update Detectable colors color_sensor.detectable_colors(LEGO_BRICKS_COLOR) print(f'Yellow:{Color.YELLOW} : {Color.YELLOW.h}, {Color.YELLOW.s}, {Color.YELLOW.v}') print("Updated Detected Colors:", color_sensor.detectable_colors()) -async def main(): +async def main(): while True: + global magenta_counter, stable_color, real_color color_reflected_percent = await color_sensor.reflection() - print(color_reflected_percent) - - if color_reflected_percent > 1: # Make sure we actually have color reflections before checking for color - color_detected = await color_sensor.color() - print(f'Detected color:{color_detected} : {color_detected.h}, {color_detected.s}, {color_detected.v}') + print("Reflection: ", color_reflected_percent) + if color_reflected_percent > 15: + color_detected = await color_sensor.color() + + if color_detected == Color.MAGENTA: + magenta_counter += 1 + else: + magenta_counter = 0 + stable_color = color_detected + + # Only accept magenta if it's been stable for a while - usually triggers before other colors so we gotta do this :| + if magenta_counter > 10: + stable_color = Color.MAGENTA + if stable_color != Color.MAGENTA: + stable_color = await color_sensor.color() + + real_color = stable_color + #if(color_detected != Color.NONE): + # return + + print("Magenta counter: ", magenta_counter) + if real_color is not None: + print(f'Detected color: {real_color} : {real_color.h}, {real_color.s}, {real_color.v}') + else: + print("No valid color detected yet.") + await wait(50) + run_task(main()) \ No newline at end of file From a50b0cd1d76136a8e65c87e21847e8823bd4d24a Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:50:26 +0000 Subject: [PATCH 30/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index 3e1ead0..3413435 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -46,21 +46,21 @@ async def monitor_distance(): # New Section async def Run1(): # From M8_5.py right_arm.run_angle(1000,450) - left_arm.run_angle(500,-80) + left_arm.run_angle(500,80) await drive_base.straight(200) await drive_base.turn(-40) await drive_base.straight(325) - await left_arm.run_angle(500,80) + await left_arm.run_angle(500,-80) await drive_base.straight(-100) await drive_base.straight(50) - await left_arm.run_angle(500,-170) + await left_arm.run_angle(500,170) await drive_base.straight(-270) await drive_base.turn(40) await drive_base.straight(135) - left_arm.run_angle(1000,-670) + left_arm.run_angle(1000,670) await right_arm.run_angle(5000,-450, Stop.HOLD) await right_arm.run_angle(5000,450, Stop.HOLD) From 974f87c4c49828766ac18f2dd5f8e6e19b16efe7 Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Thu, 6 Nov 2025 01:53:13 +0000 Subject: [PATCH 31/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index 3413435..63a05cf 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -155,7 +155,27 @@ async def Run5(): # Add - Adi's code here async def Run6(): - await drive_base.stop + await drive_base.straight(500) + await right_arm.run_angle(300,500) + await drive_base.straight(-75) + await right_arm.run_angle(300, -900) + await drive_base.straight(-350) + await wait(1000) + await drive_base.straight(800) + await drive_base.straight(-200) + await drive_base.turn(-15) + await drive_base.straight(350) + await drive_base.turn(-94) + await drive_base.straight(-80) + await left_arm.run_angle(500, 900) + await drive_base.straight(50) + await drive_base.turn(-10) + await drive_base.straight(50) + await left_arm.run_angle(700, -200) + await drive_base.turn(30) + await drive_base.straight(-60) + await drive_base.turn(80) + await drive_base.straight(-900) # Function to classify color based on HSV def detect_color(h, s, v, reflected): if reflected > 4: From c7801d17c02fb0bbf5acecde55e75ef74c3bc9ae Mon Sep 17 00:00:00 2001 From: Johannes <31liwaj@elmbrookstudents.org> Date: Fri, 7 Nov 2025 23:14:24 +0000 Subject: [PATCH 32/33] Update codes_for_scrimmage/hazmat/mainhazmatUPD.py --- codes_for_scrimmage/hazmat/mainhazmatUPD.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/codes_for_scrimmage/hazmat/mainhazmatUPD.py b/codes_for_scrimmage/hazmat/mainhazmatUPD.py index 63a05cf..26f4a3d 100644 --- a/codes_for_scrimmage/hazmat/mainhazmatUPD.py +++ b/codes_for_scrimmage/hazmat/mainhazmatUPD.py @@ -143,14 +143,14 @@ async def Run4(): # From Send_Over_Final.py # Add Rishi's code here async def Run5(): await drive_base.straight(700) - await drive_base.turn(-18) - await drive_base.straight(100) - await drive_base.straight(-205) + await drive_base.turn(-20) + await drive_base.straight(110) + await drive_base.straight(-220) await drive_base.turn(63) - await drive_base.straight(125) - await arm_motor.run_angle(1000, -1200) + await drive_base.straight(130) + await right_arm.run_angle(1000, -1200) await drive_base.straight(84) - await arm_motor.run_angle(300, 1200) + await right_arm.run_angle(300, 1200) await drive_base.straight(-875) # Add - Adi's code here From 2d614c0e381ebefc99efa272a3ec8ee172c5f6ce Mon Sep 17 00:00:00 2001 From: Atharv <30nagava@elmbrookstudents.org> Date: Sat, 8 Nov 2025 22:25:56 +0000 Subject: [PATCH 33/33] Update LINEUPS.md well now we have 5 missions? --- LINEUPS.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/LINEUPS.md b/LINEUPS.md index c9a8d30..72ee538 100644 --- a/LINEUPS.md +++ b/LINEUPS.md @@ -2,14 +2,12 @@ ## These are the line-up positions for the robot game for various missions. -- Mission Run #1 (Mission #1) [Right/Blue Home] - The left yellow part of the right arm attachment is positioned with its right edge on the 5th thin line from the left. Note that this is NOT positioned from the back of the robot. +- Mission Run #1 (Run #1) [Right/Blue Home] - The left yellow part of the right arm attachment is positioned with its right edge on the 5th thin line from the left. Note that this is NOT positioned from the back of the robot. -- Mission Run #2 (Send Over) [Right/Blue Home] - The robot should be lined up on the vertical edge of the left home. The robot's right side should be positioned on the 1st thin line from the top. Note that the 0th line is the one that is not part of the curve. +- Mission Run #2 (Tip the scales) [Right/Blue Home] - The middle of the left edge of the robot should be positioned on the 2nd thick line from the left. -- Mission Run #3 (Sand mission) [Right/Blue Home] - The robot should be lined up on the vertical edge of the left home. The robot's left side should be positioned on the 1/2th thin line from the bottom. +- Mission Run #3 (Send Over) [Right/Blue Home] - The robot should be lined up on the vertical edge of the right home. The robot's right edge should be positioned on the 1st thin line from the top. Note that the 0th line is the one that is in the inner curve. -- Mission Run #4 (Boat mission) [Left/Red Home] - The robot should be lined up on the vertical edge of the left home. The robot's right side should be positioned on the 2nd thick line from the bottom. +- Mission Run #4 (Run #4) [Left/Red Home] - The robot's left edge should be positioned on the 2nd thin line from the left. -- Mission Run #5 (Bautism) [Left/Red Home] - The robot's left edge should be positioned at the 1st thick, 2nd thin line from the left. - -- Mission Run #6 (Not-so-heavy Lifting) [Right/Blue Home] - The robot's right edge should be positioned at the 1st thick from the right. \ No newline at end of file +- Mission Run #5 (Boat mission) [Left/Red Home] - There are two alignments for this. When sending off the robot for part 1, the robot should be facing the right home. It's right edge should be positioned at the very bottom edge of the board. Once it completes the pulling part, once it comes back begin part 2. For part 2, the middle of the robot's right side should be positioned in the middle of the 3rd thick and the 3rd thick, 1st thin lines. \ No newline at end of file