Gewinne:
- Fähigkeit, mit Hilfe von KI Vorwärts-/Rückwärtskinematik- und Flugbahnplanungsprobleme aufzustellen und zu lösen
- Fähigkeit, eine sichere Umlaufbahn zu erzeugen, indem die Grenzen der Robotergelenke sowie Geschwindigkeits- und Beschleunigungsbeschränkungen als Kontext für die Eingabeaufforderung angegeben werden
- Fähigkeit, die von der KI erzeugte kinematische und Flugbahnausgabe numerisch und physikalisch zu überprüfen
Bringen des Greifers am Ende eines Roboterarms an einen bestimmten Punkt im Raum, in einer bestimmten Ausrichtung; Es klingt einfach, aber dahinter stecken kinematische Gleichungen, Gelenkgrenzen, Singularitäten und Trajektorienplanung. Dabei nutzt der Mechatroniker Trigonometrie, lineare Algebra und Regelungstheorie gemeinsam. Künstliche Intelligenz ist in diesem Prozess ein leistungsstarkes Hilfsmittel: Sie kann Gleichungen für die Vorwärtskinematik aufstellen, Lösungsansätze für die inverse Kinematik vorschlagen und eine Flugbahn entsprechend Geschwindigkeits-/Beschleunigungsbeschränkungen parametrisieren. Allerdings gehört die Robotik zu den Bereichen der Mechatronik mit dem höchsten körperlichen Risiko; Wenn eine von der KI generierte Winkelsequenz ohne Überprüfung an den Roboter gesendet wird, kann es sein, dass der Arm sich selbst, die Umgebung oder den Bediener trifft. In dieser Einheit erfahren Sie, wie Sie die Kinematik und Flugbahnplanung mit KI einrichten und überprüfen.
Vorwärts- und Rückwärtskinematik
Vorwärtskinematik (FK): Bestimmung der Position und Ausrichtung des Endeffektors bei bekannten Gelenkwinkeln. Es gibt nur eine Lösung, sie ist direkt.
Inverse Kinematik (IK): Wenn die gewünschte Position der Endfunktion bekannt ist, ermitteln Sie die Gelenkwinkel, die diese liefern. Normalerweise gibt es mehr als eine Lösung (z. B. Ellbogen hoch/runter), manchmal gibt es keine Lösungen (unerreichbarer Punkt), manchmal gibt es unendlich viele Lösungen (Singularität).
Konzept
Eingabe
Ausgabe
Anzahl der Lösungen
Vorwärtskinematik
Gelenkwinkel
Extreme Position/Ausrichtung
Single
Inverse Kinematik
Extreme Position/Ausrichtung
Gelenkwinkel
Vielfach/keine/unendlich
Für einen planaren Arm mit zwei Gelenken kann die inverse Kinematik in der KI eingerichtet und manuell wie folgt überprüft werden:
import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """IK für 2-gelenkigen planaren Arm. Gibt Winkel im Bogenmaß zurück (Elbow-Down-Lösung).""" r2 = x**2 + y**2 # Barrierefreiheitsprüfung: Liegt der Punkt im Arbeitsbereich? wenn np.sqrt(r2) > (L1 + L2) oder np.sqrt(r2) < abs(L1 - L2): raise ValueError("Punkt liegt außerhalb des zugänglichen Arbeitsraums") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # numerische Sicherheit t2 = np.arccos(cos_t2) # Ellenbogen nach unten t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degrees(t1), np.degrees(t2)# Validierung: L1=L2=1, Ziel (1,1) -> erwartet t2=90 Gradprint(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
Die kritischen Zeilen hier sind, wo die KI oft überspringt: Erreichbarkeitsprüfung (ist der Punkt im Arbeitsbereich) und „np.clip“ (verhindert, dass die arccos-Eingabe aufgrund von Rundungsfehlern über ±1 hinausgeht). Ohne diese beiden Schutzmaßnahmen erzeugt der Code NaN oder stürzt an einer ungültigen Stelle ab.
Tipp: Wenn Sie nach der IK-Auflösung fragen, weisen Sie die KI deutlich an, „die Barrierefreiheitskontrolle hinzuzufügen und die Arccos-Eingabe auf den Clip zu beschränken“. Diese beiden Leitungen verhindern die stillen Fehler, die in der Branche am meisten Kopfzerbrechen bereiten.
Gemeinsame Grenzen, Singularität und Mehrfachlösungen
Jedes Gelenk eines echten Roboters hat einen Winkelbereich (z. B. -170° bis +170°), eine Geschwindigkeitsbegrenzung und eine Beschleunigungsbegrenzung. Selbst wenn IK einen mathematisch gültigen Winkel angibt, kann er nicht verwendet werden, wenn dieser Winkel außerhalb des physikalischen Bereichs des Gelenks liegt. Darüber hinaus verfällt der Roboter in einigen Konfigurationen in die Singularität: Zwei Achsen sind ausgerichtet, ein Freiheitsgrad geht verloren und die Gelenkgeschwindigkeiten versuchen, für eine kleine Spitzenbewegung gegen Unendlich zu gehen.
Deshalb reicht eine HR-Lösung allein nicht aus; Jede Lösung muss einen Akzeptanzfilter bestehen:
def Solution_gecerli_mi(acilar_deg, limits_deg): """pains: [t1,t2,...], limits: [(min,max),...]""" für Schmerz, (amin, amax) in zip(acilar_deg, limits_deg): wenn nicht (amine <= Pain <= amax): return False, f"Joint limit failed: {pain:.1f} deg ({amine},{amax}) außer" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print(cozum_valid_mi([0.0, 150.0], limits)) # (False, 'Gemeinsames Limit überschritten...')
KI kann die „mathematische“ Lösung von IK liefern; Gelenkgrenzen und Singularitätsvermeidung sind jedoch systemspezifisch und müssen als Kontext für die Eingabeaufforderung angegeben werden.
Orbitplanung
Um den Roboter von Punkt A nach Punkt B zu bringen, geht es nicht darum, eine gerade Linie zwischen zwei Winkeln zu zeichnen. Plötzliche Geschwindigkeitsänderungen erzeugen mechanische Stöße und Vibrationen. Stattdessen werden weiche Profile verwendet: trapezförmiges Geschwindigkeitsprofil (konstante Beschleunigung – konstante Geschwindigkeit – konstante Verzögerung) oder S-Kurve (sanfter, wobei die Beschleunigung ebenfalls begrenzt ist). Wenn Sie die KI veranlassen, eine Flugbahn zu generieren, müssen Sie das Ziel, die Dauer und die Einschränkungen angeben.
import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Trapezförmiges Geschwindigkeitsprofil für ein einzelnes Gelenk. Das Positionsarray wird zurückgegeben.""" distance = abs(q1 - q0) Direction = np.sign(q1 - q0) t_speed = v_max / a_max distance_speed = 0.5 * a_max * t_speed**2 wenn 2 * distance_speed > distance: # dreieckiges Profil (v_max nicht erreichbar) t_speed = np.sqrt(distance / a_max) t_constant = 0.0 v_peak = a_max * t_speed sonst: t_constant = (distance - 2 * distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... Positionsberechnung für jedes t (basierend auf Beschleunigungs-/Konstant-/Verzögerungsphasen) return t, T, v_peak, duration, vz = trapezoidal_trajectory(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"Gesamtdauer: {duration:.3f} s, Spitzengeschwindigkeit: {vz:.1f} Grad/s")
Die Logikprüfung hier ist folgende: Wenn der Abstand kurz ist, erreicht der Motor nie v_max und das Profil ändert sich von trapezförmig zu dreieckig. Fehlt die KI an dieser Bedingung, wird bei kurzen Bewegungen die falsche Dauer berechnet. Sie können dies überprüfen, indem Sie den Code mit einem bekannten Wert testen (z. B. einer sehr kurzen Distanz).
Schwache Eingabeaufforderung / Starke Eingabeaufforderung
SCHWACH: „Schreiben Sie eine Flugbahn, die den Roboterarm von A nach B führt.“ (Keine Einschränkung: Geschwindigkeitsbegrenzung? Beschleunigung? Gelenkabstand? Blindausgabe.) STARK: „Generieren Sie eine Punkt-zu-Punkt-Flugbahn im Gelenkraum für einen 6-Achsen-Roboter. Die Geschwindigkeitsbegrenzung für jedes Gelenk beträgt 90 Grad/s, die Beschleunigungsgrenze beträgt 180 Grad/s^2, der Winkelbereich ist in der Tabelle angegeben. Verwenden Sie ein trapezförmiges Geschwindigkeitsprofil, wenn der Abstand beträgt Kurz gesagt, die Ausgabe jedes Gelenks ist: Schreiben Sie auch eine Überprüfungsfunktion, die überprüft, ob die Gelenkgrenzen überschritten werden: {{Tabelle}}
Verifizierung: Von der Simulation zum Roboter
Die von der KI generierte Flugbahn wird in dieser Reihenfolge überprüft, bevor sie zum Roboter geht:
- Numerisch: Sind Gelenkwinkel, Geschwindigkeit und Beschleunigung jedes Schritts innerhalb der Grenzen?
- Kollision: Kollidiert der Arm entlang der Flugbahn mit sich selbst oder der Umgebung (wenn möglich visualisieren/simulieren)?
- Singularität: Durchläuft die Umlaufbahn einen Singularitätsbereich (nähert sich die Jacobi-Determinante Null)?
- Langsamer Hardwaretest: Betreiben Sie den Roboter mit einer niedrigen Geschwindigkeit (z. B. 10 %) und überwachen Sie ihn visuell.
- Schrittweise Geschwindigkeitssteigerung: Sobald alles überprüft ist, erhöht sich die Geschwindigkeit schrittweise auf den Nennwert.
Achtung: Wenn Sie einen Roboter zum ersten Mal mit einer neuen Flugbahn starten, sollte die Geschwindigkeitsüberbrückung immer niedrig sein und der Not-Aus-Schalter sollte verfügbar sein. Selbst wenn die KI-Ausgabe „mathematisch korrekt“ ist, wird ein Versatz, eine umgekehrte Achse oder ein Kabelfehler im physischen Aufbau nur bei langsamen Tests aufgedeckt.
Mini-Koffer
Der Automatisierungsingenieur Ece bittet die KI um einen Flugbahncode im Gelenkraum für eine Pick-and-Place-Anwendung. Die KI erzeugt ein trapezförmiges Profil, aber als Ece eine Bewegung über kurze Distanzen testet, sieht sie, dass die Zeit negativ ist: Der Code hat den Fall eines dreieckigen Profils, bei dem v_max nicht erreicht werden kann, nicht behandelt. Ece korrigiert dies, indem es die Aufforderung sagt: „Wenn der Abstand kurz ist, fallen Sie in das Dreiecksprofil.“ Dann gleicht es die von der KI durch seine Validierungsfunktion vorgegebenen Gelenkwinkel mit seiner eigenen Grenzwerttabelle ab und stellt fest, dass Gelenk 5 an einem Punkt +125° wollte, während der Grenzwert +120° betrug. Er plant die Flugbahn neu und überwacht sie, wobei er den Roboter dieses Mal mit 10 % Geschwindigkeit laufen lässt. In der ersten Runde sieht er, dass der Greifer zu nahe an den Tisch kommt und korrigiert den Z-Versatz. Die KI gab innerhalb von Minuten eine funktionierende Gliederung zurück; Aber drei separate Validierungen (Dreiecksprofil, gemeinsame Grenze, langsamer Test) haben drei separate echte Probleme erfasst.
Häufige Fehler
- Nutzung der IK-Lösung ohne Fugenbegrenzung und Zugänglichkeitskontrolle.
- Arccos/Arcsin-Einträge werden nicht abgeschnitten, sondern bei Rundungsfehlern wird NaN erzeugt.
- Anfordern der Umlaufbahn ohne Geschwindigkeits-/Beschleunigungsbegrenzung und ohne mechanische Erschütterung.
- Singularitätszonen ignorieren und gemeinsame Geschwindigkeiten in die Höhe schnellen lassen.
- Überspringen des Trapez-Dreieck-Profilübergangs auf kurze Distanz und Berechnung der falschen Zeit.
- Durchführung des ersten Orbitaltests mit voller Geschwindigkeit und ohne Not-Aus-Zugriff.
Zusammenfassend
- Für die Vorwärtskinematik gibt es eine einzige Lösung; Inverse Kinematik kann mehrere, nicht existierende oder unendliche Lösungen erzeugen.
- IK-Lösungen werden zwangsläufig nach gemeinsamen Grenzen, Zugänglichkeit und Einzigartigkeit gefiltert.
- Flugbahnplanung; Es werden weiche, grenzverträgliche Profile wie Trapez oder S-Kurve verwendet.
- Auf kurze Distanz ändert sich das Profil von trapezförmig zu dreieckig; Dies sollte im Code behandelt werden.
- KI beschleunigt Mathematik; Die Grenzwerte und der physische Installationskontext sollten in die Eingabeaufforderung eingegeben werden.
- Die neue Flugbahn wird zum ersten Mal immer mit einem niedrigen Geschwindigkeitsverhältnis und einem zugänglichen Not-Aus gefahren.
Anwendungsaufgabe
Wählen Sie ein Armmodell mit zwei oder drei Gelenken (mit realen oder imaginären Verbindungslängen und Gelenkgrenzen). Lassen Sie die KI mit diesem Kontext eine inverse Kinematikfunktion und einen Trajektorienplaner generieren. Dann: (1) überprüfen Sie manuell die IK-Ausgabe mit einem bekannten Ziel (setzen Sie die Winkel zurück und kehren zum gleichen Punkt wie der FK zurück), (2) testen Sie, ob der Code sie erfasst, indem Sie mindestens einen unzugänglichen Punkt und eine gemeinsame Grenze angeben, die das Ziel überschreitet, (3) überprüfen Sie, ob sich die Umlaufzeit bei kurzer Entfernung als angemessen erweist. Notieren Sie, wie viele Validierungsprobleme Sie in der ersten Version des Codes gefunden haben und welche Ebene jedes davon erkannt hat.