Python Online
Home     .
touchsensor

6. TOUCHSENSOR (BERÜHRUNGSSENSOR)

 

 

DU LERNST HIER...

 

wie du ein einen Touchsensor dafür einsetzen kannst, Hindernisse zu erkennen und entsprechend zu reagieren.

 

 

WIE FUNKTIONIERT EIN TOUCHSENSOR

 
Der EV3-Touchsensor ist wie ein Schalter aufgebaut, der beim Hineindrücken des roten Knopfs einen Kontakt macht. Gewöhnlich baust du ihn vorne in der Mitte des Roboters an. Der Touchsensor kennt zwei Zustände gedrückt (isPressed) und nicht gedrückt.  

 

 

MUSTERBEISPIELE

 

Beispiel 1: Ein Hindernis registrieren und ausweichen

Der Roboter soll sich in einem mit vier Wänden beschränken Raum bewegen. Wenn er mit dem Touchsensor eine Wand berührt, fährt er eine kurze Strecke zurück, dreht 90° nach links und fährt in der neuen Richtung weiter.

Ist der Touchsensor am Port 3 angeschlossen, gibt der Befehl ts3.isPressed()True zurück, falls der Sensorknopf Knopf gedrückt ist, sonst liefert er False.

 

Programm:

from grobot import *

forward()
repeat: 
    if ts3.isPressed():
        backward()
        delay(1500)
        left()
        delay(550)
        forward()
► In Zwischenablage kopieren

Beispiel 2: Kanalroboter
Ein Roboter mit zwei Touchsensoren soll den Weg im Kanal finden. Mit zwei Touchsensoren kannst du den Roboter effizienter steuern. Je nachdem, ob er ein Hindernis mit dem linken oder mit dem rechten Sensor berührt, fährt er zuerst kurz zurück und dreht um einen kleinen Winkel in die Gegenrichtung. Die Sensoren sind an den Ports 1 und 2 angeschlossen.

Baue mit verschiedenen Gegenständen eine ähnliche Hindernisbahn.

 




Programm:

from grobot import *

forward()
repeat:    
    if ts1.isPressed():
        backward()
        delay(250)
        left()
        delay(200)
        forward() 
    elif ts2.isPressed():        
        backward()
        delay(250)
        right()
        delay(200)
        forward()         
► In Zwischenablage kopieren


 

MERKE DIR...

 

Der Touchsensor kann nur zwei Werte zurückgeben und zwar den Wahrheitswert True , wenn der Sensorbutton gedrückt ist, oder False, wenn er nicht gedrückt ist.

 

 

ZUM SELBST LÖSEN

 

 


1.


Ein Roboter mit einem oder zwei Tousensoren bewegt sich im Käfig mit einem Ausgang. Er startet in der Mitte und soll möglichst rasch den Ausgang finden.

 

 
 



2.

Der Roboter soll eine rechteckige Fläche, die auf allen Seiten begrenzt ist, so abfahren, als ob er sie wie ein Rasenmäher mähen würde. Falls er auf eine Begrenzung trifft, so fährt er zuerst ein wenig zurück, dreht um 90 Grad, fährt eine kurze Strecke parallel zur Wand, dreht nochmals um 90 Grad und fährt wieder vorwärts.

Beachte, dass der Rasenmäher immer einmal links und einmal rechts drehen muss. Um es so zu programmieren, gibt es ein einfacher Trick:

 

Du wählst Variable n, die zu Beginn 0 ist, nach einer Linksdrehung auf 1 und bei einer Rechtsdrehung wieder auf 0 gesetzt wird. Du überprüfst bei jeder Wende, ob n 0 oder 1 ist und machst die entsprechende Drehung. Um das Programm besser zu strukturieren, kannst du die Links-Wende als Funktion turnLeft() und die Rechts-Wende als Funktion turnRight() definieren. Falls du nicht weiter kommst, kannst du hier spicken:

3.

Kanalroboter.
Ein Roboter mit zwei Touchsensoren soll das ganze Rohr durchfahren und wieder zum Ausgangsort zurückkehren.

 

 

 

 

 
 

 

 

ZUSATZSTOFF: EV3-BUTTONS

 

Ähnlich wie die Touchsensoren können auch die Buttons auf dem EV3-Brick programmiert werden, um z. B. mit dem Button ESCAPE ein laufendes Programm abzubrechen, oder mit den Buttons LEFT, bzw. RIGHT den Roboter zu steuern.

Die Funktion button_left.was_pressed() gibt True zurück, wenn der Button LEFT gedrückt wurde

 

  Beispiel 3: Roboter mit den Buttons steuern

Mit deinem Programm wird der EV3 mit den Buttons UP, LEFT und RIGHT gesteuert. Wenn der Button UP gedrückt wird, bewegt er sich 1000 ms vorwärts, mit Klick auf LEFT dreht er 550 ms nach links und mit RIGHT 550 ms nach rechts. Nach jeder Bewegung hält er an und warte auf den nächsten Button-Klick. Das Programm läuft so lange, bis der Button ESCAPE gedrückt wird.

Programm:

from grobot import *

while not button_escape.was_pressed():
    if button_up.was_pressed():
        forward()
        delay(1000)
        stop()
    elif button_left.was_pressed():
        left()
        delay(550)
        stop()
    elif button_right.was_pressed():
        right()
        delay(550)
        stop()
    delay(100)    
exit()
► In Zwischenablage kopieren


 

MERKE DIR...

 

Anstelle einer Endlosschleife repeat kannst du die Schleife
while not button_escape.was_pressed():
verwenden. Das Programm wird dann nur so lange ausgeführt, bis du den Button escape auf dem EV3 Brick drückst.

Die Buttons enter, left, right, up und down kannst du zur Steuerung des Roboters verwenden.


 

ZUM SELBST LÖSEN

 
4.

Dein Roboter soll ein Labyrinth mit Hilfe seines Touchsensors und der Buttons button_left und button_right durchfahren. Er startet unten rechts und fährt vorwärts. Wenn er mit dem Touchsensor eine Wand berührt, fährt er eine kurze Strecke rückwärts, bleibt stehen und wartet, bis du den Button left oder right gedrückt hast. Dann dreht er rechtwinklig in dieser Richtung und fährt vorwärts.

 

 

 

Programm:

from grobot import *

forward()
while not button_escape.was_pressed():
    if ts3.isPressed():
        ....
    if button_left.was_pressed():
       ...
    if button_right.was_pressed():
       ...
exit()     
► In Zwischenablage kopieren

 


 

   

 

6-1
Fachliche Hinweise:

 

from grobot import *

RobotContext.useObstacle("sprites/field1.gif", 250, 250)
RobotContext.setStartPosition(350, 350)

def turnLeft(): 
    ...

def turnRight(): 
    ...
    
n = 0
forward()
repeat: 
    if ts3.isPressed(): 
        backward()
        ...
        if n == 0:
            turnLeft()
            n = 1
        else:
            turnRight()
            n = 0   
        forward()
6-2
Kanalroboter
 

Abwasserkanäle halten unsere Städte sauber und helfen, Überflutungen bei starken Regenfällen zu verhindern. Rund 80% der Abwasserkanäle sind nicht begehbar. Kanalroboter werden eingesetzt, um die Kanalnetze zu kontrolliert und Leckstellen aufzuspüren.

Der Roboter navigiert autonom mit Hilfe seiner Touchsensoren in Kanälen mit 30 - 60 cm Durchmesser und kann mit dem eingebauten Laser-Kamerasystem die beschädigten Stellen entdecken.