Compare commits
26 Commits
do-not-mer
...
Scrimmage-
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e612e2325 | |||
| 4456a5aab4 | |||
| ec745316e1 | |||
| 95d7c0c2a3 | |||
| 7e0c3d24c1 | |||
| f190d38426 | |||
| cd21a73f82 | |||
| 0fa10194c2 | |||
| 62b76d44bc | |||
| cba5cfc368 | |||
| 3349e7f20c | |||
| 4b765b0e9d | |||
| 2eca0d7d24 | |||
| 8949003351 | |||
| 8008dafccf | |||
| bb89e01aa1 | |||
| 6931731ae1 | |||
| d172c70fe2 | |||
| efcc011733 | |||
| 28bb3fa48c | |||
| 7ba2453152 | |||
| c690ae451b | |||
| d309b0098f | |||
| 37fb0a647e | |||
| e895fd1d2c | |||
| 70e09fb42b |
15
LINEUPS.md
Normal file
15
LINEUPS.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Lineups
|
||||
|
||||
## 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 #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 #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 #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 #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.
|
||||
@@ -22,4 +22,7 @@ Load the master file into PyBricks, then send it over to the robot. Then you hol
|
||||
|
||||
## License
|
||||
GNU General Public License
|
||||
You can take inspiration from our code, but you can't take our exact code.
|
||||
|
||||
You can take inspiration from our code, but you can't take our exact code.
|
||||
|
||||
Read LICENSE for more information.
|
||||
BIN
bluetooth.png
BIN
bluetooth.png
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB |
116
final/1main.py
Normal file
116
final/1main.py
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
from pybricks.hubs import PrimeHub
|
||||
from pybricks.pupdevices import Motor, ColorSensor
|
||||
from pybricks.parameters import Port, Stop, Color, Direction
|
||||
from pybricks.robotics import DriveBase
|
||||
from pybricks.tools import wait, StopWatch, multitask, run_task
|
||||
import asyncio
|
||||
|
||||
hub = PrimeHub()
|
||||
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||
right_motor = Motor(Port.B)
|
||||
atarm1 = Motor(Port.E, Direction.COUNTERCLOCKWISE)
|
||||
atarm2 = Motor(Port.F)
|
||||
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=112)
|
||||
color_sensor = ColorSensor(Port.C)
|
||||
|
||||
drive_base.settings(300, 500, 300, 200)
|
||||
Color.ORANGE = Color(10, 100, 100)
|
||||
Color.MAGENTA = Color(321, 100, 86)
|
||||
|
||||
|
||||
async def Run1():
|
||||
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(275)
|
||||
await drive_base.turn(20)
|
||||
await drive_base.straight(63)
|
||||
|
||||
await drive_base.turn(-30)
|
||||
right_arm.run_angle(50,500)
|
||||
await drive_base.turn(45)
|
||||
await drive_base.straight(-135)
|
||||
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(-500)
|
||||
|
||||
async def Run2():
|
||||
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)
|
||||
|
||||
|
||||
async def Run3():
|
||||
await drive_base.straight(915)
|
||||
await drive_base.turn(-90)
|
||||
await drive_base.straight(60)
|
||||
await left_arm.run_angle(10000,-15000)
|
||||
await drive_base.straight(-60)
|
||||
await drive_base.turn(85)
|
||||
await drive_base.straight(2000)
|
||||
|
||||
|
||||
async def Run5():
|
||||
await drive_base.straight(420)
|
||||
await right_arm.run_angle(300,-100)
|
||||
await drive_base.straight(-100)
|
||||
await right_arm.run_angle(300, 100)
|
||||
await drive_base.straight(-350)
|
||||
|
||||
|
||||
async def Run6():
|
||||
await drive_base.straight(420)
|
||||
await right_arm.run_angle(300,-100)
|
||||
await drive_base.straight(-100)
|
||||
await right_arm.run_angle(300, 100)
|
||||
await drive_base.straight(-350)
|
||||
|
||||
|
||||
async def main():
|
||||
if color_sensor.color() == Color.ORANGE:
|
||||
await Run1()
|
||||
|
||||
if color_sensor.color() == Color.GREEN:
|
||||
await Run2()
|
||||
|
||||
if color_sensor.color() == Color.WHITE:
|
||||
await Run3()
|
||||
|
||||
if color_sensor.color() == Color.YELLOW:
|
||||
await Run5()
|
||||
|
||||
if color_sensor.color() == Color.BLUE:
|
||||
await Run6()
|
||||
|
||||
|
||||
print(f'Detected color: {color_sensor.color()}')
|
||||
|
||||
# Main execution loop
|
||||
while True:
|
||||
run_task(main())
|
||||
wait(100)
|
||||
BIN
import.png
BIN
import.png
Binary file not shown.
|
Before Width: | Height: | Size: 836 B |
0
members/Ayaan.txt
Normal file
0
members/Ayaan.txt
Normal file
0
members/Carlos.txt
Normal file
0
members/Carlos.txt
Normal file
7
members/Johannes
Normal file
7
members/Johannes
Normal file
@@ -0,0 +1,7 @@
|
||||
I am Johannes
|
||||
|
||||
I am the building manager for the team. I like making art.
|
||||
|
||||
|
||||
|
||||
Parthiv, Diddy will touch you tonight.
|
||||
1
members/Vickram.txt
Normal file
1
members/Vickram.txt
Normal file
@@ -0,0 +1 @@
|
||||
Hello my name is Vickram and I like coding and video games.
|
||||
45
missions/Bautism.py
Normal file
45
missions/Bautism.py
Normal file
@@ -0,0 +1,45 @@
|
||||
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())
|
||||
@@ -30,14 +30,14 @@ async def main():
|
||||
await right_arm.run_angle(5000,-500, Stop.HOLD)
|
||||
|
||||
await drive_base.turn(-20)
|
||||
await drive_base.straight(275)
|
||||
await drive_base.straight(277)
|
||||
await drive_base.turn(20)
|
||||
await drive_base.straight(63)
|
||||
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(-135)
|
||||
await drive_base.straight(-145)
|
||||
await drive_base.turn(-60)
|
||||
await drive_base.straight(90)
|
||||
await left_arm.run_angle(1000,-450)
|
||||
@@ -45,5 +45,5 @@ async def main():
|
||||
await left_arm.run_angle(1000,450)
|
||||
await drive_base.straight(10)
|
||||
await drive_base.turn(35)
|
||||
await drive_base.straight(-500)
|
||||
await drive_base.straight(-600)
|
||||
run_task(main())
|
||||
@@ -1,4 +1,5 @@
|
||||
# ---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
|
||||
@@ -10,28 +10,33 @@ 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)
|
||||
drive_base.settings(300,1000,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)
|
||||
left_arm.run_angle(500,200)
|
||||
right_arm.run_angle(500,200)
|
||||
await drive_base.straight(70)
|
||||
|
||||
await drive_base.turn(-55)
|
||||
await drive_base.straight(900)
|
||||
await drive_base.turn(92.5)
|
||||
|
||||
await drive_base.straight(75)
|
||||
await drive_base.straight(21)
|
||||
await right_arm.run_angle(500,-250)
|
||||
await right_arm.run_angle(500,250)
|
||||
await drive_base.turn(55)
|
||||
|
||||
await left_arm.run_angle(300,-400)
|
||||
|
||||
await drive_base.turn(46.5)
|
||||
await drive_base.turn(-40)
|
||||
await drive_base.straight(900)
|
||||
run_task(main())
|
||||
@@ -1,5 +1,5 @@
|
||||
# Guys please use the same setup code and put into the imports for consistency
|
||||
script_names = ["untitled14.py", "untitled13.py"] # This is a list of the files of the mission runs
|
||||
script_names = ["Run1.py", "Run2.py", "Run3.py", "Run5.py", "Run6.py"] # This is a list of the files of the mission runs
|
||||
content = ""
|
||||
imports = """
|
||||
from pybricks.hubs import PrimeHub
|
||||
@@ -72,7 +72,7 @@ function_calls = []
|
||||
|
||||
# Define colors properly - one per script
|
||||
colors = [
|
||||
'Color.ORANGE', 'Color.GREEN', 'Color.BLACK', 'Color.WHITE',
|
||||
'Color.ORANGE', 'Color.GREEN', 'Color.WHITE',
|
||||
'Color.YELLOW', 'Color.BLUE', 'Color.MAGENTA', 'Color.RED', 'Color.BROWN'
|
||||
]
|
||||
|
||||
@@ -96,7 +96,7 @@ for i, f_name in enumerate(script_names):
|
||||
m.write(func_def)
|
||||
|
||||
# Assign one color per script
|
||||
color_condition = colors[i % len(colors)]
|
||||
color_condition = colors[i]
|
||||
function_calls.append({
|
||||
'name': func_name,
|
||||
'is_async': is_async,
|
||||
@@ -120,10 +120,10 @@ with open("main.py", 'a') as m:
|
||||
m.write(f" await {func_info['name']}()\n")
|
||||
else:
|
||||
m.write(f" {func_info['name']}()\n")
|
||||
m.write(" return # Exit after running one function\n")
|
||||
m.write(" \n")
|
||||
|
||||
# Add a default case
|
||||
m.write(" # Default case - no matching color detected\n")
|
||||
m.write(" \n")
|
||||
m.write(" print(f'Detected color: {color_sensor.color()}')\n")
|
||||
|
||||
# Write the main loop
|
||||
@@ -131,9 +131,4 @@ with open("main.py", 'a') as m:
|
||||
m.write("\n# Main execution loop\n")
|
||||
m.write("while True:\n")
|
||||
m.write(" run_task(main())\n")
|
||||
m.write(" wait(100)\n")
|
||||
|
||||
print("Script merger completed successfully!")
|
||||
print("Functions created:")
|
||||
for func_info in function_calls:
|
||||
print(f" - {func_info['name']}() triggered by {func_info['color']} (from {func_info['filename']})")
|
||||
m.write(" wait(100)\n")
|
||||
Reference in New Issue
Block a user