Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge [2021/05/25 19:22] Ivo Blöchliger [Gabel-Motor] |
lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge [2021/05/28 10:41] Ivo Blöchliger |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Neue Elemente ===== | ===== Neue Elemente ===== | ||
- | Es gibt noch zwei neue Elemente: Der Ultraschall-Distanzsensor und der dritte Motor, um die Ladegabel | + | Es gibt noch zwei neue Elemente |
==== Ultraschall-Distanzsensor ==== | ==== Ultraschall-Distanzsensor ==== | ||
Der Ultraschallsensor wird wie folgt initialisiert: | Der Ultraschallsensor wird wie folgt initialisiert: | ||
<code python> | <code python> | ||
# Ultraschall Distanzsensor hinzufuegen | # Ultraschall Distanzsensor hinzufuegen | ||
- | us = UltrasonicSensor(SensorPort.S4) | + | us = UltrasonicSensor(SensorPort.S2) # Kontrollieren, |
robot.addPart(us) | robot.addPart(us) | ||
+ | |||
</ | </ | ||
Line 18: | Line 19: | ||
Kann keine Distanz ermittelt werden, wird 0 (Null) als Wert geliefert. D.h. die Werte sind nur dann sinnvoll wenn '' | Kann keine Distanz ermittelt werden, wird 0 (Null) als Wert geliefert. D.h. die Werte sind nur dann sinnvoll wenn '' | ||
- | ==== Gabel-Motor ==== | + | ==== Heber-Motor ==== |
Initialisierung: | Initialisierung: | ||
<code python> | <code python> | ||
Line 30: | Line 31: | ||
Verwendung: | Verwendung: | ||
<code python> | <code python> | ||
- | # Heber runter | + | ########################################################################## |
- | heber.continueTo(-140) | + | ### Sicherstellen, |
- | Tools.delay(500) | + | ########################################################################## |
- | # Heber wieder hoch | + | # Heber in eine gegebene Position fahren. |
- | heber.continueTo(0) | + | def heberPosition(position): |
- | Tools.delay(500) | + | heber.continueTo(position) |
+ | Tools.delay(500) | ||
+ | |||
+ | |||
+ | # Funktionen aufrufen: | ||
+ | heberPosition(-140) | ||
+ | heberPosition(0) | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | Sie programmieren und testen Programmteile, | ||
+ | |||
+ | ==== Challenge ==== | ||
+ | Der Roboter soll ein Schoggi-Prügeli holen und bringen, wie in [[https:// | ||
+ | |||
+ | **Wichtig: | ||
+ | |||
+ | Der Roboter folgt der Linie, bis er nah genug an der Wand ist, lädt das Prügeli auf, fährt rückwärts, | ||
+ | |||
+ | Positionieren Sie die rechte Auflage fast am Rand des Papiers und das Prügeli so weit vorne wie möglich. | ||
+ | {{lehrkraefte: | ||
+ | |||
+ | ==== Bis auf eine Distanz geradeaus fahren ==== | ||
+ | <WRAP todo> | ||
+ | Messen Sie die geeignete Distanz von Sensor zur Wand, damit das Prügeli gut aufgeladen werden kann. Tragen Sie dann diese Distanz im Code unten ein und testen Sie | ||
+ | <code python> | ||
+ | def fahrenBisWand(): | ||
+ | gear.setSpeed(20) | ||
+ | gear.forward() | ||
+ | while True: | ||
+ | dist = us.getDistance() | ||
+ | if dist>0 and dist< | ||
+ | break | ||
+ | gear.stop() | ||
+ | | ||
+ | # Funktionen aufrufen | ||
+ | fahrenBisWand() | ||
+ | </ | ||
+ | Erweitern Sie das Programm so, dass der Heber erst runter geht, dann der Roboter fährt und am Schluss der Heber das Prügeli hoch hebt. | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Dem Rand folgen, bis zu einer Distanz ==== | ||
+ | <WRAP todo> | ||
+ | Schreiben Sie eine Funktion, damit der Roboter dem Rand folgt, bis zu einen bestimmten Distanz. | ||
+ | <code python> | ||
+ | def folgenBisWand(): | ||
+ | while True: | ||
+ | # Folgen | ||
+ | # Distanz überprüfen | ||
+ | </ | ||
+ | Zusätzlich können Sie die Geschwindigkeit in Abhängigkeit der Distanz anpassen: | ||
+ | * zuerst maximale Geschwindigkeit, | ||
+ | * Dann die Geschwindigkeit bis etwa 5 reduzieren, je näher man der gewünschten Distanz kommt (verwenden Sie dazu unsere Funktion linear für die Umrechnung) | ||
+ | |||
+ | <code python> | ||
+ | def linear(a, | ||
+ | return (x-a)/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Challenges ===== | ||
+ | Jetzt sollten Sie die Challenge 1 lösen können. | ||
+ | |||
+ | ==== Challenge 2 ==== | ||
+ | {{lehrkraefte: | ||
+ | |||
+ | Der Roboter startet beim grünen Pfeil, folgt der Linie bis vor die Mauer, fährt dann schräg daran vorbei bis zum Rand, dann wie Challange 1 | ||
+ | |||
+ | ==== Challenge 3 ==== | ||
+ | Wie Challenge 2, das Prügeli soll aber im rechten unteren Ecken (beim Startpunkt) abgelegt werden. | ||
+ | |||
+ | |||