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:50]
Ivo Blöchliger [Aufgaben]
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 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>
  
Line 48: Line 49:
 ===== Aufgaben ===== ===== Aufgaben =====
 Sie programmieren und testen Programmteile, um damit am Schluss die Prügeli-Challenge zu lösen. 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 ==== ==== Challenge ====
Line 61: Line 90:
 ==== Bis auf eine Distanz geradeaus fahren ==== ==== 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 fahrenBisWand(): def fahrenBisWand():
Line 67: Line 97:
     while True:     while True:
         dist = us.getDistance()         dist = us.getDistance()
-        if dist>0 and dist<50:   #Sinnvoller Wert kleiner als cm ?+        if dist>0 and dist<30:   #Sinnvoller Wert kleiner als 30 cm ?
             break             break
     gear.stop()     gear.stop()
          
 +# Funktionen aufrufen
 +fahrenBisWand()
 </code> </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> </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.txt
  • Last modified: 2021/05/31 08:26
  • by Ivo Blöchliger