Paket Dash Mücadelesi - Python
Paket Dash Mücadelesi
Bu meydan okumada, robotunuzu paketleri alıp mümkün olan en kısa sürede yükleme iskelesine getirecek şekilde programlayacaksınız!
Yarışma kuralları:
- Robotun mücadeleye Başlangıç Bölgesi'nden başlaması gerekiyor.
- Paketler (alüminyum kutular) sadece kitaplarla, Clawbot'un pençesiyle ve Yükleme İskelesi ile temas edebilir.
- Eğer bir paket depo zeminine düşerse, alanı sıfırlamanız ve tekrar başlamanız gerekir.
- Her koşunun süresi robot hareket ettiği anda başlar.
- Son paket Yükleme İskelesine bırakıldığı anda zaman durur.
- Alanı sıfırladığınızda her şey başlangıçtaki tam konumuna geri dönmelidir.
- İyi eğlenceler!
Öğretmen İpuçları
- Depoya dair bir arka plan hikayesi veya amaç oluşturarak etkileşimi artırın! Ne tür bir depo? Depoda ne tür paketler bulunuyor? Depo kime ait?
- Öğrencilerin kutuları daha verimli bir şekilde taşımalarını sağlayacak farklı rotalar veya stratejiler oluşturmalarına izin verin.
- Bu mücadelenin kazananını belirlemek için sadece tamamlanma sürelerini değil (eğer bunu rekabetçi bir şekilde düzenliyorsanız), aynı zamanda öğrencilerin diğer takımların çözümlerini değerlendirebilmeleri için kullanılan gezinme tekniklerini de karşılaştırın.
Öğretmen Araç Kutusu
-
Çözümü
Öğrencileri değerlendirmek için bir programlama rubriği burada bulunabilir.
Bu zorluğa olası bir çözüm aşağıdadır. Çözümler robotun başlangıç pozisyonuna ve seçilen yola göre değişiklik gösterebilir. Tüm paketlerin taşınmasına yol açabilecek birden fazla yol vardır.
# Proje kodunu başlat
# Pençe motorunu güvenli bir şekilde çalıştırın ve ilk paketi alın
claw_motor.set_timeout(2, seconds)
drivetrain.drive_for(FORWARD, 900, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.drive_for(FORWARD, 215, MM)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# İlk paketi bırakmak için Yükleme İskelesine gidin
drivetrain.drive_for(REVERSE, 110, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(İLERİ, 920, MM)
drivetrain.turn_for(SOL, 90, DERECE)
drivetrain.drive_for(İLERİ, 2300, MM)
drivetrain.turn_for(SOL, 90, DERECE)
drivetrain.drive_for(İLERİ, 750, MM)
arm_motor.spin_for(GERİ, 315, DERECE)
claw_motor.spin_for(GERİ, 120, DERECE)
# İkinci paketi al
drivetrain.drive_for(GERİ, 200, MM)
drivetrain.turn_for(SOL, 170, DERECE)
drivetrain.drive_for(İLERİ, 900, MM)
drivetrain.turn_for(SAĞ, 90, DEGREES)
drivetrain.drive_for(FORWARD, 2300, MM)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# İkinci paketi bırakmak için Yükleme İskelesine gidin
drivetrain.drive_for(FORWARD, 900, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 960, MM)
arm_motor.spin_for(REVERSE, 315, DEGREES)
claw_motor.spin_for(REVERSE, 120, DEGREES)
# Üçüncü paketi alın
drivetrain.drive_for(REVERSE, 150, MM)
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 490, MM)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# Üçüncü paketi bırakmak için Yükleme İskelesine gidin
drivetrain.drive_for(REVERSE, 490, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 150, MM)
arm_motor.spin_for(REVERSE, 315, DEGREES)
claw_motor.spin_for(REVERSE, 120, DEGREES)