lehrkraefte:blc:robotics:ablauf

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
Last revision Both sides next revision
lehrkraefte:blc:robotics:ablauf [2017/07/04 14:24]
Ivo Blöchliger
lehrkraefte:blc:robotics:ablauf [2017/07/07 07:55]
Ivo Blöchliger [Freitag]
Line 75: Line 75:
   * Download der Ivobot-Library: {{ :lehrkraefte:blc:robotics:ivobot.zip |}}   * Download der Ivobot-Library: {{ :lehrkraefte:blc:robotics:ivobot.zip |}}
     * Beispiel-Code studieren und verstehen.     * Beispiel-Code studieren und verstehen.
-  * [[pid|Theorie Line-Following und PID-Regler]]+    * [[https://fginfo.ksbg.ch/~ivo/bot/|Dokumentation]]
   * Programmierung Display und Buttons, Bestimmung der PID-Parameter   * Programmierung Display und Buttons, Bestimmung der PID-Parameter
 ==== Mittwoch 5. Juli ==== ==== Mittwoch 5. Juli ====
-  * Fahren auf Distanz, einer Wand folgen, Hindernissen ausweichen+  * Geradeaus fahren 
 +  * Fahren auf Distanz und anhalten 
 +  * Wenden (mit und ohne Wendehindernis) und zurückfahren.
  
 +Um 11h15 starten wir mit drei Challenges:
 +  * Challenge 1 **<<Querung des H-Stock Gangs>>**: Roboter startet an einer Kastenwand und fährt geradeaus möglichst nah an die gegenüberliegende Kastenwand. **Bewertung:** Abweichung von der Geraden (Klebstreifen am Boden) plus Distanz zur Kastenwand.
 +  * Challenge 2 **<<Querung des H-Stock Gangs, U-Turn>>**: Roboter startet an Kastenwand, ein Teil des Roboters überquert die Linie parallel zur gegenüberliegenden Kastenwand, wendet und kehrt wiederum möglichst nah und auf der Geraden zur Ausgangswand zurück. **Bewertung:** Identisch zur Challenge 1 aber an der ursprünglichen Wand
 +  * Challenge 3 **<<Pilonenrundtour>>**: Roboter startet im H47 mit Hinterrad in Klebesreifenbox, umrundet den Karton und kehrt zum Ursprung zurück. **Bewertung:** Distanz des Hinterrads vom Ursprung.
 +
 +=== Geradeausfahren ===
 +Fürs Geradeausfahren gibt es eine wichtige Frage: Welches Rad dreht schneller.
 +
 +<code c++>
 +int tickDiff = robot.motors.getTicks(1) - robot.motors.getTicks(0); // Anzahl Ticks rechter Motor minus Anzahl Ticks linker Motor.
 +// Idee mit tickDiff Motoren Geschindigkeit steuern, z.B. multiplizieren, if(....)
 +</code>
 +Die Tickzähler können auch zurückgesetzt werden mit 
 +<code>
 +robot.motors.resetCounters()
 +</code>
 +Ein Beispiel, welches bis zu einer TickDifferenz von 5 fährt, nachher die Motoren abstellt und den Counter zurücksetzt:
 +<code c++>
 +void loop() {
 +  int tickDiff = robot.motors.getTicks(0) - robot.motors.getTicks(1); //Variable für Tick Unterschied definieren  
 +  if (robot.buttons.get() == 1) {
 +    robot.motors.setPowers(799, 799); // Motor maximale Leistung 
 +    while (abs(tickDiff) < 5) { // so lange die Schlaufe ausführen, als dass die TickDifferenz < 5 ist.
 +      tickDiff = robot.motors.getTicks(0) - robot.motors.getTicks(1); //Differenz der beiden TickCounts berechnen. Linker minus rechter
 +      robot.lcd.clear(); //LCD Display 'löschen'
 +      robot.lcd.print("Tick Diff: "); //Text schreiben
 +      robot.lcd.print(tickDiff); //Tick Differenz ausgeben
 +      delay(50); //LCD ohne Flackern
 +    }
 +    robot.lcd.setCursor(0, 1); //Cursor auf zweite Zeile
 +    robot.lcd.println("5 ueberschritten");
 +    robot.motors.setPowers(0, 0); //Motoren aus
 +    robot.motors.resetCounters(); //Counters zurücksetzen
 +  }
 +}
 +</code>
 +=== Distanzmessung ===
 +Beim Fahren auf Distanz geht es darum, den US-Sensor auszulesen. Dieser kann (siehe ivobot) mit //us.measure()// ausgelesen werden.
 +Folgende Bemerkungen:
 +  * //us.measure();// liefert eine Gleitkommazahl (Distanz in cm) zurück.
 +  * Distanz Überprüfungen können im Code z.B. wie folgt überprüft werden: <code ++> float distance = us.measure();
 + if((distance <= 10) && (distance > 0)){ //der Sensor gibt bei einer zu grossen Distanz den Wert 0 zurück; & ist das logische und
 +
 +} </code>
 +  * Allenfalls könnte man sanftes Abbremsen andenken...
 ==== Donnerstag 6. Juli ==== ==== Donnerstag 6. Juli ====
-  * Festlegen des Wettbewerbsparcours+  * [[pid|Theorie Line-Following und PID-Regler]] 
 +  * Festlegen der Wettbewerbsparcours (Folge von Challenges, die auch einzeln bestritten werden können). 
 +  * Aufräumen 
 +  * Mittag
   * Programmieren / Testen etc.   * Programmieren / Testen etc.
  
 +=== Menu Struktur ===
 +<code txt untermenu.txt>
 +
 +void meinTollesUntermenu() {
 +  // Menu anzeigen, Resultat ist Ganzzahl (int), gespeichert in der Variablen 'choice'
 +  int choice = robot.menu.choice("Cool1", "Toll2", "Super3", "Abort");
 +  if (choice==1) { // Wenn gleich 1
 +       coolesDing();    // Unterprogramm test_us aufrufen (siehe oben)
 +  } else if (choice==2) { // Sonst wenn gleich 2
 +    meinCoolesProgrammKannsBesser();
 +  } else if (choice==3)  {
 +    sontEinTestOderSo();
 +  }
 +}
 +
 +// Wird immer wieder aufgerufen
 +void loop() {
 +  // Menu anzeigen, Resultat ist Ganzzahl (int), gespeichert in der Variablen 'choice'
 +  int choice = robot.menu.choice("Prg1", "Prg2", "Prg3", "Prg4");
 +  if (choice==1) { // Wenn gleich 1
 +       meinTollesUntermenu();    // Unterprogramm test_us aufrufen (siehe oben)
 +  } else if (choice==2) { // Sonst wenn gleich 2
 +    meinCoolesProgramm();
 +  } else if (choice==3)  {
 +    sontEinTestOderSo();
 +  } else if (choice==4)  {
 +    undNochWas();
 +  }
 +}
 +
 +</code>
 ==== Freitag ==== ==== Freitag ====
-  Roboterwettbewerb+=== Wettbewerb === 
 +  Start jeweils mit Hinterrad auf den Markierungen. 
 +  * Wird eine Markierung mit allen Rädern überfahren, gibt es die darauf markierten Punkte. 
 +  * Einer Berührung mit Mauern und Hindernissen gibt 1 Minuspunkt. Entlangschleifen gibt 2 Minuspunkte. 
 +  * Manuelles Eingreifen beendet die Challenge. Bisher gemachte Punkte zählen aber. 
 +  * In die richtige Richtung wenden nach einer Challenge gibt 1 Punkt. 
 +  * Eine Challenge autonom nach einer anderen zu fahren gibt 1 Punkte mehr für die zweite Challenge. 
 +  * Die vierte Challenge ohne den vorgegebenen Line-Following Code zu fahren, gibt 2 Plus-Punkte. 
 + 
 +Wertung 
 +  * Drei Versuche pro Challenge und Team. Der beste Lauf zählt.
  
  • lehrkraefte/blc/robotics/ablauf.txt
  • Last modified: 2018/12/14 15:56
  • by Ivo Blöchliger