17 Commits

Author SHA1 Message Date
ef0ff44f2b HazmatCodeChanges
This is the code we changed at the scrimmage.
2025-10-25 02:06:49 +00:00
7b539b45d0 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
CVC
2025-10-25 02:05:16 +00:00
9a320589ab Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
67
2025-10-25 01:38:57 +00:00
4d1bd8abe3 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-25 01:26:41 +00:00
1317c8e8ce Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
Minor Changes
2025-10-25 01:15:49 +00:00
54e8c9eba5 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 01:16:19 +00:00
9d3d8b48e4 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 01:15:43 +00:00
702e05e7f7 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 01:13:45 +00:00
5427c73f1c Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
I am not a monkey
2025-10-24 01:09:49 +00:00
b41f833c5e Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 01:07:23 +00:00
3765db3001 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
MINOR CHANGES AGAIN
2025-10-24 01:01:04 +00:00
94bae3c140 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 00:52:40 +00:00
dbb0749ff3 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
Minor Changes AGAIN!!
2025-10-24 00:49:24 +00:00
831b75025d Update codes_for_scrimmage/hazmat/mainhazmatUPD.py
Minor changes.
2025-10-24 00:45:10 +00:00
249071f5c3 Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 00:42:21 +00:00
32a695e9ca Update codes_for_scrimmage/hazmat/hazmat_main.py 2025-10-24 00:38:26 +00:00
2d2863726b Update codes_for_scrimmage/hazmat/mainhazmatUPD.py 2025-10-24 00:35:06 +00:00
3 changed files with 339 additions and 106 deletions

View File

@@ -0,0 +1,227 @@
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
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(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)
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 69
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
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)
# 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)
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(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)
# Add - Adi's code here
async def Run6():
await drive_base.straight(750)
await drive_base.straight(-650)
# 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

@@ -189,6 +189,7 @@ async def monitor_distance():
"""Monitor ultrasonic sensor and stop when wall is detected.""" """Monitor ultrasonic sensor and stop when wall is detected."""
while True: while True:
distance = await lazer_ranger.distance() distance = await lazer_ranger.distance()
print('distancing...',distance)
if distance < WALL_DISTANCE: if distance < WALL_DISTANCE:
# Stop the drivebase # Stop the drivebase
@@ -246,30 +247,29 @@ async def Run2(): #From Heavy_lifting_final.py
async def Run3(): #tip the scale.py async def Run3(): #tip the scale.py
drive_base.settings(300,1000,300,200) #Custom drive_base setting based on Ayaan's code left_arm.run_angle(600,200)
left_arm.run_angle(500,200)
right_arm.run_angle(500,200) right_arm.run_angle(500,200)
await drive_base.straight(70) await drive_base.straight(70)
await drive_base.turn(-55) await drive_base.turn(-70)
await drive_base.straight(900) await drive_base.straight(900)
await drive_base.turn(92.5) await drive_base.turn(115)
await drive_base.straight(75) await drive_base.straight(75)
await drive_base.straight(21) await drive_base.straight(33)
await right_arm.run_angle(500,-250) await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250) await right_arm.run_angle(500,250)
await drive_base.turn(55) await drive_base.turn(66)
await drive_base.straight(7)
await left_arm.run_angle(300,-400) await left_arm.run_angle(560,-390) #going down
await drive_base.turn(40) # turning right
await left_arm.run_angle(-410,-400) #lift a little bit
await drive_base.turn(46.5) await drive_base.turn(-46.5) #ma din din din dun
await drive_base.turn(-40) await drive_base.turn(-40)
await drive_base.straight(900) await drive_base.straight(900)
drive_base.settings(600,500,300,200) #Reset it to the initial values
async def Run4(): #From Send_Over_Final.py async def Run4(): #From Send_Over_Final.py
#Get to mission #Get to mission

View File

@@ -7,10 +7,8 @@ from pybricks.hubs import PrimeHub
# Initialize hub and devices # Initialize hub and devices
hub = PrimeHub() hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE) left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B) right_motor = Motor(Port.B)
left_arm = Motor(Port.C) left_arm = Motor(Port.C)
right_arm = Motor(Port.D) right_arm = Motor(Port.D)
lazer_ranger = UltrasonicSensor(Port.E) lazer_ranger = UltrasonicSensor(Port.E)
@@ -20,116 +18,108 @@ color_sensor = ColorSensor(Port.F)
WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels) WHEEL_DIAMETER = 68.8 # mm (adjust for your wheels)
AXLE_TRACK = 180 # mm (distance between wheels) AXLE_TRACK = 180 # mm (distance between wheels)
drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK) drive_base = DriveBase(left_motor, right_motor, WHEEL_DIAMETER, AXLE_TRACK)
drive_base.settings(600,500,300,200) drive_base.settings(600, 500, 300, 200)
drive_base.use_gyro(True) drive_base.use_gyro(True)
WALL_DISTANCE = 300 # mm
WALL_DISTANCE = 200 # mm
async def drive_forward(): async def drive_forward():
"""Drive forward continuously using DriveBase.""" """Drive forward continuously using DriveBase."""
#await drive_base.straight(5000) drive_base.drive(400, 0)
drive_base.drive(400,0)
async def monitor_distance(): async def monitor_distance():
"""Monitor ultrasonic sensor and stop when wall is detected.""" """Monitor ultrasonic sensor and stop when wall is detected."""
while True: while True:
distance = await lazer_ranger.distance() distance = await lazer_ranger.distance()
print('Distancing...',distance)
if distance < WALL_DISTANCE: if distance < WALL_DISTANCE:
# Stop the drivebase # Stop the drivebase
await drive_base.turn(-180) await drive_base.stop
drive_base.brake
print(f"Wall detected at {distance}mm!") print(f"Wall detected at {distance}mm!")
break break
# Small delay to prevent overwhelming the sensor # Small delay to prevent overwhelming the sensor
await wait(50) await wait(50)
#New Section # New Section
async def Run1(): #From M8_5.py async def Run1(): # From M8_5.py
left_arm.run_angle(1000, 300) left_arm.run_angle(1000, -300)
right_arm.run_angle(1000,500) right_arm.run_angle(1000, 500)
await drive_base.straight(320) 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.turn(-20)
await drive_base.straight(277) await drive_base.straight(277)
await drive_base.turn(20) await drive_base.turn(20)
await drive_base.straight(65) await drive_base.straight(65)
await drive_base.turn(-30) await drive_base.turn(-30)
right_arm.run_angle(50,500) right_arm.run_angle(50, 500)
await drive_base.turn(45) await drive_base.turn(45)
await drive_base.straight(-145) await drive_base.straight(-145)
await drive_base.turn(-60) await drive_base.turn(-60)
await drive_base.straight(90) await drive_base.straight(90)
await left_arm.run_angle(1000,-450) await left_arm.run_angle(1000, 450)
await drive_base.straight(-145) await drive_base.straight(-145)
await left_arm.run_angle(1000,450) await left_arm.run_angle(1000, -450)
await drive_base.straight(10) await drive_base.straight(10)
await drive_base.turn(35) await drive_base.turn(35)
await drive_base.straight(-600) await drive_base.straight(-600)
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)
await drive_base.turn(-20) await drive_base.turn(-20)
await drive_base.straight(536) await drive_base.straight(536)
await drive_base.turn(60, Stop.HOLD) await drive_base.turn(60, Stop.HOLD)
await drive_base.straight(30) await drive_base.straight(30)
await right_arm.run_angle(5000, 2900)
await right_arm.run_angle(5000,2900)
await drive_base.straight(40) await drive_base.straight(40)
await right_arm.run_angle(5000,-4000) await right_arm.run_angle(5000, -4000)
await drive_base.straight(-60) await drive_base.straight(-60)
await drive_base.turn(-60) await drive_base.turn(-60)
await drive_base.straight(-670) await drive_base.straight(-670)
async def Run3(): #tip the scale.py async def Run3(): # tip the scale.py
drive_base.settings(300,1000,300,200) #Custom drive_base setting based on Ayaan's code left_arm.run_angle(600,-200)
left_arm.run_angle(500,200)
right_arm.run_angle(500,200) right_arm.run_angle(500,200)
await drive_base.straight(70) await drive_base.straight(70)
await drive_base.turn(-55) await drive_base.turn(-70)
await drive_base.straight(900) await drive_base.straight(900)
await drive_base.turn(92.5) await drive_base.turn(115)
await drive_base.straight(75) await drive_base.straight(75)
await drive_base.straight(21) await drive_base.straight(33)
await right_arm.run_angle(500,-250) await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250) await right_arm.run_angle(500,250)
await drive_base.turn(55) await drive_base.turn(66)
await drive_base.straight(7)
await left_arm.run_angle(300,-400) await left_arm.run_angle(560,390) #going down
print('turning now...')
await drive_base.turn(46.5) await drive_base.turn(40) # turning right
await drive_base.turn(-40) 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.straight(900) await drive_base.straight(900)
drive_base.settings(600,500,300,200) #Reset it to the initial values
async def Run4(): #From Send_Over_Final.py
async def Run4(): # From Send_Over_Final.py
#Get to mission #Get to mission
await drive_base.straight(920) await drive_base.straight(920)
await drive_base.turn(-90,Stop.HOLD) await drive_base.turn(-90,Stop.HOLD)
await drive_base.straight(65) await drive_base.straight(65)
#Solve mission #Solve mission
drive_base.turn(-10) drive_base.turn(-10)
await left_arm.run_angle(10000,-4000) await left_arm.run_angle(10000, 4000)
#Get to Red Start #Get to Red Start
await drive_base.straight(-110) await drive_base.straight(-110)
await drive_base.turn(90) await drive_base.turn(90)
await drive_base.straight(500)
# while True: # while True:
# distance_mm = await lazer_ranger.distance() # distance_mm = await lazer_ranger.distance()
# print('distancing...',distance_mm) # print('distancing...',distance_mm)
@@ -146,7 +136,9 @@ async def Run4(): #From Send_Over_Final.py
monitor_distance() monitor_distance()
) )
#Add Rishi's code here
# Add Rishi's code here
async def Run5(): async def Run5():
await drive_base.straight(519) await drive_base.straight(519)
await left_arm.run_angle(-10000, 300) await left_arm.run_angle(-10000, 300)
@@ -156,66 +148,80 @@ async def Run5():
await drive_base.straight(50) await drive_base.straight(50)
await right_arm.run_angle(3000, 3000) await right_arm.run_angle(3000, 3000)
await drive_base.straight(-150) await drive_base.straight(-150)
await drive_base.turn(135) await drive_base.turn(120)
await drive_base.straight(25) await drive_base.straight(25)
await right_arm.run_angle(10000, -3000) await right_arm.run_angle(10000, -3000)
await drive_base.straight(-100) await drive_base.straight(-110)
await drive_base.turn(-55) await drive_base.turn(-43)
await right_arm.run_angle(10000, -3000) await right_arm.run_angle(10000, -3000)
await drive_base.straight(250) await drive_base.straight(295)
await drive_base.turn(-5) await right_arm.run_angle(10000, 9000)
await right_arm.run_angle(10000, 7000) await drive_base.straight(-65)
await drive_base.straight(-50)
await drive_base.turn(45) await drive_base.turn(45)
await drive_base.straight(100) await drive_base.straight(175)
await drive_base.turn(37) await drive_base.turn(24.5)
await right_arm.run_angle(10000, -6000)
await drive_base.straight(90)
await right_arm.run_angle(3000, 3000)
await drive_base.turn(-40)
#Add - Adi's code here
async def Run6():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100) await drive_base.straight(-100)
await right_arm.run_angle(300, 100) await right_arm.run_angle(10000, -8500)
await drive_base.straight(-350) 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)
# Add - Adi's code here
async def Run6():
await drive_base.straight(750)
await drive_base.straight(-650)
# Function to classify color based on HSV # Function to classify color based on HSV
async def main: def detect_color(h, s, v, reflected):
if reflected > 4: if reflected > 4:
if h < 4 or h > 350: #red if h < 4 or h > 350: # red
return "Red" return "Red"
print('Running Mission 3') elif 3 < h < 40 and s > 70: # orange
await Run3()
elif 3 < h < 40 and s > 70: #orange
return "Orange" return "Orange"
print('Running Mission 6') elif 47 < h < 56: # yellow
await Run6()
elif 47 < h < 56: #yellow
return "Yellow" return "Yellow"
print('Running Mission 4') elif 70 < h < 160: # green - do it vertically not horizontally for accuracy
await Run4()
elif 70 < h < 160: #green - do it vertically not horizontally for accuracy
return "Green" return "Green"
print('Running Mission 1') elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy
await Run1()
elif 210 < h < 225: #blue - do it vertically not horizontally for accuracy
return "Blue" return "Blue"
print('Running Mission 5') elif 260 < h < 350: # purple
await Run5()
elif 230 < h < 320: #purple
return "Purple" return "Purple"
print('Running Mission 2')
await Run2()
else: else:
return "Unknown" return "Unknown"
return "Unknown"
# Main loop
while True: async def main():
h, s, v = sensor.hsv() while True:
reflected = sensor.reflection() h, s, v = await color_sensor.hsv()
reflected = await color_sensor.reflection()
color = detect_color(h, s, v, reflected) color = detect_color(h, s, v, reflected)
print(f"Detected Color: {color} (Hue: {h}, Sat: {s}, Val: {v})")
wait(1000) 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())