Dynamische Gelenkgrenzen von Robotern und Maschinen
Dynamische Gelenkgrenzen
Viele Roboter- und Maschinensteuerungen erlauben die Definition dynamischer gemeinsamer Grenzwerte, bei denen der Minimal- und/oder Maximalwert eines Grenzwerts vom Wert einer anderen Achse abhängt. Gründe für solche Begrenzungen können Hindernisse im Arbeitsumfeld des Roboters oder der Maschine sein oder um unerwünschtes Aufwinden von Umzugsäcken, Kabeln oder Schläuchen zu vermeiden.
FASTSUITE Edition 2 stellt eine Python-API bereit, um die erforderlichen Limitregel(n) zu erstellen.
Wie man die dynamischen Gelenkgrenzen definiert
Diese Seite zeigt die Erstellung eines Regelwerks für einen OTC-DAIHEN-Roboter.
| 1 | Erobere die Grenzen |
| Zuerst müssen wir die sogenannten Link Soft Limits des OTC-Controllers erwerben: |
| | | | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 1.1 | Erhöhe das Schutzniveau des Nutzers auf mindestens Spezialist. (R->314 Passwort eingeben FD-ST: 12345) | | 1.2 | Navigieren zu: (1) Konstante Einstellungen (2) Maschinenkonstanten (3) Link-Soft-Limit. OTC_Daihen_Dynamic_Limits_01.snipx | | 1.3 | Jede Seite repräsentiert die Grenzwerte einer treibenden und einer abhängigen Achse. Nur die aktivierten Seiten müssen berücksichtigt werden. Gelenk 2 bewegt sich zwischen -65° und +180°. Gelenk 1 kann sich normalerweise zwischen -170° und +170° bewegen. Nur wenn Gelenk 2 innerhalb der unten angegebenen Bereiche liegt, sind die Grenzen von Gelenk 1 begrenzt. Zum Beispiel Limit2 definiert, dass die untere Grenze von Gelenk 1 von -125° auf -154° absteigt, während Gelenk 2 von -65° auf -47° und so weiter verläuft. Alle anwendbaren Grenzbedingungen müssen im Python-Skript berücksichtigt werden, das speziell für diesen speziellen Roboter gilt. OTC_Daihen_Dynamic_Limits_02.snipx | | 1.4 | Auf Seite 2 hängt Joint 3 ebenfalls von Joint 2 ab. Limit1 definiert, dass das untere Limit von Gelenk 3 von -15° auf -80° absteigt, während Gelenk 2 von -65° auf 35° verläuft. Das maximale Limit von Joint 3 bleibt unverändert. OTC_Daihen_Dynamic_Limits_03.snipx OTC_Daihen_Dynamic_Limits_04.snipx |
2. Erstellen Sie das Python-Skript
| | |
| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2.1 | Als Nächstes müssen wir eine Python-Datei erstellen und sie im E2Plugin-Ordner speichern, den du für deine Anpassung nutzt. OTC_Daihen_Dynamic_Limits_05.snipx |
| 2.2 | Öffne die Roboterressource in deiner Edition 2 Sitzung. Öffnen Sie das Properties-Dashboard und fügen Sie ein String-Attribut mit dem Namen DynamicLimitsScriptPath im benutzerdefinierten Attributscontainer hinzu. Der Python-Dateiname und sein Pfad können relativ zum E2Plugins-Ordner oder als absoluter Pfad einschließlich Laufwerksbuchstaben angegeben werden. OTC_Daihen_Dynamic_Limits_06.snipx |
| 2.3 | Der folgende Python-Code zeigt, wie Mehrzahlgrenzen für mehrere Gelenke zusammengesetzt werden können. Füge diese Zeilen der Python-Datei von Schritt 2.1 hinzu. # Importbibliotheken aus centypes importieren * aus cenpylib importieren DynamicLimits als DL def CheckJointsDynamicLimits(joints): j1 = joints[0] j2 = joints[1] j3 = joints[2] j5 = joints[4] j6 = joints[5] # Prüfen Sie J1 abhängig von J2 j1min = InRange(j2, -65, -47)DL.Ramp(j2, -65, -125, -47, -154) + InRange(j2, -47, 180)-170 j1max = InRange(j2, -65, -41)*DL.Ramp(j2, -65, 130, -41, 151) + InRange(j2, -41, 180)*170 falls nicht (j1 >= j1min und j1 <= j1max): zurück UNERREICHBAR # Überprüfen Sie J3 abhängig von J2 j3min = InRange(j2, -65, 35)DL.Ramp(j2, -65, -65, -80, -35, -15) + InRange(j2, -35, 180)-80 j3max = InRange(j2, -65, 180)*100 falls nicht (j3 >= j3min und j3 <= j3max): zurück UNERREICHBAR # Überprüfen Sie J6 abhängig von J5 j6min = InRange(j5,- 140,-70)*DL.Ramp(j5,-140,-110,-70,-165) + InRange(j5,-70,-35)*DL.Ramp(j5,-70,-165,-35,-200) + InRange(j5,-35,-20)*DL.Ramp(j5,-35,-200,-20,-300) j6max = InRange(j5,-140,-70)*DL.Ramp(j5,-140,110,-70,165) + InRange(j5,-70,-35)*DL.Ramp(j5,-70,165,-35,200) + InRange(j5,-35,-20)*DL.Ramp(j5,- 35.200,-20,300) wenn nicht (j6 >= j6 min und j6 <= j6max): geben UNREACHABLE zurück, REACHABLE def InRange(joint, x1, x2): """Dynamische Grenzwerte-Nutzenfunktionen. Ergibt: ganze Zahl: 0 oder 1. """ wenn gemeinsamer < x1 oder gemeinsamer > x2: zurück 0 sonst: zurück 1 |
| |
Weitere Informationen zur Python-Anpassung finden Sie in der Dokumentation Technologieanpassung mit Python API. |
| 2.4 | Es gibt zwei Einschränkungen hinsichtlich dynamischer Gelenkgrenzwerte: Die im Simulationsmonitor angezeigten Gelenkgrenzwerte werden nicht aktualisiert, wenn ein dynamischer Grenzwert in Kraft tritt. Die Funktion Dynamische Begrenzungen wird nicht aufgerufen, wenn eine Achse im Teach Panel modifiziert wird. Stattdessen benutzt man den Manipulator oder greift das Robotergelenk direkt in 3D, um die inverse Kinematik zu aktivieren. OTC_Daihen_Dynamic_Limits_07.snipx |