Nyereség:
- Képes előre/inverz kinematikai és pályatervezési problémák felállítására és megoldására AI segítségével
- Biztonságos pálya létrehozásának képessége azáltal, hogy a robot csuklóinak határait, sebességét és gyorsulási korlátait adja meg a prompt kontextusaként
- Képes számszerűen és fizikailag ellenőrizni az MI által előállított kinematikai és pályakimenetet
A robotkar végén lévő megfogó bevitele a tér egy bizonyos pontjára, meghatározott tájolásban; Egyszerűen hangzik, de vannak mögötte kinematikai egyenletek, közös határértékek, szingularitások és pályatervezés. Itt a mechatronikai mérnök a trigonometriát, a lineáris algebrát és a vezérléselméletet együtt használja. A mesterséges intelligencia nagy segítség ebben a folyamatban: tud előrehaladó kinematikai egyenleteket felállítani, megoldási megközelítéseket javasolni az inverz kinematikához, paraméterezni egy pályát a sebesség/gyorsulás korlátai szerint. A robotika azonban a mechatronika egyik legnagyobb fizikai kockázattal járó területe; Ha az AI által generált szögszekvenciát ellenőrzés nélkül küldik el a robotnak, a kar megütheti magát, a környezetet vagy a kezelőt. Ebben az egységben látni fogjuk, hogyan állíthatunk be és ellenőrizhetünk kinematikát és pályatervezést mesterséges intelligencia segítségével.
Forward és inverz kinematika
Forward kinematika (FK): A végkifejező helyzetének és tájolásának meghatározása, ha ismertek a csatlakozási szögek. Egyetlen megoldás van, az a közvetlen.
Inverz kinematika (IK): Ha ismert a végfüggvény kívánt helyzete, meg kell találni azokat a csatlakozási szögeket, amelyek ezt biztosítják. Általában több megoldása van (például könyök fel/le), néha nincs megoldása (elérhetetlen pont), néha végtelen megoldása van (szingularitás).
koncepció
bemenet
kimenet
Megoldások száma
Előre irányuló kinematika
ízületi szögek
Extrém pozíció/tájolás
szingli
Inverz kinematika
Extrém pozíció/tájolás
ízületi szögek
Több/egyetlen/végtelen
Kétcsuklós síkkar esetén az inverz kinematika beállítható az AI-ban, és manuálisan ellenőrizhető az alábbiak szerint:
import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """IK 2 ízületű síkkarhoz. A szögeket radiánban adja vissza (könyökös megoldás).""" r2 = x**2 + y**2 # Hozzáférhetőség ellenőrzése: a pont a munkaterületen van? if np.sqrt(r2) > (L1 + L2) vagy np.sqrt(r2) < abs(L1 - L2): raise ValueError("A pont az elérhető munkaterületen kívül van") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t.2, -1 cos_t.2, -1 1.0) # numericalsecurity t2 = np.arccos(cos_t2) # könyök lefelé t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degreest2)(tp.degreest.) L1=L2=1, cél (1,1) -> várható t2=90 fokos nyomtatás (inverz_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
A kritikus vonalak azok, ahol az AI gyakran átugorja: az elérhetőség ellenőrzése (ez a munkaterület pontja) és az "np.clip" (megakadályozza, hogy az arccos bemenet ±1 fölé kerüljön a kerekítési hiba miatt). E két védelem nélkül a kód NaN-t produkál, vagy érvénytelen ponton összeomlik.
Tipp: Amikor IK-felbontást kér, egyértelműen mondja meg az AI-nak, hogy "adja hozzá a kisegítő lehetőségeket, és korlátozza az Arccos bemenetét klipre". Ez a két vonal megakadályozza a néma hibákat, amelyek a legtöbb fejtörést okozzák a területen.
Együttes határok, szingularitás és többféle megoldás
Egy valódi robot minden csuklójának van egy szögtartománya (például -170° és +170° között), sebességkorlátozása és gyorsulási határa. Még ha az IK matematikailag érvényes szöget ad is meg, nem használható, ha az a szög kívül esik az ízület fizikai tartományán. Ezenkívül a robot egyes konfigurációkban szingularitásba esik: két tengely igazodik egymáshoz, egy szabadságfok elveszik, és az ízületi sebességek megpróbálnak a végtelenbe menni egy kis hegymozgásra.
Éppen ezért a HR megoldás önmagában nem elegendő; Minden megoldásnak át kell mennie egy elfogadhatósági szűrőn:
def Solution_gecerli_mi(acilar_deg, limits_deg): """fájdalmak: [t1,t2,...], határértékek: [(min,max),...]""" fájdalom esetén, (amin, amax) in zip(acilar_deg, limits_deg): ha nem (amin <= fájdalom <= amax"): Jopaint} határérték túllépése, f: túllépve. ({amin},{amax}) kivéve" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (Igaz, 'OK')print(cozum_valid_0,] (1) #5. (Hamis, "Az együttes határ túllépve...")
Az AI megadhatja az IK "matematikai" megoldását; de az együttes határértékek és a szingularitás elkerülése az Ön rendszerére jellemző, és ezeket a prompt kontextusaként kell megadni.
Pályatervezés
A robot eljuttatása A pontból B pontba nem azt jelenti, hogy két szög között egyenes vonalat húzunk. A hirtelen sebességváltozás mechanikai ütést és vibrációt okoz. Ehelyett lágy profilokat használnak: trapéz alakú sebességprofilt (állandó gyorsulás – állandó sebesség – állandó lassulás) vagy S-görbét (simább, ahol a gyorsulás is korlátozott). Amikor a mesterséges intelligencia pályát generál, meg kell adnia a célt, az időtartamot és a korlátokat.
import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Trapéz alakú sebességprofil egyetlen csatlakozáshoz. A pozíciótömb visszaadásra kerül.""" távolság = abs(q1 - q0) a irány = np.sign (q1_xmax0) = távolság_sebesség = 0,5 * a_max * t_sebesség**2, ha 2 * távolság_sebesség > távolság: # háromszögprofil (v_max nem érhető el) t_speed = np.sqrt(távolság / a_max) t_konstans = 0,0 v_csúcs = a_max 2 = t_távolság állandó 2 distance_speed) / v_max v_peak = v_max T = 2 * t_gyorsítás + t_konstans t = np.arange(0, T, dt) # ... helyzetszámítás minden t-hez (gyorsulási/állandó/lassulási fázisok alapján) return t, T, v_peak, trajectory 0, v.0. v_max=60.0, a_max=120.0)print(f"Teljes időtartam: {duration:.3f} s, csúcssebesség: {vz:.1f} fok/s")
A logikai ellenőrzés itt a következő: ha a távolság kicsi, a motor soha nem éri el a v_max-ot, és a profil trapézból háromszögletűvé válik. Ha az AI kihagyja ezt a feltételt, akkor a rövid mozgásokhoz rossz időtartamot számít ki. Ezt úgy ellenőrizheti, hogy teszteli a kódot ismert értékkel (például nagyon rövid távolságra).
Gyenge felszólítás / Erős felszólítás
GYENGE:"Írjon egy pályát, amely a robotkart A-ból B-be viszi."(Nincs megkötés: sebességkorlátozás? gyorsulás? csuklótávolság? Vak kimenet.)STRONG:"Generáljon pont-pont pályát az ízületi térben egy 6 tengelyes robot számára. Az egyes ízületek sebességhatára 90 fok/s, a gyorsulási fok/szöghatár 120 a táblázatban megadott tartományban. trapéz alakú sebességprofil, ha a távolság rövid, háromszög alakú profilba essen. Írjon egy ellenőrző függvényt is, amely ellenőrzi, hogy nem lépi-e át a határértékeket: {{tábla}}.
Ellenőrzés: a szimulációtól a robotig
Az AI által generált pálya a következő sorrendben kerül ellenőrzésre, mielőtt a robothoz megy:
- Numerikus: Az egyes lépések csatlakozási szöge, sebessége és gyorsulása határokon belül van?
- Ütközés: A pálya mentén ütközik-e a kar önmagával vagy a környezettel (ha lehetséges, vizualizáljon/szimuláljon)?
- Szingularitás: A pálya egy szingularitási tartományon halad át (a jakobi determináns megközelíti a nullát)?
- Lassú hardverteszt: Működtesse a robotot alacsony sebességgel (pl. 10%), és figyelje vizuálisan.
- Fokozatos fordulatszám-növekedés: Miután mindent ellenőriztünk, a fordulatszám lépésről lépésre növekszik a névleges értékig.
Figyelem: Amikor először indít egy robotot új pályával, a sebesség felülírásának mindig alacsonynak kell lennie, és az E-stopnak elérhetőnek kell lennie. Még akkor is, ha az AI kimenet „matematikailag helyes”, a fizikai beállítás eltolása, fordított tengelye vagy kábelakadása csak lassú teszteléssel derül ki.
Mini tok
Ece automatizálási mérnök kéri az AI-tól a pályakódot a közös térben a pick and place alkalmazáshoz. Az AI trapézprofilt készít, de amikor Ece egy rövid távú mozgást tesztel, azt látja, hogy az idő negatív: a kód nem kezelte a háromszög alakú profil esetét, ahol a v_max nem érhető el. Az Ece ezt úgy korrigálja, hogy "ha kicsi a távolság, ess bele a háromszögprofilba". Ezután az AI által megadott illesztési szögeket a saját határértéktáblázata alapján futtatja a validációs függvényen keresztül, és megállapítja, hogy az 5-ös kötés egy ponton +125°-ot akart, míg a határ +120° volt. Újratervezi a pályát és figyeli, ezúttal 10%-os sebességgel futtatja a robotot. Első körben azt látja, hogy a megfogó túl közel kerül az asztalhoz, és korrigálja a Z eltolást. Az AI percek alatt működőképet adott vissza; de három különálló validálás (háromszög profil, ízületi határ, lassú teszt) három különálló valós problémát talált.
Gyakori hibák
- Az IK megoldás használata közös korlátok és akadálymentesítés nélkül.
- Nem vágja le az arccos/arcsin bejegyzéseket, hanem NaN-t állít elő kerekítési hiba esetén.
- A keringési pálya kérése a sebesség/gyorsulás korlátozása és mechanikai sokk létrehozása nélkül.
- Figyelmen kívül hagyja a szingularitási zónákat, és hagyja, hogy az ízületi sebesség az egekbe szökjön.
- A trapéz-háromszög profil átmenet kihagyása kis távolságban és rossz idő számítása.
- Az első keringési teszt elvégzése teljes sebességgel és E-stop hozzáférés nélkül.
Összefoglalva
- A forward kinematikának egyetlen megoldása van; Az inverz kinematika többféle, nem létező vagy végtelen megoldást is előállíthat.
- Az IK-megoldások szükségszerűen szűrtek a csatlakozási határok, a hozzáférhetőség és a szingularitás szempontjából.
- Pályatervezés; Puha, határértékekkel kompatibilis profilokat használ, mint például a trapéz vagy az S-görbe.
- Kis távolságon a profil trapézból háromszög alakúra változik; ezt a kódban kell kezelni.
- Az AI felgyorsítja a matematikát; A korlátoknak és a fizikai telepítési környezetnek meg kell adnia a promptot.
- Az új pálya először mindig alacsony sebességfokozattal és hozzáférhető E-stoppal fut be.
Pályázati feladat
Válasszon két- vagy háromcsuklós karmodellt (valós vagy képzeletbeli kapcsolathosszokkal és ízületi határértékekkel). Az AI ezzel a kontextussal generáljon inverz kinematikai függvényt és pályatervezőt. Ezután: (1) manuálisan ellenőrizze az IK kimenetet egy ismert célponttal (visszateszi-e a szögeket, és ugyanarra a pontra tér vissza, mint az FK), (2) tesztelje, hogy a kód rögzíti-e azokat úgy, hogy legalább egy elérhetetlen pontot és egy közös határértéket ad meg, (3) ellenőrizze, hogy kis távolságon a keringési idő ésszerűnek bizonyul-e. Írja le, hogy hány érvényesítési hibát talált a kód első verziójában, és melyik réteg fogta el mindegyiket.