Beatle
Deutsch   English   

9. GREIFARM MIT SERVOMOTOR (Mechanic Beatle)

 

 

DU LERNST HIER...

 

einen Greifarm (Maqueen Mechanic Beatle) an deinen mbRoboter anschliessen und mit einem Servomotor steuern. Der Greifarm kann leichte Gegenstände packen und transportieren.


 

 

GREIFARM ZUSAMMENBAUEN

 

Den Greifarm mit einem Servomotor kannst du einzeln (Maqueen Mechanics Beatle) oder in einem Bausatz (Maqueen Mechanics Roboter-Kit) bestellen. Der Servomotor wird am Port S1 bzw. S2 des Maqueens 4 oder an am Ports S1 bzw. S2 der Maqueens Plus angeschlossen.

 

 

 

Beim Maqueen Plus V2 wird der Servomotor am Port P1 bzw. P2 angeschlossen. Diese befinden sich hinten rechts auf dem Chassis. Im deinem Programm musst du die Servo-Ports im Befehl setServo() mit P1 bzw. P2 (statt S1 bzw. S2) aufrufen.

 

 

 

 

MUSTERBEISPIELE

 

Beispiel 1: Greifarm testen

Der Servomotor bewegt die beiden Arme des Greifarms gleichzeitig. Mit dem Befehl
setServo("S1", 60)
in die offene Stellung, mit
setServo("S1", 95)
kann der Roboter Gegenstände packen. Die Winkel musst du eventuell noch anpassen.

 



from mbrobot import *
#from mbrobot_plus import *

setServo("S1", 95)
delay(1000)             
setServo("S1", 60)
delay(1000) 
setServo("S1", 95)
► In Zwischenablage kopieren

 

Beispiel 2: Gegenstand fassen

Der Roboter bewegt sich zum Gegenstand, der sich in einem kurzen Abstand vor ihm befindet, packt ihn mit seinem Greifarm, fährt eine kurze Strecke zurück, dreht nach links und stellt den Gegenstand am neuen Ort ab (ähnlich wie im oben stehenden Video).

 

from mbrobot import *
#from mbrobot_plus import *

setServo("S1", 95)
delay(1000)
setServo("S1", 60)
forward()
delay(1000)
stop()
setServo("S1", 95)
backward()
delay(500)
left()
delay(700)
stop()
setServo("S1", 60)
► In Zwischenablage kopieren

 

Beispiel 3: Mit Ultraschallsensor den Greiarm positionieren

Im Beispiel 2 startet der Roboter immer im gleichen Abstand vom Gegenstand und die Länge der Vorwärtsbewegung wird durch eine Zeitangabe (delay(1000)) bestimmt. Mit Hilfe eines Ultraschallsensors kann der Roboter die richtige Position selbst erkennen. Der Roboter bewegt sich vorwärts, bis sein Abstand zum Gegenstand oder zu einer hinter ihm stehenden Wand kleiner als 20 cm ist. Dann packt er den Gegenstand mit seinem Greifarm und transportiert ihn weg (ähnlich wie im unten stehenden Video).

 

from mbrobot import *
#from mbrobot_plus import *

setServo("S1", 60)
forward()
repeat:
    d = getDistance()
    print(d)
    if d < 20: 
        stop()
        delay(500)
        setServo("S1", 95)
        delay(500)             
        backward()
        delay(2500)
        left()
        delay(700)      
        stop()
        setServo("S1", 60)
    delay(100) 
  
► In Zwischenablage kopieren

Die Distanz zur Wand wird in einer "endlosen" repeat-Schleife alle 100 Millisekunden abgefragt. Ist sie kleiner als 20 cm, hält der Roboter an und packt den Gegenstand mit seinem Greifarm.

 

Beispiel 4: Ultraschallsensor mit Servomotor drehen

Gemäss der oben stehenden Bauanleitung wird der Ultraschallsensor auf einem zweiten Servomotor befestigt. Dieser wird am Port S2 angeschlossen. Den drehbaren Ultraschallsensor kannst du verwenden, um Gegenstände zu suchen (Aufgabe 3) oder um den Roboter in einem bestimmten Abstand einer Wand nach fahren zu lassen (Aufgabe 4).


from mbrobot import *
#from mbrobot_plus import *

setServo("S2", 90)
delay(2000)
setServo("S2", 0)
delay(2000)
setServo("S2", 90)
delay(2000)

angle = 90
while angle >= 0:
    setServo("S2", angle)
    delay(500)
    angle = angle - 10
    
angle = 0
while angle <= 90:
    setServo("S2", angle)
    delay(500)
    angle = angle + 10 
► In Zwischenablage kopieren

Das Programm zeigt, wie man den Ultraschallsensor mit einem zweiten Servomotor von der frontaler Position in eine Position, die parallel zur Fahrtrichtung ist drehen kann. Zuerst in einem Schritt und dann in kleinen Schritten.

 

 

MERKE DIR...

 

Der Servomotor wird mit dem Befehl setServo(Port, Winkel) um den gewünschten Winkel gedreht, wobei du für den erste Parameter S1 oder S2 und den Winkel eine Zahl zwischen 0 und 180 wählen kannst. Der Servomotor bewegt gleichzeitig beide Arme.

Am Port S2 kannst du einen zweiten Servomotor anschliessen, mit dem du den Ultraschallsensor drehen kannst.

 

 

ZUM SELBST LÖSEN

 

 


1.


Roboter mit einem Greifarm bewegt sich 2000 Millisekunden vorwärts und lädt einen Gegenstand auf. Dann dreht er 180 ° nach links, fährt 2000 Millisekunden vorwärts und stellt den Gegenstand ab. Danach dreht er 180° nach rechts und holt den nächsten Gegenstand.

 
 
2.

Ergänze die Situation aus der Aufgabe 1 mit zwei Wänden, so dass der Roboter die Vorwärtsbewegungen jeweils mit Hilfe eines Ultraschallsensors beendet und den Aufladen- und Abladen-Vorgang mehrmals wiederholt.

 


3.

Der Ultraschallsensor dreht sich mit Hilfe vom Servomotor in kleinen Schritten so lange, bis er ein Objekt erkennt. Danach löst er Alarm aus. Du kannst die Suche einschränken, indem du nur Objekte in einer Distanz zwischen 30 und 70 cm suchen lässt.

4.
Mit Hilfe eines Servomotors dreht der Ultraschallsensor an eine Position parallel zur Fahrtrichtung, so dass er seitwärts den Abstand messen kann. Der Roboter bewegt sich danach Vorwärts etwa im Abstand von 15 cm entlang einer geraden Wand.

 

9-1
Fachliche Hinweise:

In der Regel entspricht die Position nach vorne dem Winkel 90 und die Positionen auf die rechte bzw. linke Seite den Winkeln 0 bzw. 180. Wenn es nicht der Fall ist hast du zwie Möglichkeiten

1) Du änderst die Winkel in deinem Programm, so dass die Richtung stimmt (z.B. 110 statt 90 und 20 statt 0)

2) Du kannst aber auch zuerst den Befehl setServo("S2", 90) ausführen. Dann den Sensor kurz abschrauben und die runde Unterlage so aufsetzen, dass du den Sensor danach exakt frontal anschrauben kannst..