Jython
Deutsch   English 

19. Maqueen Mechanic

Neues TigerJython (ab Version 2.28) erforderlich.

 


 
Mechanic Loader
 
Mechanic Beatle

 

Der Loader kann kleine Objekte aufladen und transportieren. Der Beatle kann mit einem Greifarm leichte Gegenstände fassen und an einen beliebigen Ort versetzen. Die benötigten Bauelement mit einem Servomotor können einzeln (Maqueen Mechanics Loader, Maqueen Mechanic Beatle) oder in einem Bausatz (Maqueen Mechanics Roboter-Kit) bestellt werden. Der Servomotor wird am Port S1 bzw. S2 des Maqueen 4 oder Maqueen Plus angeschlossen. Die älteren Maqueen-Modelle verfügen über keine solche S-Schnittstelle.

 

 

  Mechanic Loader

Der Loader kann nach folgendem Bauplan zusammengebaut werden: Bauplan Loader

Beispiel 1: Loader mit Servomotor bewegen
Der Servomotor bewegt den Loader zuerst zur Ausgangslage (unten), dann wird die Schaufel nach oben bewegt und nach 2000 Millisekunden wieder nach unten in die Ausgangslage.

Der Servomotor wird mit dem Befehl setServer(port, angle) bewegt. Führen Sie das unten stehende Programm mit verschiedenen Winkeln aus um herauszufinden, für welchen Wert sich die Schaufel in der Ausgangslage (unten) befindet. Die Winkel sind von der Position, in der der Servomotor vor dem Anschrauben der Schaufel war, abhängig.

 

from mbrobot_plus import *
#from mbrobot import*

setServo("S1", 160)
delay(2000)
setServo("S1", 100)
delay(2000)          
setServo("S1", 160)
► In Zwischenablage kopieren

Erklärungen zum Programmcode:

setServer("S1", 160) Der Servomotor ist am Port S1 angeschlossen. Der zweite Parameter gibt die Position des Servomotors an.


Beispiel 2
: Mit Ultraschallsensor den Loader positionieren
Der Roboter soll einen Gegenstand, der sich bei einer senkrechten Wand befindet aufladen und wegtransportieren. Um den Abstand zur Wand zu messen, verwendet er den Ultraschallsensor.

from mbrobot_plus import *
#from mbrobot import *

setServo("S1", 160)
setSpeed(20)
forward()
repeat:
    d = getDistance()
    print(d)
    if d < 12: 
        stop()
        delay(1000)
        setServo("S1", 100)
        setSpeed(20)        
        backward()       
        delay(4000)               
        stop()
        setServo("S1", 160)
    delay(100)   
► In Zwischenablage kopieren

Erklärungen zum Programmcode:

d = getDistance() In einer "endlosen" Schleife wird die Distanz zur Wand gemessen.
setServo("S1", 100) Hebt den Gegenstand auf.

 


  Mechanic Beatle (Greifarm)

Der Greifarm kann nach folgender Anleitung zusammengebaut werden: Bauplan Beatle

Beispiel 3: Gegenstand fassen
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 muss eventuell anpasst werden.

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 unten 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

Erklärungen zum Programmcode:

setServer("S1", 60) Der Greifarm soll sich in der offenen Stellung befinden. Eventuelle muss dieser Winkel angepasst werden. Je nach Grösse des Gegenstandes muss auch der Winkel 95° angepasst werden.


Beispiel 4
: Mit Ultraschallsensor den Greifarm positionieren
Der Roboter soll einen Gegenstand, der sich bei einer senkrechten Wand befindet aufladen und wegtransportieren. Um den Abstand zur Wand zu messen, verwendet er den Ultraschallsensor.

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

Erklärungen zum Programmcode:

getDistance() Misst alle 100 Millisekunden den Abstand zur Wand


Beispiel 5
: Ultraschallsensor mit Servomotor drehen
Der Ultraschallsensor kann mit einem zweiten Servomotor bewegt werden. Dieser wird am Port S2 angeschlossen. Den drehbaren Ultraschallsensor kann man verwenden, um Gegenstände zu suchen (Aufgabe 3) oder um in einem bestimmten Abstand einer Wand nach zu fahren (Aufgabe 4).

Der Ultraschallsensor wird von einer frontalen Lage rechtwinklig gedreht. Zuerst in einem Schritt und dann in kleinen Schritten.

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

Erklärungen zum Programmcode:

setServo("S2", 90) Dreht den Servomotor so dass sich der Ultraschallsensor in der frontalen Position befindet. Wenn es nicht der Fall ist, kann man den Winkel anpassen oder den Sensorkurz abschrauben und die runde Unterlage so aufsetzen, dass man den Sensor danach exakt frontal anschrauben kann.
setServo("S2", 0) bzw. setServo("S2", 180) Dreht den Sensor parallel zur Fahrtrichtung.

 


Aufgaben:


1)


Roboter mit einem Loader oder einem Greifarm bewegt sich 2000 Millisekunden vorwärts und lägt einen Gegenstand auf. Dann bewegt er sich 2000 Millisekunden Rückwärts, dreht ca. 90° nach links, bewegt sich 2000 Millisekunden vorwärts und stellt den Gegenstand ab.

 


2)


Ergänze die Situation aus der Aufgabe 1 mit zwei senkrechten Wänden, so dass der Roboter die Vorwärtsbewegungen jeweils mit Hilfe vom Distanzsensor 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 und korrigiert laufend seine Fahrtrichtung.