1. Vorspiel
LinuxCNC unterstützt eine Reihe von Kinematik-Module, einschließlich einer, die eine verallgemeinerte Reihe von seriellen Kinematik allgemein über Denavit-Hartenberg Parameter angegeben unterstützt.
Dieses Dokument veranschaulicht eine Methode, um die DH-Parameter für eine Mitsubishi RV-6SDL in LinuxCNC mit genserkins Kinematik eingerichtet.
Anmerkung
|
Dieses Dokument befasst sich nicht mit der Erstellung eines "Vismach"-Modells, das zwar sehr nützlich ist, aber eine ebenso sorgfältige Modellierung erfordert, wenn es dem in diesem Dokument abgeleiteten "Genserkins"-Modell entsprechen soll. |
Anmerkung
|
Es kann Fehler und/oder Mängel geben - Nutzung auf eigene Gefahr! |
2. Allgemeines
Mit der zunehmenden Verbreitung von Industrierobotern steigt auch das Interesse, die verwendeten Roboter mit LinuxCNC zu steuern. Eine häufige Art von Roboter in der Industrie und Fertigung verwendet wird, ist die "serielle Manipulator" als eine Reihe von motorisierten Gelenke durch starre Verbindungen verbunden konzipiert. Serienroboter haben oft sechs Gelenke, die für die sechs Freiheitsgrade erforderlich sind, um ein Objekt im Raum zu positionieren (XYZ) und zu orientieren (ABC oder Nick, Roll, Gier). Oft haben diese Roboter eine Armstruktur, die sich von einer Basis bis zu einem Endeffektor erstreckt.
Die Steuerung eines solchen Serienroboters erfordert die Berechnung der Position und Ausrichtung des Endeffektors in Bezug auf ein Referenzkoordinatensystem, wenn die Gelenkwinkel bekannt sind (vorwärtsgerichtete Kinematik), sowie die komplexere umgekehrte Berechnung der erforderlichen Gelenkwinkel für eine bestimmte Position und Ausrichtung des Endeffektors in Bezug auf das Referenzkoordinatensystem (inverse Kinematik). Die mathematischen Standardwerkzeuge, die für diese Berechnungen verwendet werden, sind Matrizen, d. h. Tabellen mit Parametern und Formeln, die den Umgang mit den Rotationen und Translationen erleichtern, die bei der Berechnung der Vorwärts- und Rückwärtskinematik erforderlich sind.
Detaillierte Kenntnisse der Mathematik sind für einen Serienroboter nicht erforderlich, da LinuxCNC ein Kinematikmodul bereitstellt, das einen Algorithmus namens "genserkins" implementiert, um die Vorwärts- und Rückwärtskinematik für einen generischen Serienroboter zu berechnen. Um einen bestimmten Serienroboter zu steuern, muss genserkins mit Daten versorgt werden, so dass es ein mathematisches Modell der mechanischen Struktur des Roboters aufbauen und damit die Mathematik tun kann.
Die erforderlichen Daten müssen in einer standardisierten Form vorliegen, die von Jacques Denavit und Richard Hartenberg bereits in den fünfziger Jahren eingeführt wurde und als DH-Parameter bezeichnet wird. Denavit und Hartenberg verwendeten vier Parameter, um zu beschreiben, wie ein Gelenk mit dem nächsten verbunden ist. Diese Parameter beschreiben im Wesentlichen zwei Rotationen (alpha und theta) und zwei Translationen (a und d).
3. Modifizierte DH-Parameter
Wie so oft wurde dieser "Standard" von anderen Autoren modifiziert, die "modifizierte DH-Parameter" eingeführt haben, und man muss sehr vorsichtig sein, denn "genserkins" verwendet "modifizierte DH-Parameter", wie sie in der Veröffentlichung "Introduction to Robotics, Mechanics and Control" von John J. Craig beschrieben sind. Vorsicht, es gibt viele Informationen zu "DH-Parametern", aber selten definiert der Autor, welche Konvention tatsächlich verwendet wird. Darüber hinaus haben einige Leute es für nötig befunden, den Parameter mit der Bezeichnung "a" in "r" zu ändern und damit zur Verwirrung beigetragen. Dieses Dokument hält sich an die Konvention in der oben erwähnten Veröffentlichung von Craig, mit dem Unterschied, dass die Aufzählung der Fugen und Parameter mit der Zahl 0 beginnt, um mit genserkins und seinen HAL-Pins konsistent zu sein.
Standard- und modifizierte DH-Parameter bestehen aus vier numerischen Werten für jedes Gelenk ("a", "d", "alpha" und "theta"), die beschreiben, wie das Koordinatensystem (CS), das in einem Gelenk sitzt, bewegt und gedreht werden muss, um mit dem nächsten Gelenk ausgerichtet zu werden. Ausgerichtet bedeutet, dass die Z-Achse unseres Koordinatensystems mit der Rotationsachse des Gelenks zusammenfällt und in die positive Richtung zeigt, so dass die Finger in die positive Drehrichtung des Gelenks zeigen, wenn man die Regel der rechten Hand anwendet und der Daumen in die positive Richtung der Z-Achse zeigt. Es wird deutlich, dass man dazu die positiven Richtungen aller Gelenke festlegen muss, bevor man mit der Ableitung der Parameter beginnt!
Der Unterschied zwischen der "Standard"- und der "modifizierten" Notation besteht darin, wie die Parameter den Verbindungen zugewiesen werden. Die Verwendung der "Standard" DH-Parameter in "genserkins" ergibt nicht das korrekte mathematische Modell.
4. Modifizierte DH-Parameter, wie sie in Genserkins verwendet werden
Beachten Sie, dass genserkins keine Offsets auf Theta-Werte behandelt — Theta ist die Gelenkvariable, die von LinuxCNC kontrolliert wird. Mit dem CS mit dem Gelenk ausgerichtet, ist eine Drehung um seine Z-Achse identisch mit der Drehung befohlen, dass das Gelenk von LinuxCNC. Dies macht es unmöglich, die 0° Position unserer Roboter Gelenke willkürlich zu definieren.
Die drei konfigurierbaren Parameter sind:
-
alpha : positive or negative rotation (in radians) around the X-axis of the "current coordinate system"
-
a : positive distance, along X, between two joint axes specified in machine units (mm or inch) defined in the system’s INI file.
-
d : positive or negative length along Z (also in machine units)
Die Parametersätze werden immer in der gleichen Reihenfolge abgeleitet und ein Satz wird durch das Setzen des d-Parameters abgeschlossen. Dadurch bleibt die Z-Achse unseres CS nicht auf das nächste Gelenk ausgerichtet! Dies mag verwirrend erscheinen, aber wenn man sich an diese Regel hält, erhält man einen funktionierenden Satz von Parametern. Sobald der d-Parameter gesetzt ist, muss die X-Achse unseres CS auf die Achse des nächsten Gelenks zeigen.
5. Nummerierung der Verbindungen und Parameter
Das erste Gelenk in LinuxCNC ist Gelenk-0 (weil in der Software Zählung beginnt mit 0), während die meisten Publikationen beginnen mit der Nummer "1". Das gilt auch für alle Parameter. Das heißt, die Nummerierung beginnt mit a-0, alpha-0, d-0 und endet mit a-5, alpha-5 und d-5. Behalten Sie dies im Hinterkopf, wenn Sie einer Veröffentlichung folgen, um "genserkins"-Parameter einzurichten.
6. Wie fange ich an?
Üblicherweise wird das Referenz-CS zunächst in der Basis des Roboters platziert, wobei seine Z-Achse mit der Achse des ersten Gelenks übereinstimmt und seine X-Achse auf die Achse des nächsten Gelenks zeigt.
Dies wird auch dazu führen, dass die DRO-Werte in LinuxCNC zu diesem Punkt referenziert werden. Nachdem dies getan setzt a-0 und alpha-0 auf 0. Die oben genannten Veröffentlichung (Craig) setzt auch d-0 auf 0, die verwirrend ist, wenn eine Verschiebung Offset benötigt wird, um die Referenz-CS an der Unterseite der Basis haben. Die Einstellung von d-0 = auf die Verschiebung führt zu korrekten Ergebnissen. Auf diese Weise ist der erste Satz von Parametern alpha-0 = 0, a-0 = 0, d0 = Verschiebung, und die X-Achse des CS zeigt auf die Achse des nächsten Gelenks (Gelenk-1).
Es folgt die Ableitung der Netzmenge (alpha-1, a-1, d-1) - immer in der gleichen Reihenfolge bis hin zur sechsten Menge (alpha-5, a-5, d-5).
Und so sitzt der TCP-CS des Endeffektors in der Mitte des Handflansches.
7. Sonderfälle
Wenn die nächste Gelenkachse parallel zur letzten ist, kann man den Wert für den d-Parameter beliebig wählen, aber es hat keinen Sinn, ihn anders als 0 zu setzen.
8. Detailliertes Beispiel (RV-6SL)
Im Folgenden wird eine Methode beschrieben, wie man die erforderlichen "modifizierten DH-Parameter" für einen Mitsubishi RV-6SDL ableitet und wie man die Parameter in der HAL-Datei einstellt, um sie mit der "genserkins"-Kinematik in LinuxCNC zu verwenden. Die erforderlichen Abmessungen werden am besten aus einer vom Hersteller des Roboters zur Verfügung gestellten Maßzeichnung entnommen.
9. Danksagungen
Vielen Dank an den Benutzer Aciera für den gesamten Text und die Grafiken für den RV-6SL-Roboter!