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 PortP1 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.
DerBeatle wird nach folgender Anleitung zusammengebaut: Bauplan Beatle
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.
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).
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)
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).
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.
14-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..