Compare commits

...

35 Commits

Author SHA1 Message Date
7d168ff378 Merge pull request 'RegionalFinal.py' (#45) from dev into main
Reviewed-on: #45
2025-11-18 00:50:19 +00:00
d5e9a97fc6 RegionalFinal.py
This is the final code. If changes are needed, please contact (31lolapr@elmbrookstudents.org).
2025-11-15 17:13:26 +00:00
913e12f122 Merge pull request 'dev' (#44) from dev into main
Reviewed-on: #44
2025-11-12 01:22:35 +00:00
9e429cf8f1 Update README.md 2025-11-12 01:15:22 +00:00
eae9c77bcf Update README.md 2025-11-12 01:14:40 +00:00
73ca30ed4c Delete commit-graphnew.html 2025-11-12 01:13:09 +00:00
b08d80b4b6 Delete graph.txt 2025-11-12 01:13:04 +00:00
7047a0d227 Delete commit-graph.html 2025-11-12 01:12:58 +00:00
e254c65c56 Merge pull request 'Update missions/tip the scale.py' (#43) from parthiv-dev into dev
Reviewed-on: #43
2025-11-12 01:12:37 +00:00
b3ec4861c7 Merge pull request 'Add codes_for_scrimmage/regional-final/Final_combined.py' (#42) from Rishi_dev into dev
Reviewed-on: #42
2025-11-12 01:12:07 +00:00
alkadienePhoton
9f5a41eace Merge branch 'dev' of https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed into dev
Works
2025-11-11 19:11:13 -06:00
alkadienePhoton
686875a066 Fixed conflicts 2025-11-11 19:10:54 -06:00
alkadienePhoton
6d54f9c2d7 Fixed conflicts 2025-11-11 19:10:21 -06:00
10960a8473 Add codes_for_scrimmage/regional-final/Final_combined.py 2025-11-12 01:06:33 +00:00
19f79b91d1 Update utils/FINAL_STARTER_BLANK_CODE.py 2025-11-12 00:37:21 +00:00
1c0896cbeb Add utils/FINAL_STARTER_BLANK_CODE.py
ayaan is SO ANNOYING BRO
2025-11-12 00:31:22 +00:00
d2738e2615 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-11-09 22:26:09 +00:00
1ee90ac2e1 Update missions/M8_5.py 2025-11-09 22:16:39 +00:00
31f482f576 Update LINEUPS.md 2025-11-09 01:52:54 +00:00
30a5392e56 Update LINEUPS.md 2025-11-09 01:20:19 +00:00
3b22d28e98 Update LINEUPS.md 2025-11-09 01:12:56 +00:00
alkadienePhoton
9cdb70dd80 Merging with actual stuff fixed #2 2025-11-08 17:51:13 -06:00
alkadienePhoton
c3c875e80e Merging with actual stuff fixed 2025-11-08 17:50:29 -06:00
alkadienePhoton
809789837d Merging 2025-11-08 17:48:31 -06:00
39bfe7b307 Merge pull request 'parthiv-dev' (#39) from parthiv-dev into dev
Reviewed-on: #39
2025-11-08 23:45:13 +00:00
alkadienePhoton
80d6300fc0 Merge branch 'dev' of https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed into dev
merging dev
2025-11-08 17:43:45 -06:00
alkadienePhoton
b25a2a5feb Merge branch 'Vickram_dev_' into dev
Merging Vickram_dev_ into dev
2025-11-08 17:40:27 -06:00
2d614c0e38 Update LINEUPS.md
well now we have 5 missions?
2025-11-08 22:25:56 +00:00
c7801d17c0 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-11-07 23:14:24 +00:00
6e82f4d476 Add missions/New_MapReveal/New_MapReveal_Mineshaft.py
Rishi's updated code
2025-11-07 23:12:55 +00:00
9061eef311 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-11-06 01:12:19 +00:00
d1eb92cf25 Merge pull request 'dev' (#35) from dev into main
Reviewed-on: #35
2025-10-31 11:58:01 +00:00
21e8bd68c2 Merge pull request 'dev' (#33) from dev into Johannes_Dev
Reviewed-on: #33
2025-10-31 11:57:09 +00:00
7e1d310e24 New rishi code 2025-10-31 00:29:07 +00:00
37b025088f Merge pull request 'dev' (#30) from dev into Vickram_dev_
Reviewed-on: #30
2025-10-31 00:27:53 +00:00
8 changed files with 558 additions and 44 deletions

View File

@@ -2,14 +2,14 @@
## These are the line-up positions for the robot game for various missions. ## 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. Also, when counting these lines, make sure you count from the inside curve, not the outside.
- 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. <img src="https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed/raw/branch/do-not-merge/r1l.png" alt="Alt text" width="300"/>
- 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 #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 #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 #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 #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 #4 (Run #4) [Left/Red Home] - The robot's left edge should be positioned on the 2nd thick 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. - 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 from the top. For both runs the robot should be facing the blue home.

View File

@@ -63,17 +63,17 @@ Repository
### Installation & Deployment - from the server - everyday ### Installation & Deployment - from the server - everyday
1. Download the file codes_for_scrimmage/hazmat/mainhazmatUPD.py 1. Download the file codes_for_scrimmage/regional-final/Final_combined.py
- You can do this through the repo, by using cURL, or by using git. - You can do this through the repo, by using cURL, or by using git.
- Repo - Go to [codes_for_scrimmage/hazmat/mainhazmatUPD.py](codes_for_scrimmage/hazmat/mainhazmatUPD.py) and click the "Download" button. - Repo - Go to [codes_for_scrimmage/regional-final/Final_combined.py](codes_for_scrimmage/regional-final/Final_combined.py) and click the "Download" button.
- cURL or another HTTP data transferrer - - cURL or another HTTP data transferrer -
```curl -o mainhazmatUPD.py https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed/raw/branch/main/codes_for_scrimmage/hazmat/mainhazmatUPD.py``` ```curl -o Final_combined.py https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed/raw/branch/main/codes_for_scrimmage/regional-final/Final_combined.py```
- git CLI - - git CLI -
```git clone -b dev https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed.git && cd solutions_season_unearthed/codes_for_scrimmage/hazmat``` ```git clone -b dev https://codes.fll-65266.org/FLL_65266_LEGO_DYNAMICS/solutions_season_unearthed.git && cd solutions_season_unearthed/codes_for_scrimmage/regional-final```
Then use mainhazmatUPD.py. Then use Final_combined.py.
2. Open https://code.pybricks.com/ and select the "Import a file" button on the top of the left bar. Import the .py file. Pair your robot via Bluetooth in Pybricks by selecting the Bluetooth button. 2. Open https://code.pybricks.com/ and select the "Import a file" button on the top of the left bar. Import the .py file. Pair your robot via Bluetooth in Pybricks by selecting the Bluetooth button.

220
RegionalFinal.py Normal file
View File

@@ -0,0 +1,220 @@
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 = 300 # 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,90)
await drive_base.straight(200)
await drive_base.turn(-40)
await drive_base.straight(325)
await left_arm.run_angle(500,-90)
await drive_base.straight(-100)
await drive_base.straight(50)
await left_arm.run_angle(500,180)
await drive_base.straight(-90)
left_arm.run_angle(500,-180)
await drive_base.turn(-20)
await drive_base.turn(15)
await drive_base.straight(-173)
await drive_base.turn(45)
await drive_base.straight(120)
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(297)
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(-90)
await drive_base.turn(-100)
await drive_base.arc(-500,None,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
right_arm.run_angle(500,400)
await drive_base.straight(800)
await drive_base.turn(90)
await drive_base.straight(86)
await right_arm.run_angle(800,-600)
await right_arm.run_angle(900,800)
await drive_base.straight(-100)
await drive_base.turn(90)
await drive_base.straight(800)
drive_base.brake()
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(-20)
await drive_base.straight(110)
await drive_base.straight(-210)
await drive_base.turn(63)
await drive_base.straight(130)
await right_arm.run_angle(1000, -1200)
await drive_base.straight(84)
await right_arm.run_angle(300, 1200)
await drive_base.straight(-900)
# 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(-102.5)
await drive_base.straight(-80)
await left_arm.run_angle(500, -900)
await drive_base.straight(50)
await drive_base.straight(50)
await left_arm.run_angle(700, 270)
await drive_base.turn(30)
await drive_base.straight(-60)
# 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())

View File

@@ -45,22 +45,28 @@ async def monitor_distance():
# New Section # New Section
async def Run1(): # From M8_5.py async def Run1(): # From M8_5.py
right_arm.run_angle(1000,450) right_arm.run_angle(1000,450)
left_arm.run_angle(500,80) left_arm.run_angle(500,-90)
await drive_base.straight(200) await drive_base.straight(200)
await drive_base.turn(-40) await drive_base.turn(-40)
await drive_base.straight(325) await drive_base.straight(325)
await left_arm.run_angle(500,-80) await left_arm.run_angle(500,90)
await drive_base.straight(-100) await drive_base.straight(-100)
await drive_base.straight(50) await drive_base.straight(50)
await left_arm.run_angle(500,170) await left_arm.run_angle(500,-180)
await drive_base.straight(-270) await drive_base.straight(-90)
await drive_base.turn(40) left_arm.run_angle(500,180)
await drive_base.straight(135) await drive_base.turn(-20)
left_arm.run_angle(1000,670) await drive_base.turn(15)
await drive_base.straight(-173)
await drive_base.turn(45)
await drive_base.straight(120)
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)
@@ -70,7 +76,7 @@ async def Run1(): # From M8_5.py
right_arm.run_angle(5000,450, Stop.HOLD) right_arm.run_angle(5000,450, Stop.HOLD)
await drive_base.turn(-35) await drive_base.turn(-35)
await drive_base.straight(300) await drive_base.straight(297)
await drive_base.turn(63) await drive_base.turn(63)
await drive_base.straight(170) await drive_base.straight(170)
@@ -78,12 +84,9 @@ async def Run1(): # From M8_5.py
await drive_base.straight(87) await drive_base.straight(87)
await drive_base.turn(-15) await drive_base.turn(-15)
await drive_base.straight(-120) await drive_base.straight(-90)
await drive_base.turn(-100) await drive_base.turn(-100)
await drive_base.straight(300) await drive_base.arc(-500,None,600)
await drive_base.turn(-45)
await drive_base.straight(500)
async def Run2(): # From Heavy_lifting_final.py async def Run2(): # From Heavy_lifting_final.py
await drive_base.straight(200) await drive_base.straight(200)
@@ -142,16 +145,16 @@ async def Run4(): # From Send_Over_Final.py
# Add Rishi's code here # Add Rishi's code here
async def Run5(): async def Run5():
await drive_base.straight(700) await drive_base.straight(600)
await drive_base.turn(-18) await drive_base.straight(-100)
await drive_base.straight(150)
await drive_base.turn(60)
await drive_base.straight(100) await drive_base.straight(100)
await drive_base.straight(-205) await drive_base.turn(-86)
await drive_base.turn(63) await drive_base.straight(120)
await drive_base.straight(125) await drive_base.turn(-45)
await arm_motor.run_angle(1000, -1200) await drive_base.straight(-200)
await drive_base.straight(84) await drive_base.turn(75)
await arm_motor.run_angle(300, 1200)
await drive_base.straight(-875)
# Add - Adi's code here # Add - Adi's code here
async def Run6(): async def Run6():

View File

@@ -0,0 +1,221 @@
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 = 300 # 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,90)
await drive_base.straight(200)
await drive_base.turn(-40)
await drive_base.straight(325)
await left_arm.run_angle(500,-90)
await drive_base.straight(-100)
await drive_base.straight(50)
await left_arm.run_angle(500,180)
await drive_base.straight(-90)
left_arm.run_angle(500,-180)
await drive_base.turn(-20)
await drive_base.turn(15)
await drive_base.straight(-173)
await drive_base.turn(45)
await drive_base.straight(120)
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(297)
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(-90)
await drive_base.turn(-100)
await drive_base.arc(-500,None,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
right_arm.run_angle(500,400)
await drive_base.straight(800)
await drive_base.turn(90)
await drive_base.straight(86)
await right_arm.run_angle(800,-600)
await right_arm.run_angle(900,800)
await drive_base.straight(-100)
await drive_base.turn(90)
await drive_base.straight(800)
drive_base.brake()
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(-20)
await drive_base.straight(110)
await drive_base.straight(-210)
await drive_base.turn(63)
await drive_base.straight(130)
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(-100)
await drive_base.straight(-80)
await left_arm.run_angle(500, -900)
await drive_base.straight(50)
await drive_base.straight(50)
await left_arm.run_angle(700, 250)
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())

View File

@@ -21,20 +21,25 @@ drive_base.use_gyro(True)
async def main(): async def main():
right_arm.run_angle(1000,450) right_arm.run_angle(1000,450)
left_arm.run_angle(500,-80) left_arm.run_angle(500,-90)
await drive_base.straight(200) await drive_base.straight(200)
await drive_base.turn(-40) await drive_base.turn(-40)
await drive_base.straight(325) await drive_base.straight(325)
await left_arm.run_angle(500,80) await left_arm.run_angle(500,90)
await drive_base.straight(-100) await drive_base.straight(-100)
await drive_base.straight(50) await drive_base.straight(50)
await left_arm.run_angle(500,-170) await left_arm.run_angle(500,-180)
await drive_base.straight(-270) await drive_base.straight(-90)
await drive_base.turn(40) left_arm.run_angle(500,180)
await drive_base.straight(135) await drive_base.turn(-20)
await drive_base.turn(15)
await drive_base.straight(-173)
await drive_base.turn(45)
await drive_base.straight(120)
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)
@@ -45,7 +50,7 @@ async def main():
right_arm.run_angle(5000,450, Stop.HOLD) right_arm.run_angle(5000,450, Stop.HOLD)
await drive_base.turn(-35) await drive_base.turn(-35)
await drive_base.straight(300) await drive_base.straight(297)
await drive_base.turn(63) await drive_base.turn(63)
await drive_base.straight(170) await drive_base.straight(170)
@@ -53,10 +58,8 @@ async def main():
await drive_base.straight(87) await drive_base.straight(87)
await drive_base.turn(-15) await drive_base.turn(-15)
await drive_base.straight(-120) await drive_base.straight(-90)
await drive_base.turn(-100) await drive_base.turn(-100)
await drive_base.straight(300) await drive_base.arc(-500,None,600)
await drive_base.turn(-45)
await drive_base.straight(500)
run_task(main()) run_task(main())

View File

@@ -0,0 +1,38 @@
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 main():
await drive_base.straight(700)
await drive_base.turn(-20)
await drive_base.straight(110)
await drive_base.straight(-220)
await drive_base.turn(63)
await drive_base.straight(130)
await right_arm.run_angle(1000, -1200)
await drive_base.straight(84)
await right_arm.run_angle(300, 1200)
await drive_base.straight(-875)
run_task(main())

View File

@@ -0,0 +1,29 @@
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
AXLE_TRACK = 180 # mm
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 main():
# Your code goes here
run_task(main())