Compare commits
22 Commits
acfe0e622e
...
HazmatScri
| Author | SHA1 | Date | |
|---|---|---|---|
| ef0ff44f2b | |||
| 7b539b45d0 | |||
| 9a320589ab | |||
| 4d1bd8abe3 | |||
| 1317c8e8ce | |||
| 54e8c9eba5 | |||
| 9d3d8b48e4 | |||
| 702e05e7f7 | |||
| 5427c73f1c | |||
| b41f833c5e | |||
| 3765db3001 | |||
| 94bae3c140 | |||
| dbb0749ff3 | |||
| 831b75025d | |||
| 249071f5c3 | |||
| 32a695e9ca | |||
| 2d2863726b | |||
| 12f3d97a9e | |||
| 99aa81a68c | |||
| 9e0c82b26b | |||
| 30bc22a457 | |||
| 11acca0744 |
227
codes_for_scrimmage/hazmat/HazmatCodeChanges.py
Normal file
227
codes_for_scrimmage/hazmat/HazmatCodeChanges.py
Normal 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())
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -23,22 +21,22 @@ 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
|
||||||
|
|
||||||
@@ -47,30 +45,27 @@ async def monitor_distance():
|
|||||||
|
|
||||||
# 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 drive_base.straight(-145)
|
|
||||||
await left_arm.run_angle(1000, 450)
|
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.straight(10)
|
||||||
await drive_base.turn(35)
|
await drive_base.turn(35)
|
||||||
await drive_base.straight(-600)
|
await drive_base.straight(-600)
|
||||||
@@ -81,55 +76,50 @@ async def Run2(): #From Heavy_lifting_final.py
|
|||||||
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,6 +136,8 @@ 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)
|
||||||
@@ -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(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 drive_base.straight(100)
|
||||||
await drive_base.turn(37)
|
await right_arm.run_angle(10000, 3500)
|
||||||
await right_arm.run_angle(10000, -6000)
|
await drive_base.turn(-30)
|
||||||
await drive_base.straight(90)
|
await drive_base.straight(-300)
|
||||||
await right_arm.run_angle(3000, 3000)
|
await drive_base.turn(-80)
|
||||||
await drive_base.turn(-40)
|
await drive_base.straight(-700)
|
||||||
|
|
||||||
|
|
||||||
# Add - Adi's code here
|
# Add - Adi's code here
|
||||||
async def Run6():
|
async def Run6():
|
||||||
await drive_base.straight(420)
|
await drive_base.straight(750)
|
||||||
await right_arm.run_angle(300,-100)
|
await drive_base.straight(-650)
|
||||||
await drive_base.straight(-100)
|
|
||||||
await right_arm.run_angle(300, 100)
|
|
||||||
await drive_base.straight(-350)
|
|
||||||
|
|
||||||
# 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')
|
|
||||||
await Run3()
|
|
||||||
elif 3 < h < 40 and s > 70: # orange
|
elif 3 < h < 40 and s > 70: # orange
|
||||||
return "Orange"
|
return "Orange"
|
||||||
print('Running Mission 6')
|
|
||||||
await Run6()
|
|
||||||
elif 47 < h < 56: # yellow
|
elif 47 < h < 56: # yellow
|
||||||
return "Yellow"
|
return "Yellow"
|
||||||
print('Running Mission 4')
|
|
||||||
await Run4()
|
|
||||||
elif 70 < h < 160: # green - do it vertically not horizontally for accuracy
|
elif 70 < h < 160: # green - do it vertically not horizontally for accuracy
|
||||||
return "Green"
|
return "Green"
|
||||||
print('Running Mission 1')
|
|
||||||
await Run1()
|
|
||||||
elif 210 < h < 225: # blue - do it vertically not horizontally for accuracy
|
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
|
|
||||||
|
async def main():
|
||||||
while True:
|
while True:
|
||||||
h, s, v = sensor.hsv()
|
h, s, v = await color_sensor.hsv()
|
||||||
reflected = sensor.reflection()
|
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())
|
||||||
@@ -40,3 +40,6 @@ async def main():
|
|||||||
await drive_base.turn(-40)
|
await drive_base.turn(-40)
|
||||||
await drive_base.straight(900)
|
await drive_base.straight(900)
|
||||||
run_task(main())
|
run_task(main())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user