Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge [2021/05/25 19:59] Ivo Blöchliger [Bis auf eine Distanz geradeaus fahren] |
lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge [2021/05/31 08:26] Ivo Blöchliger [Aufgaben] |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Neue Elemente ===== | ===== Neue Elemente ===== | ||
- | Es gibt noch zwei neue Elemente: Der Ultraschall-Distanzsensor und der dritte Motor, um den Heber zu bewegen. | + | 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 30: | Line 31: | ||
Verwendung: | Verwendung: | ||
<code python> | <code python> | ||
- | # Heber runter | + | ########################################################################## |
- | def runter(): | + | ### Sicherstellen, |
- | heber.continueTo(-140) | + | ########################################################################## |
- | | + | |
- | # Heber wieder hoch | + | # Heber in eine gegebene Position fahren. |
- | def rauf(): | + | def heberPosition(position): |
- | heber.continueTo(0) | + | heber.continueTo(position) |
Tools.delay(500) | Tools.delay(500) | ||
+ | |||
# Funktionen aufrufen: | # Funktionen aufrufen: | ||
- | runter() | + | heberPosition(-140) # Heber runter, Wert eventuell anpassen |
- | rauf() | + | heberPosition(0) # Heber in Ausgangsposition |
</ | </ | ||
Line 48: | Line 49: | ||
===== Aufgaben ===== | ===== Aufgaben ===== | ||
Sie programmieren und testen Programmteile, | Sie programmieren und testen Programmteile, | ||
+ | |||
+ | Das Programm soll wie folgt organisiert werden: | ||
+ | <code python> | ||
+ | # imports | ||
+ | |||
+ | # Initialiserung des Roboters, Motoren, Sensoren | ||
+ | |||
+ | # Definition der Funktionen wie z.B. | ||
+ | |||
+ | def heberPosition(position): | ||
+ | # ... | ||
+ | | ||
+ | def folgenBisWand(distanz): | ||
+ | # ... | ||
+ | | ||
+ | def wenden(): | ||
+ | # ... | ||
+ | | ||
+ | # Ganz unten, Start vom eigentlichen Programm: | ||
+ | |||
+ | folgenBisWand(20) | ||
+ | heberPosition(-100) | ||
+ | folgenBisWand(10) | ||
+ | heberPosition(-60) | ||
+ | rueckwartsFahren() | ||
+ | wenden() | ||
+ | heberPosition(-160) | ||
+ | </ | ||
==== Challenge ==== | ==== Challenge ==== | ||
Line 60: | Line 89: | ||
==== Bis auf eine Distanz geradeaus fahren ==== | ==== Bis auf eine Distanz geradeaus fahren ==== | ||
- | Messen Sie die geigenete 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 | ||
<WRAP todo> | <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> | <code python> | ||
def fahrenBisWand(): | def fahrenBisWand(): | ||
Line 77: | Line 106: | ||
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. | 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. | ||
+ | |||