Wie programmiert man Dynamixel Servomotoren mit RoboPlus
Dynamixel Servomotoren von Robotis werden weltweit als die besten Servomotoren für Konsumenten angesehen, da diese die gute Leistungen, eine stabile Konstruktion, hohe Präzision und andere Funktionen bieten. Robotis bietet eine große Auswahl an Servomotoren, welche an Leistung herausstehen, im Bezug auf Drehmoment und Benutzung der verschiedenen Funktionen.
Dieses Tutorial wird Ihnen zeigen, was alles notwendig ist, um Ihre Servomotoren zu steuern. Dabei werden folgende Schritte behandelt:
- Verbindung der Servomotoren
- Programmierung
- Übertragung von Programmen auf den Regler
- Ausgabe von Daten
In diesem Beispiel, wird ein CM-700 Regler und ein Dynamixel RX-28 Servomotor verwendet. Die Programmiermethode für andere Regler von Robotis (CM-5, CM-510, CM-530) funktioniert auf die gleiche Weise. Ebenso ändert sich nichts durch die Baureihe (AX, RX, EX und MX) der Servos. Um einen Servomotor zu steuern, benötigt man:
- Einen oder mehrer Dynamixel Servomotoren und deren Verbindungskabel
- Einen Regler und ein PC Verbindungskabel (LN-101 USB Schnittstellenkabel für den CM-700, Bioloid BSC-10 Kabel oder andere mit einem USB2Dynamixel Schnittstellenkabel, sollte der Computer keinen seriellen Port haben)
- Eine regulierte Versorgungsspannung oder Batterie (oder ein SMPS Kabel (12V,5A), abhängig vom Regler)
- Einen Computer mit einer RoboPlus Software.
Schritt 1: Verbindung des Dynamixel Servos mit der Spannungsversorgung
Verbinden Sie den Dynamixel Servomotor mit dem Regler (Servomotoren der Baureihe AX und MX-xxT verwenden eine TTL Kommunikation und daher 3-polige Kabel, wohingegen Motoren der RX, EX und MX-xxR Reihe das RS485 Protokoll verwenden und daher einer 4-polige Verbindung benötigen).
Schalten Sie das Netzteil für den Dynamixle Regler ein: Ein LED leuchtet auf und andere beginnen zu blinken. Das LED auf der Rückseite der Servomotoren blinkt auch kurz auf (kürzer als eine Sekunde), sobald die Versorgungspannung eingeschalten wird.
Verbinden Sie den Regler mit Ihrem Computer. Das Gerät sollte automatisch erkannt werden. Sollte das nicht der Fall sein, sehen sie hier nach.
Schritt 2: Detektion der Servomotoren und des Reglers
Starten Sie RoboPlus, die grafische und freie Software von Robotis, zur Steuerung und Programmierung von Dynamixel Servomotoren. Im Willkommensbildschirm von RoboPlus (siehe unten), wählen Sie "RoboPlus Manger" aus.
Drücken Sie auf Ihrem Dynmixelregler den Taster "Manage" (CM-5, CM-510 und CM-530) oder "Mon" (CM-700), bis eine LED zu blinken anfängt.
In Ihrem Softwarefenster wählen Sie oben links den COM Port aus, mit dem der Regler verbunden ist, oder sie wählen "Auto Search". Dann klicken Sie auf "Connect".
Sollte die Verbindung fehlschlagen, liegt wurde vermutlich der falsche COM Port ausgewählt. Um den richtigen herauszufinden, öffnen sie Ihren Gerätemanager" und sehen nach welchen Port Ihr Regler verwendet. Das Gerät wird "USB Serial Port" genannt und ist unter "Anschlüsse (COM und LPT)" zu finden.
Bei einer funktionierenden Verbindung wird RoboPlus den Regler und alle angeschlossenen Servomotoren erkennen.
Beachten Sie die ID Ihrer Dynamixel Servo, denn mit dieser können Sie die Servos kontrollieren. Außerdem haben Sie damit Zugriff auf alle Variablen, welche diesen Servo und den Regler betreffen. Ab diesem Punkt können Sie entscheiden, ob Sie den Servomotor im Gelenksmodus ("Joint"), z.B. für Roboterarme, oder im Radmodus ("Wheel") betreiben wollen. Im Radmodus erhalten Sie eine kontinuierliche Roatation, z.B. für Räder von mobilen Robotern.
Schritt 3: Programmierung eines Tasks für Ihren Dynamixel Servo
Nun können Sie den RoboPlus Manager schließen und RoboPlus Task öffnen.
Drücken Sie den "Mode" Taster auf dem Regler bis das "Play" LED zu blinken beginnt. Wählen Sie in RoboPlus den richtigen Regler und COM-Port aus.
Als Erstes versuchen wir nun einfach die Position des Servos jede Sekunde auszugeben.
Klicken Sie in die erste Zeile des Programmes. Es wird ein Fenster aufgehen, welches Ihnen eine Auswahl von Kommandos zur Verfügung stellt. Klicken Sie auf "Start Program".
Ihr ganzes Programm muss in geschwungenen Klammern "{}" sein. Doppelklicken Sie auf eine Linie zwischen den geschwungenen Klammern (z.B. Zeile 3), und wählen "Load (assignment value)"
Nun müssen den beiden Fragezeichen Werte zugewiesen werden.
Klicken Sie auf das Erste. Im Pop-up Fenster wählen Sie nun "Dynamixel/Actuator" und "Torque Enable". Überprüfen Sie, ob die ID im Fenster oben mit dem Servomotor übereinstimmt.
Dann klicken Sie auf das zweite Fragezeichen. Bei "Constant Vaue" wählen Sie "False" aus.
Als nächsten erzeugen sie eine neue leere Zeile, durch die Leertaste oder einen Rechtsklick.
Nun benötigen wir eine unendliche Schleife. Dazu klicken Sie auf die neue leere Zeile und wählen "Endless loop (while(1))". Ein neuer Block erscheint, welcher sich wiederrum in geschwungenen Klammern befindet. Der Code in dieser Klammer, ist eine Schleife, er wird unendlich oft ausgeführt.
Nun wollen wir die Position des Servo ausgeben in diesem Block ausgeben. Wir benötigen wir den Befehl "Load (assignment value)". Im ersten Fragezeichen wählen Sie, "Print with Line" in "Controller". Für das Zweite wählen Sie "Present Position" in "Dynamixel/Actuator". "Print with Line" wird verwendet, um eine Zahl zwischen -32767 und +32767 darzustellen, egal woher diese kommt.
Zu guter Letzt sollte noch etwas Zeit verstreichen zwischen den einzelen Auslesevorgängen der Servoposition. Daher werden wir eine Wartezeit von einer Sekunde zwischen jeder Messung einführen. Dafür brauchen wir eine Art Stoppuhr, welche den Auslesevorgang startet, wenn die Uhr bei Null ist.
Erstellen Sie eine neue leere Zeile in der unendlich Schleife und erstellen Sie wieder einen Wert. Diesmal müssen Sie allerdings einen "Timer value" in "Constant value" mit dem Wert 10 und geben diesen einem "Timer" in "Controller".Sie können den berechneten Wert sofort sehen.
als nächstes erzeugen Sie eine neue Zeile und wählen den Befehl "Conditional Stand". Weisen Sie die Werte, wie unten, zu, um zu warten, dass der Timer 0 erreicht (Achtung: 0 ist ein "Timer value").
Sie können den Syntax Ihres Codes überprüfen, indem Sie auf das kleine rote Symbol mit dem Name "Rule Check" drücken. Das Debug Panel im unteren Teil des Fensters wird Ihnen die Anzahl der Variablen, die Größe des Programmes und alle Fehler anzeigen.
Das komplette Programm können sie hier herunterladen.
Schritt 4: Laden und ausführen des Programmes
Nun werden wir das Programm auf den Regler übertragen und überprüfen, ob dieses korrekt ausgeführt wird.
Klicken Sie auf den grünen Pfeil um das Programm zu übertragen. Wenn die Übetragung ("Download") fertig ist, drücken Sie auf "View output of programm".
Dies öffnet ein neues Fenster mit dem Name "Program Output Monitor":
Alles was nun noch zu tun ist, ist den "Start" Taster auf Ihrem Regler zu drücken. Das LED "Play" leuchtet nun permanent, während der Ausführung eines Programmes. Die ersten Zeilen enthalten die Struktur Ihres Roboters.
Die Nummer, die Sie ausgewählt haben, wird angezeigt.
Da sich das Programm in einer Endlosschleife befindet, schalten Sie einfach den Regler aus, um das Programm zu stoppen. Möchten Sie das Programm wieder starten, können sie den Vorgang mit"Start wiederolen.
Wenn Sie nun einen tieferen Einblick in die Programmierung von Dynamixel Servomotoren erhalten möchten, können Sie mit dem 2. Teil dieses Tutorials (noch in Englisch) fortfahren. Dort erfahren Sie ein wenig komplexere Programmierungen, wie Sie Bewegungsabläufe für Servos progammieren und RoboPlus Motion verwenden.
Verwendung der USB2Dynamixel Schnittstelle
Der USB2Dynamixel Adapter kann entweder als USB-Serielle Schnittstelle oder direkt zur Steuerung von Servos verwendet werden.
Für eine serielle Schnittstelle muss der Schalter auf "RS232" stehen, damit Sie einen CM-510 Regler anschließen können. Der CM-530 hat bereits eine USB Schnitstelle, welche direkt verwendet werden kann um Programme vom Computer zu übertragen, genau wie auch der CM-700.
Um direkt mit den Dynamixel Servos zu kommunizieren, stellen Sie den USB2Dynamixel Adapter auf "RS485" für Servo Motoren der Baureihe RX, EX und MX-xxR oder auf "TTL" für AX und MX-xxT Servomotoren.
Versorgung der Dynamixel Servomotoren bei Verwendung des USB2Dynamixel Adapters
Beachten sie das der USB2Dynamixel Adapter nicht verwendet werden kann, um die Servomotoren zu Versorgen, daher muss die Versorgung über den zweiten Stecker des letzten Servomotors der Kette erfolgen, oder zwischen dem Adapter und dem ersten Servo.
Verwendung des USB2Dynamixel Adapter mit RoboPlus, um Dynamixel Servomotoren zu kontrollieren
Ist einmal der Adapter und die Servomotoren angeschlossen, kann der "Dynamixel Wizard" von RoboPlus verwendet werden.
Klicken Sie auf den "Connect" Taster um den Wizard zu starten und alle verbundenen Geräte zu suchen.
In diesem Fenster können auch direkt Einstellungen des Servomotors vorgenommen werden. Z.B.: können Sie den Servomotor bewegen, indem Sie seine "Goal Position" - Zielposition verändern.
Sollten Sie keinen Regler verwenden, können Sie die Servo zwar steuern, allerdings keine Programme von Ihrem Computer auf den Regler laden, um Bewegungen der Servos zu automatisieren.
Generation Robots (http://www.generationrobots.com)
Jede Verwendung und Weitergabe ist nicht ohne Genehmigung gestattet.