lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge [2021/05/25 19:25]
Ivo Blöchliger
lehrkraefte:blc:informatik:glf20:robotik:pruegeli-challenge [2021/05/31 08:26] (current)
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 am Roboter: Der Ultraschall-Distanzsensor und der dritte Motor, um den Heber zu bewegen.
 ==== 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, ob der US-Sensor auch an Port 2 hängt
 robot.addPart(us) robot.addPart(us)
 +
 </code> </code>
  
Line 30: Line 31:
 Verwendung: Verwendung:
 <code python> <code python>
-Heber runter +########################################################################## 
-def runter(): +### Sicherstellen, dass der Heber vor dem Programmstart ganz oben ist! ### 
-    heber.continueTo(-140)  Diesen Wert eventuell anpassen +##########################################################################
-    Tools.delay(500)+
  
-# 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
 </code> </code>
  
  
 ===== Aufgaben ===== ===== Aufgaben =====
-==== Funktionen für Heber runter und rauf ====+Sie programmieren und testen Programmteile, um damit am Schluss die Prügeli-Challenge zu lösen. 
 + 
 +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)  # Bis 20cm vor der Wand der Linie folgen 
 +heberPosition(-100)  # Heber in geeignete Position 
 +folgenBisWand(10)  # Bis 10cm vor der Wand der Linie folgen 
 +heberPosition(-60)  # Prügeli aufheben 
 +rueckwartsFahren() 
 +wenden() 
 +heberPosition(-160)  # Prügeli abladen 
 +</code> 
 + 
 +==== Challenge ==== 
 +Der Roboter soll ein Schoggi-Prügeli holen und bringen, wie in [[https://fginfo.ksbg.ch/~ivo/videos/informatik/challenge1.mp4|diesem Video]]. 
 + 
 +**Wichtig:** Speichern Sie Ihr Programm (Ctrl-S) vor jeder Ausführung! 
 + 
 +Der Roboter folgt der Linie, bis er nah genug an der Wand ist, lädt das Prügeli auf, fährt rückwärts, dreht sich, lädt das Prügeli ab und fährt den Heber wieder hoch.  
 + 
 +Positionieren Sie die rechte Auflage fast am Rand des Papiers und das Prügeli so weit vorne wie möglich. 
 +{{lehrkraefte:blc:informatik:glf19:challenge1.png}} 
 + 
 +==== Bis auf eine Distanz geradeaus fahren ====
 <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 runter():+def fahrenBisWand(): 
 +    gear.setSpeed(20)   # Geeignete Geschwindigkeit setzen 
 +    gear.forward()      # Fahren 
 +    while True: 
 +        dist = us.getDistance() 
 +        if dist>0 and dist<30:   #Sinnvoller Wert kleiner als 30 cm ? 
 +            break 
 +    gear.stop() 
 +     
 +# Funktionen aufrufen 
 +fahrenBisWand() 
 +</code> 
 +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. 
 +</WRAP> 
 + 
 + 
 + 
 +==== 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 
 +</code> 
 +Zusätzlich können Sie die Geschwindigkeit in Abhängigkeit der Distanz anpassen: 
 +  * zuerst maximale Geschwindigkeit, damit sinnvolles Folgen noch möglich ist 
 +  * 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,b,c,d,x): 
 +    return (x-a)/(b-a)*(d-c)+c   
 +</code> 
 +</WRAP> 
 + 
 + 
 +===== Challenges ===== 
 +Jetzt sollten Sie die Challenge 1 lösen können. 
 + 
 +==== Challenge 2 ==== 
 +{{lehrkraefte:blc:informatik:glf19:challenge2.png}} 
 + 
 +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. 
  
  
  • lehrkraefte/blc/informatik/glf20/robotik/pruegeli-challenge.1621963508.txt.gz
  • Last modified: 2021/05/25 19:25
  • by Ivo Blöchliger