In diesem Labor lernen Sie, wie Sie die Motoren des Roboters ansteuern und ihre Position auslesen, die inverse Kinematik lösen um gezielt Koordinatenpunkte anzufahren, und auf definierten Bahnen zwischen Punkten zu verfahren. Mit diesem Wissen können Sie sich eine eigene Robotik-Anwendung überlegen und diese implementieren.
Orientierung
Motivation
In allen Bereichen der Industrie werden Roboter heutzutage eingesetzt – egal ob in der Herstellung von Gütern, dem Manipulieren von Teilen, oder im Bereich des Sortierens und Verpackens. Deshalb sind Grundkenntnisse der Industrierobotik (Kinematik von Robotern, Grundlagen der Programmierung) sehr wichtig. Mithilfe eines morobots können Labor-Übungen und Experimente ganz einfach am eigenen Schreibtisch durchgeführt werden. Dieses Labor befasst sich mit dem SCARA-Roboter, welcher über zwei rotative und eine linear bewegliche Achse verfügt, an der ein Endeffektor (Greifer, Sauger, Magnet, …) angebracht werden kann. Nachdem Sie in den Grundlagen lernen, wie Sie den morobot ansteuern und dessen Inverse Kinematik berechnen können, programmieren Sie den Roboter, damit er definierte Positionen anfahren kann und sich auf vorgegebenen Bahnen zwischen Punkten bewegt. Anschließend können Sie sich Ihre eigene Anwendung überlegen und programmieren.
Lernvoraussetzung
- Kentnisse in der Entwicklungsumgebung Arduino
- Grundkenntnisse in Elektronik
- Grundkenntnisse von Servomotoren
- Trigonometrie
Lernergebnisse
Nach der Durchführung der Laborübungen sind Sie in der Lage…
- … Servomotoren über Arduino-Boards zu steuern.
- … die inverse Kinematik zur Steuerung von Robotern zu berechnen und zu implementieren.
- … definierte kartesische Koordinaten mit dem morobot einzustellen.
- … Objekte mit dem morobot zu bewegen.
Literaturtipps
Die Laborübung verwendet smarte Servomotoren der Reihe Smart Servo MS-12A, deren Dokumentation HIER gefunden werden kann. Um die Servomotoren in Arduino-Sketches verwenden zu können, existiert HIER bzw. HIER die dazugehörige Arduino-Bibliothek. Darin befinden sich Beispiel-Sketches sowie die Beschreibungen der implementierten Funktionen. Zur Berechnung der Motorenwinkeln in Abhängigkeit von kartesischen Koordinaten wird auf die Theorie zur inversen Kinematik verwiesen. Weitere Details zur inversen Kinematik befinden sich im Baustein Grundlagen. Informationen zum mechanischen und elektrischen Aufbau sowie zur Programmierung in der Arduino-Entwicklungsumgebung können im Dokument morobot_gettingstarted.pdf nachgeschlagen werden.
Wegweiser durch das Labor
Für das Labor benötigt man zwischen 90 und 120 Minuten. Die konkrete Dauer hängt hier vom individuellen Lernfortschritt ab.
Folgende Aktivitäten/Tätigkeiten werden von Ihnen erwartet:- Im Baustein Grundlagen
- wird die notwendige Theorie erarbeitet.
- Im Baustein Anwendung
- bekommen Sie verschiedene Aufgaben gestellt.
- Im Baustein Reflexion
- erhalten Sie eine kurze Zusammenfassung der Ergebnisse.
Grundlagen
morobot erhalten
Zur Durchführung dieses Labors sind ein morobot, ein Microcontroller, sowie Steckverbindungen notwendig.
Dieses Set kann an der FH Technikum Wien zur Übungsdurchführung ausgeliehen werden.
Bei Verwendung eines eigenen Microcontrollers ist zu beachten, dass die nachfolgende Anwendung Koordinaten durch User-Input nur mit Boards mit mindestens zwei seriellen Schnittstellen durchführbar ist.
Es wird ein Arduino Mega oder ESP32 für diese Anwendung empfohlen.
Der morobot selbst kann auch eigenständig hergestellt und zusammengebaut werden.
Dazu werden von der FH Technikum Wien die Bauteilzeichnungen zur Verfügung gestellt, die im 3D-Druckverfahren hergestellt werden können.
In beiden Fällen kontaktieren Sie bitte das ENGINE-Team per E-Mail.
Dokumentation
Wie bereits beschrieben, steht eine Einführung zur Verwendung des morobots im Dokument morobot_gettingstarted.pdf zur Verfügung.
Zum Testen der eingestellten Konfiguration kann nachfolgender Arduino-Sketch verwendet werden.
Das Beispiel lässt die ersten zwei Achsen um 20° nach links und anschließend nach rechts bewegen und die Linearachse aus- und weider einfahren.
Am Ende der Abfolge leuchtet die eingebaute LED am Arduino kurz auf.
Das nachfolgende Video zeigt den Ablauf des Beispiel-Sketches.
#include <SoftwareSerial.h>
#include "MeAuriga.h"
MeSmartServo MyRobot(PORT5);
uint8_t inc=0;
void setup() {
MyRobot.begin(115200);
delay(5);
MyRobot.assignDevIdRequest();
delay(50);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
switch (inc)
{
case 1:
MyRobot.move(1, -200, 1);
inc = 0;
break;
case 2:
MyRobot.move(2, 20, 1);
break;
case 3:
MyRobot.move(3, 100, 1);
break;
case 4:
MyRobot.move(1, -20, 1);
break;
case 5:
MyRobot.move(2, -20, 1);
break;
case 6:
MyRobot.move(3, -100, 1);
break;
default:
inc = 0;
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
delay(500);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
break;
}
delay(2000);
inc++;
Serial.println(inc);
}
Inverse Kinematik
Bei der Vorwärtskinematik werden die Positionen des Endeffektors durch vorgegebene Gelenkwinkel des Roboters berechnet.
Die inverse Kinematik bildet das Gegenstück zur Vorwärtskinematik.
Also wird bei der inversen Kinematik aus vorgebenen Positionen auf die einzustellenden Gelenkwinkel geschlossen.
Dies ist die notwendige Grundlage, damit Roboter Zielkoordinaten anfahren können.
Eine wichtige Rolle spielen dabei die Freiheitsgrade der kinematischen Kette, die mit der Gelenkanzahl steigt.
So ist es meist möglich, eine bestimmte Position durch mehrere verschiedene Roboterkonfigurationen anzufahren.
Die erzielbare Genauigkeit der anzufahrenden Position hängt dabei großteils von der verwendeten Hardware ab.
Im Falle des morobots besitzen die eingebauten Servomotoren eine Auflösung von 1°.
Zusätzlich nimmt die Genauigkeit des morobots durch das vorhandene mechanische Spiel des Zusammenbaus ab.
In diesem Labor reicht die Verwendung von trigonometrischen Funktionen aus, um es erfolgreich zu absolvieren.
Das heißt komplexe Lösungsansätze, wie die Einführung der Jacobi-Matrix oder die Anwendung numerischer Verfahren, werden nicht benötigt.
Anwendung
Im vorigen Abschnitt wurden die Grundlagen beschrieben, um nachfolgende Laborübungen am morobot lösen zu können. Die Angaben stehen in den jeweiligen Unterkapiteln zur Verfügung.
Berechnung der inversen Kinematik
Bevor gezielte Aufgaben mit dem morobot durchgeführt werden können, muss das Erreichen definierter Positionen durch den Endeffektor sichergestellt werden.
Da im Normalfall Koordinaten vorgegeben werden, muss in dieser Aufgabe die inverse Kinematik des morobots berechnet werden.
Dadurch werden durch Vorgabe von kartesischen Koordinaten die Gelenkwinkel berechnet.
Da der morobot zwei Gelenke besitzt, sind meist zwei Roboterkonfigurationen möglich, um eine Position einzustellen.
Dies muss hier jedoch nicht beachtet werden.Aus der nachfolgenden Abbildung können die Maße des morobot entnommen werden. Die kinematischen Grenzen können ebenfalls aus der Abbildung abgeleitet werden. Beachten Sie dabei die minimal und maximal einstellbaren Koordinaten des morobots. Um ein Zerstören der Hardware zu vermeiden, dürfen die beiden Gelenkwinkel nur im Bereich -90° < Φi < 90° liegen.
Hinweis: Sie können den Cosinussatz anwenden, um die inverse Kinematik zu berechnen.
Aufgabenübersicht:
- Berechnen Sie Φ1 und Φ2 als Funktionen der gegebenen Armlängen!
- Definieren Sie den Arbeitsbereich des morobots über den Radius R!
Arduino-Implementierung
In dieser Aufgabe soll die zuvor ermittelte inverse Kinematik in einem Arduino-Sketch implementiert werden, um bestimmte Koordinaten anzufahren.
Die Koordinaten sind frei zu wählen und sollen nacheinander durch den Endeffektor angefahren werden.
Sie können dabei selbst entscheiden, ob der Vorgang nur einmal ausgeführt wird (Implementierung in setup()) oder wiederholt wird (Implementierung in loop()).
Falls angegebene Koordinaten nicht im Arbeitsbereich des morobots liegen, soll das Einstellen dieser Konfigurationen im Arduino-Sketch verhindert werden.Koordinaten durch User-Input
Da nun die Berechnung der inversen Kinematik im Arduino-Sketch implementiert wurde, soll der Sketch so erweitert werden, dass UserInnen Koordinaten über die serielle Kommunikation eingeben können.
Dazu soll der serielle Monitor der Arduino-Entwicklungsumgebung verwendet werden, weshalb eine permanente USB-Verbindung mit dem Rechner vorausgesetzt wird.
Der Sketch soll es ermöglichen, dem Arduino-Board einzelne xy-Koordinaten über den seriellen Monitor zu übergeben, welche anschließend vom morobot angefahren werden.
Dieser Prozess soll endlos durchgeführt werden, wobei eingegebene xy-Koordinaten außerhalb des Arbeitsbereichs abgefangen werden müssen.
Die nachfolgende Abbildung zeigt einen beispielhaften Programmablauf am seriellen Monitor.
Roboterpositionen speichern
Diese Aufgabe soll eine weitere nutzvolle Möglichkeit der Smartservos demonstrieren.
Die Smartservos erlauben es nämlich, aktuelle Winkelpositionen auszulesen.
Nutzen Sie diese Eigenschaft indem Sie händisch drei Roboterpositionen einstellen, die vom Arduino-Board gelesen und in Variablen gespeichert werden.
Nachdem die Positionen gespeichert wurden, sollen sie nacheinander, automatisch und in einer Dauerschleife angefahren werden.
Die nachfolgende Abbildung zeigt einen beispielhaften Programmablauf am seriellen Monitor.
In diesem Beispiel werden genau drei Positionen gespeichert, was natürlich beliebig angepasst werden kann. Als Prgrammerweiterung kann keine genaue Anzahl an Positionen vorgegeben werden, sondern nach Einstellen aller gewünschten Positionen dem Programm durch einen UserIn-Input mitgeteilt werden, dass alle Positionen eingestellt wurden. Die Musterlösung des Erweiterungsprogramms inklusive Beispielvideo kann HIER heruntergeladen werden.
Feel Free!
Nun können Sie eigene Anwendungen für den morobot definieren.
Inspirationen:
- Steuern über die serielle Schnittstelle
- Bewegen von Objekten
- Zeichnen von bestimmten Formen
- …
Reflexion
Nach der Durchführung des Onlinelabors sind Sie in der Lage…
- … die inverse Kinematik zur Steuerung von Roboterarmen zu berechnen.
- … Servomotoren über Arduino-Boards zu steuern.
- … über die serielle Kommunikation einen Roboter direkt zu steuern.
- … aktuelle Winkelstellungen von smarten Servomotoren auszulesen und zu speichern.
Selbstevaluierung
Nachfolgend werden Fragen angezeigt, die Sie nach erfolgreicher Absolvierung des Onlinelabors beantworten können. Die Lösung kann durch Klicken auf die Frage angezeigt werden.
Wozu dient die inverse Kinematik?
Sie ist das Gegenstück zur Vorwärtskinematik und ermöglicht das Berechnen der benötigten Gelenkwinkeln von Roboterarmen zum Erreichen von Positionen. Die Winkel werden dazu aus Koordinaten (beispielsweise kartesische) berechnet.
Was gilt es bei der inversen Kinematik zu beachten?
In Abhängigkeit der Freiheitsgrade einer Gelenkkette können Koordinaten durch verschiedene Gelenkwinkeleinstellungen erreicht werden.
Was muss in Programmen bei der Berechnung von einzustellenden Gelenkwinkeln beachtet werden?
Als Schutz vor Bauteilzerstörung sollte der Arbeitsbereich des Roboters berechnet werden und dadurch nicht erreichbare Koordinaten ausgeschlossen werden.
Wie können UserInnen mit dem Arduino-Board während des Betriebs mit smarten Servomotoren kommunizieren?
Die Kommunikation zwischen UserIn und Arduino-Board kann über eine serielle Schnittstelle erfolgen. Um dies zu nutzen, muss das Board mindestens zwei serielle Schnittstellen besitzen, da eine für die Kommunikation mit den Servomotoren benötigt wird.
Take-Home-Messages
- Die inverse Kinematik eines Roboters wird benötigt um berechnen zu können, welche Gelenkwinkel für die Erreichung einer vorgegebenen Koordinatenposition notwendig sind.
- Durch das Ausschließen von nicht einstellbaren Roboterkonfigurationen werden Bauteilzerstörungen verhindert, weshalb ein zulässiger Arbeitsbereich definiert werden sollte.
- Trigonometrische Funktionen erleichtern die Berechnung der inversen Kinematik von kurzen Gelenkketten.
- Smarte Servomotoren erlauben das Auslesen von Endeffektorpositionen, die anschließend gespeichert und wiederholt eingestellt werden können.
- Ein weiterer Vorteil von smarten Servomotoren ist das Steuern mehrerer Motoren mit nur einer seriellen Schnittstelle.
Links und Literatur
Hier finden Sie eine Zusammenfassung der verlinkten Literatur.
- Smart Servo MS-12a
- Smart Servo MS-12a Arduino-Bibliothek
- Alle Makeblock Arduino-Bibliotheken
- Inverse Kinematik
- morobot_gettingstarted.pdf