Dobički:
- Sposobnost nastavitve in reševanja problemov kinematike naprej/obrat in načrtovanja poti s pomočjo AI
- Sposobnost izdelave varne orbite z navajanjem omejitev sklepov robota, hitrosti in pospeška kot konteksta za poziv
- Sposobnost numeričnega in fizičnega preverjanja kinematičnega in trajektorskega izhoda, ki ga ustvari AI
Prenos prijemala na koncu robotske roke na določeno točko v prostoru, v določeni orientaciji; Sliši se preprosto, vendar za tem stojijo kinematične enačbe, meje sklepov, singularnosti in načrtovanje poti. Tukaj inženir mehatronike skupaj uporablja trigonometrijo, linearno algebro in teorijo krmiljenja. Umetna inteligenca je močan pripomoček v tem procesu: lahko vzpostavi napredne kinematične enačbe, predlaga rešitvene pristope za inverzno kinematiko, parametrira trajektorijo glede na omejitve hitrosti/pospeška. Je pa robotika eno izmed področij mehatronike z največjim fizičnim tveganjem; Če je zaporedje kotov, ki ga ustvari AI, poslano robotu brez preverjanja, lahko roka udari vase, okolje ali operaterja. V tej enoti bomo videli, kako nastaviti in preveriti kinematiko in načrtovanje poti z AI.
Napredna in inverzna kinematika
Kinematika naprej (FK): Iskanje položaja in usmeritve končnega efektorja, če so znani koti sklepov. Rešitev je samo ena, ta je neposredna.
Inverzna kinematika (IK): če je znan želeni položaj končne funkcije, iskanje sklepnih kotov, ki bodo to zagotovili. Ponavadi ima več kot eno rešitev (na primer komolec gor/dol), včasih nima nobene rešitve (nedosegljiva točka), včasih ima neskončno rešitev (singularnost).
koncept
vnos
izhod
Število rešitev
Kinematika naprej
sklepni koti
Ekstremna lega/orientacija
samski
Inverzna kinematika
Ekstremna lega/orientacija
sklepni koti
Več/brez/neskončno
Za dvosklepno planarno roko je mogoče inverzno kinematiko nastaviti v AI in jo ročno preveriti, kot sledi:
import numpy kot npdef inverse_kinematik_2r(x, y, L1, L2): """IK za 2-sklepno ravninsko roko. Vrne kote v radianih (rešitev s komolcem navzdol).""" r2 = x**2 + y**2 # Preverjanje dostopnosti: ali je točka v delovnem prostoru? če je np.sqrt(r2) > (L1 + L2) ali np.sqrt(r2) < abs(L1 - L2): dvigni ValueError("Točka je zunaj dostopnega delovnega prostora") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # numericalsecurity t2 = np.arccos(cos_t2) # komolec navzdol t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degrees(t1), np.degrees(t2)# Validacija: L1=L2=1, cilj (1,1) -> pričakovani t2=90 stopinjski tisk(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
Tukaj AI pogosto preskoči kritične vrstice: preverjanje dosegljivosti (je točka v delovnem prostoru) in `np.clip` (preprečuje, da bi vnos arccos presegel ±1 zaradi napake pri zaokroževanju). Brez teh dveh zaščit bo koda ustvarila NaN ali se zrušila na neveljavni točki.
Namig: Ko zahtevate ločljivost IK, jasno povejte AI naj "doda nadzor dostopnosti in omeji vnos arccos na posnetek". Ti dve liniji preprečujeta tihe napake, ki povzročajo največ preglavic na tem področju.
Skupne meje, singularnost in večkratne rešitve
Vsak sklep pravega robota ima razpon kota (npr. -170° do +170°), omejitev hitrosti in omejitev pospeška. Tudi če IK poda matematično veljaven kot, ga ni mogoče uporabiti, če je ta kot zunaj fizičnega območja sklepa. Poleg tega robot v nekaterih konfiguracijah pade v singularnost: dve osi sta poravnani, ena stopnja svobode je izgubljena in skupne hitrosti poskušajo iti v neskončnost za majhen premik konice.
Zato samo kadrovska rešitev ni dovolj; Vsaka rešitev mora prestati filter sprejemljivosti:
def solution_gecerli_mi(acilar_deg, limits_deg): """bolečine: [t1,t2,...], meje: [(min,max),...]""" za bolečino, (amin, amax) v zip(acilar_deg, limits_deg): če ne (amin <= bolečina <= amax): vrni False, f"Meja sklepa presežena: {pain:.1f} deg ({amine},{amax}) razen" 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], omejitve)) # (False, 'Skupna omejitev presežena ...')
AI lahko ponudi "matematično" rešitev IK; vendar so skupne omejitve in izogibanje singularnosti specifični za vaš sistem in jih je treba navesti kot kontekst pozivu.
Načrtovanje orbite
Spraviti robota od točke A do točke B ne gre za risanje ravne črte med dvema kotoma. Nenadna sprememba hitrosti povzroči mehanske udarce in vibracije. Namesto tega se uporabljajo mehki profili: trapezni profil hitrosti (konstanten pospešek–konstantna hitrost–konstanten pojemek) ali S-krivulja (bolj gladka, kjer je tudi pospešek omejen). Ko AI ustvarja trajektorijo, morate navesti cilj, trajanje in omejitve.
import numpy kot npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Trapezoidni profil hitrosti za en sklep. Vrne se polje položaja.""" distance = abs(q1 - q0) direction = np.sign(q1 - q0) t_speed = v_max / a_max distance_speed = 0,5 * a_max * t_speed**2 if 2 * distance_speed > distance: # trikotni profil (v_max ni dosegljiv) t_speed = np.sqrt(distance / a_max) t_constant = 0,0 v_peak = a_max * t_speed else: t_constant = (razdalja - 2 * distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... izračun položaja za vsak t (na podlagi faz pospeška/konstante/pojemka) return t, T, v_peak, duration, vz = trapezoidal_trajectory(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"Skupno trajanje: {duration:.3f} s, največja hitrost: {vz:.1f} deg/s")
Logično preverjanje tukaj je naslednje: če je razdalja kratka, motor ne bo nikoli dosegel v_max in profil se bo iz trapeza spremenil v trikoten. Če AI zgreši ta pogoj, bo za kratke premike izračunano napačno trajanje. To lahko preverite s testiranjem kode z znano vrednostjo (na primer zelo kratka razdalja).
Šibek poziv / močan poziv
WEAK:»Napišite trajektorijo, ki popelje robotovo roko od A do B.«(Brez omejitve: omejitev hitrosti? pospešek? razmik med sklepi? Slepi izhod.)MOČNO:»Generirajte trajektorijo od točke do točke v prostoru sklepov za 6-osni robot. Omejitev hitrosti za vsak sklep je 90 stopinj/s, omejitev pospeška je 180 stopinj/s^2, razpon kota je podan v tabeli. Uporabite trapezni profil hitrosti, če je razdalja kratka, pade v trikotni profil. Napišite tudi verifikacijsko funkcijo, ki preverja, ali ne presega omejitev sklepov: {{table}}".
Preverjanje: od simulacije do robota
Pot, ki jo ustvari AI, se preveri v tem vrstnem redu, preden gre do robota:
- Numerično: Ali so skupni kot, hitrost in pospešek vsakega koraka v mejah?
- Trčenje: ali roka vzdolž poti trči vase ali v okolje (vizualizirajte/simulirajte, če je mogoče)?
- Singularnost: Ali poteka orbita skozi območje singularnosti (se Jacobianova determinanta približuje ničli)?
- Počasen preizkus strojne opreme: upravljajte robota pri nizki hitrosti (npr. 10 %) in ga vizualno spremljajte.
- Postopno povečevanje hitrosti: Ko je vse preverjeno, se hitrost postopoma povečuje do nominalne vrednosti.
Pozor: Ko robota prvič zaženete z novo trajektorijo, mora biti preglasitev hitrosti vedno nizka in E-stop mora biti na voljo. Tudi če je izhod umetne inteligence "matematično pravilen", bo zamik, vzvratna os ali zamašek kabla v fizični nastavitvi razkrit le s počasnim testiranjem.
Mini etui
Inženir avtomatizacije Ece zahteva od umetne inteligence kodo trajektorije v skupnem prostoru za aplikacijo izberi in postavi. Umetna inteligenca ustvari trapezni profil, toda ko Ece preizkusi premik na kratki razdalji, vidi, da je čas negativen: koda ni obravnavala primera trikotnega profila, kjer v_max ni mogoče doseči. Ece to popravi tako, da pove pozivu "če je razdalja kratka, padi v trikotni profil". Nato izvede kote sklepov, ki jih poda umetna inteligenca prek svoje validacijske funkcije, glede na lastno mejno tabelo in ugotovi, da je spoj 5 na eni točki želel +125°, medtem ko je bila meja +120°. Ponovno načrtuje pot in jo spremlja, tokrat pa poganja robota pri 10-odstotni hitrosti. V prvi rundi vidi, da se prijemalo preveč približuje mizi in popravi odmik Z. AI je v nekaj minutah vrnil delujoč oris; vendar so tri ločene validacije (trikotni profil, meja spoja, počasen preizkus) zajele tri ločene resnične težave.
Pogoste napake
- Uporaba rešitve IK brez omejitev sklepov in nadzora dostopnosti.
- Ne izrezuje vnosov arccos/arcsin, ampak ustvari NaN v primeru napake pri zaokroževanju.
- Zahtevanje orbite brez omejevanja hitrosti/pospeška in povzročanja mehanskih udarcev.
- Ignoriranje območij singularnosti in dopuščanje skupnih hitrosti v nebo.
- Preskok prehoda trapezno-trikotni profil na kratki razdalji in izračun napačnega časa.
- Izvajanje prvega orbitalnega preizkusa pri polni hitrosti in brez dostopa do E-stop.
Če povzamem
- Kinematika naprej ima eno samo rešitev; inverzna kinematika lahko proizvede več, neobstoječih ali neskončnih rešitev.
- Rešitve IK so nujno filtrirane glede na skupne omejitve, dostopnost in singularnost.
- Načrtovanje poti; Uporablja mehke, mejno združljive profile, kot sta trapezna ali S-krivulja.
- Na kratki razdalji se profil spremeni iz trapeza v trikotnik; to je treba obravnavati v kodi.
- AI pospeši matematiko; Omejitve in kontekst fizične namestitve bi morali vnesti poziv.
- Nova trajektorija se vedno prvič izvaja z nizkim razmerjem hitrosti in dostopnim E-stopom.
Aplikacijska naloga
Izberite model roke z dvema ali tremi sklepi (z realnimi ali namišljenimi dolžinami povezav in omejitvami sklepov). Umetna inteligenca naj ustvari inverzno kinematsko funkcijo in načrtovalec poti s tem kontekstom. Nato: (1) ročno preverite izhod IK z znano tarčo (ali postavite kote nazaj in se vrnete na isto točko kot FK), (2) preizkusite, ali jih koda zajame tako, da poda vsaj eno nedostopno točko in eno omejitev sklepa, ki presega cilj, (3) preverite, ali se na kratki razdalji orbitalni čas izkaže za razumnega. Zapišite, koliko težav s preverjanjem veljavnosti ste našli v prvi različici kode in kateri sloj je ujel vsako od njih.