lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:drivebase

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:robotik-mit-svcode:drivebase [2023/02/10 09:09]
Ivo Blöchliger
lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:drivebase [2023/02/14 09:59] (current)
Ivo Blöchliger [Roboter steuern mit DriveBase]
Line 2: Line 2:
 <WRAP todo> <WRAP todo>
   * Legen Sie ein neues Projekt unter dem Namen ''drivebasetest'' an.   * Legen Sie ein neues Projekt unter dem Namen ''drivebasetest'' an.
-  * In der Datei main.py, fügen Sie folgende Zeilen hinzu:+  * In der Datei ''main.py'', fügen Sie folgende Zeilen hinzu:
 <code python> <code python>
 links = Motor(Port.A) links = Motor(Port.A)
Line 26: Line 26:
  
 <WRAP todo> <WRAP todo>
-Die ''drive'' Methode erlaubt es, einen Kreis zu fahren. Die Zeit abzuschätzen und mit ''wait'' zu warten ist ungenau, weil die Geschwindigkeit nicht konstant ist, sondern am Anfang und am Ende beschleunigt bzw. verzögert wird. Genauer ist es, den Winkel oder die Distanz zu messen. Fügen Sie folgende Funktion Ihrem Code hinzu (nachdem das ''fahrwerk'' initialisiert wurde. Die restlichen Bewegungen können Sie löschen.+Die ''drive'' Methode erlaubt es, einen Kreis zu fahren. Die Zeit abzuschätzen und mit ''wait'' zu warten ist ungenau, weil die Geschwindigkeit nicht konstant ist, sondern am Anfang und am Ende beschleunigt bzw. verzögert wird. Genauer ist es, den Winkel oder die Distanz zu messen.  
 +  * Fügen Sie folgende Funktion Ihrem Code hinzu (nachdem das ''fahrwerk'' initialisiert wurde. Die restlichen Bewegungen können Sie löschen.
 <code python> <code python>
 def kreisbogen(fahrwerk, geschwindigkeit, radius, winkel): def kreisbogen(fahrwerk, geschwindigkeit, radius, winkel):
     """Mit dem fahrwerk soll auf einem Kreis mit Radius radius (in mm) ein bestimmter Winkel (in Grad) mit Geschwindigkeit geschwindigkeit (mm/s) gefahren werden.     """Mit dem fahrwerk soll auf einem Kreis mit Radius radius (in mm) ein bestimmter Winkel (in Grad) mit Geschwindigkeit geschwindigkeit (mm/s) gefahren werden.
-    Ist geschwindigkeit<0, fährt der Roboter rückwärts. Der winkel gibt an, um wieviel sich der Roboter insgesamt um die eigene Achse dreht."""+    Ist geschwindigkeit<0, fährt der Roboter rückwärts. Der winkel gibt an, um wieviele Grad sich der Roboter insgesamt um die eigene Achse im Uhrzeigersinn dreht und kann ebenfalls negativ sein."""
     if winkel>=0:     if winkel>=0:
         richtung=1         richtung=1
Line 40: Line 41:
     print("v=%f, va=%f" % (geschwindigkeit, winkelgeschwindigkeit))     print("v=%f, va=%f" % (geschwindigkeit, winkelgeschwindigkeit))
     winkelziel = fahrwerk.angle()+winkel     winkelziel = fahrwerk.angle()+winkel
 +    fahrwerk.drive(geschwindigkeit, winkelgeschwindigkeit)
     while fahrwerk.angle()*richtung<winkelziel*richtung:     while fahrwerk.angle()*richtung<winkelziel*richtung:
         wait(1)  # 1 ms pausieren         wait(1)  # 1 ms pausieren
Line 47: Line 49:
 kreisbogen(fahrwerk, 100, 250, 360) kreisbogen(fahrwerk, 100, 250, 360)
 </code> </code>
 +  * Kommentieren Sie die Zeilen der Funktion und beschreiben Sie präzise, was wie und warum berechnet wird.
 </WRAP> </WRAP>
  
 +===== Challenge =====
 +
 +<WRAP todo>
 +  * Der Roboter startet mit dem Lichtsensor am Rande eines «1m Klebestreifens».
 +  * Ein Stuhl steht mittig auf dem gegenüberliegenden «1m Klebestreifen».
 +  * Der Roboter soll den Stuhl umrunden und möglichst genau wieder auf dem Ausgangs-Punkt stehen bleiben.
 +  * Gemessen wird die Zeit in Sekunden. Dazu wird $\frac{1}{10}$ des Quadrats der Distanz in cm vom Startpunkt addiert. Die Gruppe mit dem kleinsten Score gewinnt.
 +  * Es dürfen beliebig viele Versuche gemacht werden.
 +</WRAP>
  
  • lehrkraefte/blc/informatik/glf22/robotik-mit-svcode/drivebase.1676016575.txt.gz
  • Last modified: 2023/02/10 09:09
  • by Ivo Blöchliger