lehrkraefte:blc:informatik:glf22:linefollower

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:glf22:linefollower [2023/02/24 09:17]
Ivo Blöchliger [Variante 1]
lehrkraefte:blc:informatik:glf22:linefollower [2023/02/28 09:55] (current)
Ivo Blöchliger [Variante 1]
Line 1: Line 1:
 ====== Line Follower ====== ====== Line Follower ======
-Ziel ist es, den Roboter so zu programmieren, dass er einer Linie (möglichst auch mit Kurven) folgen kann.+Ziel ist es, den Roboter so zu programmieren, dass er der äusseren, dicken Linie auf der Plane einmal links herum auf der Aussenkurve folgen kann (ohne Abkürzungen)Fastest wins ;-)
  
 ===== Grundideen ===== ===== Grundideen =====
Line 25: Line 25:
 <code python> <code python>
 while True: while True:
-   # Tu was+   hell = licht.reflection() 
 +   fahrwerk.drive(Geschwindigkeit vorwärts in mm/s, Drehgeschwindigkeit in Grad/s) 
 +   if hell<40:  # Wert anpassen 
 +      fahrwerk.drive(100,20) 
 +   elif hell>60:  # Wert anpassen! 
 +      fahrwerk.drive(100,-20) 
 +   else: 
 +      fahrwerk.drive(100,0) 
 +    
 </code> </code>
 Das Programm kann dann entweder über den Computer oder durch Drücken der Escape-Taste auf dem Roboter (Taste oben links) gestoppt werden. Das Programm kann dann entweder über den Computer oder durch Drücken der Escape-Taste auf dem Roboter (Taste oben links) gestoppt werden.
Line 44: Line 53:
  
 ===== Variante 3: Kurve ermitteln ===== ===== Variante 3: Kurve ermitteln =====
-Mit der Variante 2 fährt der Roboter in einer Kurve immer neben der Mitte (sonst würde er ja keine Kurve fahren). Idealerweise sollte der Roboter auch in Kurven genau auf der Kante fahren. Das kann mit folgender Idee realisiert werden:+Mit der Variante 2 fährt der Roboter in einer Kurve immer neben der Kante zwischen weiss und schwarz (sonst würde er ja keine Kurve fahren). Idealerweise sollte der Roboter auch in Kurven genau auf der Kante fahren. Das kann mit folgender Idee realisiert werden:
   * Man summiert bei jeder Messung die Helligkeitsdifferenzen auf. Nennen wir diese Summe $I$ (Integral).   * Man summiert bei jeder Messung die Helligkeitsdifferenzen auf. Nennen wir diese Summe $I$ (Integral).
     * Beim Geradeausfahren ist die Summe $I$ ungefähr gleich Null.     * Beim Geradeausfahren ist die Summe $I$ ungefähr gleich Null.
     * Beim Kurvenfahren wird die Summe $I$ immer grösser (bzw. kleiner, je nachdem ob man eine Links- oder Rechtskurve fährt).     * Beim Kurvenfahren wird die Summe $I$ immer grösser (bzw. kleiner, je nachdem ob man eine Links- oder Rechtskurve fährt).
-  * Die Idee ist nun, dass man ein geeignetes (kleines) Vielfaches von $c_i \\cdot I$ zur Helligkeitsdifferenz hinzuzählt, und dann damit die Drehgeschwindigkeit bestimmt.+  * Die Idee ist nun, dass man ein geeignetes (kleines) Vielfaches $c_i \cdot I$ zur Helligkeitsdifferenz hinzuzählt, und dann damit die Drehgeschwindigkeit bestimmt.
  
 <WRAP todo> <WRAP todo>
 Programmieren Sie die Variante 3.  Programmieren Sie die Variante 3. 
-  * Dazu initialisieren Sie **vor** der while-Schleife eine Variable ''i=0'' und eine Variable ''ci=0.1'' (Wert durch experimentieren bestimmen).+  * Dazu initialisieren Sie **vor** der while-Schleife eine Variable ''i=0'' und eine Variable ''ci=0.1'' (Wert durch Experimentieren bestimmen).
   * In der while-Schleife   * In der while-Schleife
     * zählen Sie die aktuelle Hellikeitsdifferenz zu ''i'' hinzu und     * zählen Sie die aktuelle Hellikeitsdifferenz zu ''i'' hinzu und
  • lehrkraefte/blc/informatik/glf22/linefollower.1677226652.txt.gz
  • Last modified: 2023/02/24 09:17
  • by Ivo Blöchliger