Jednotka 2 / 9

Umelá inteligencia v robotike a riadení pohybu

zisky:

  • Schopnosť nastaviť a vyriešiť problémy s doprednou/inverznou kinematikou a plánovaním trajektórie pomocou AI
  • Schopnosť vytvoriť bezpečnú obežnú dráhu zadaním limitov kĺbov robota, obmedzení rýchlosti a zrýchlenia ako kontextu výzvy
  • Schopnosť numericky a fyzicky overiť kinematický výstup a výstup trajektórie produkovaný AI

Privedenie chápadla na konci ramena robota do určitého bodu v priestore, v určitej orientácii; Znie to jednoducho, ale sú za tým kinematické rovnice, spoločné limity, singularity a plánovanie trajektórie. Mechatronický inžinier tu používa trigonometriu, lineárnu algebru a teóriu riadenia spolu. Umelá inteligencia je v tomto procese mocnou pomôckou: dokáže vytvoriť dopredné kinematické rovnice, navrhnúť riešenia pre inverznú kinematiku, parametrizovať trajektóriu podľa obmedzení rýchlosti/zrýchlenia. Robotika je však jednou z oblastí mechatroniky s najvyšším fyzickým rizikom; Ak sa do robota odošle sekvencia uhlov generovaná AI bez overenia, rameno môže zasiahnuť seba, prostredie alebo operátora. V tejto jednotke uvidíme, ako nastaviť a overiť kinematiku a plánovanie trajektórie pomocou AI.

Dopredná a inverzná kinematika

Dopredná kinematika (FK): Nájdenie polohy a orientácie koncového efektora, ak sú známe uhly kĺbov. Existuje len jedno riešenie, je priame.

Inverzná kinematika (IK): Ak je známa požadovaná poloha koncovej funkcie, nájdenie kĺbových uhlov, ktoré to zabezpečia. Zvyčajne má viac ako jedno riešenie (ako lakeť hore/dole), niekedy nemá riešenia (nedosiahnuteľný bod), niekedy má nekonečne veľa riešení (singularita).

koncepcie

vstup

výstup

Počet riešení

Dopredná kinematika

kĺbové uhly

Extrémna poloha/orientácia

slobodný

Inverzná kinematika

Extrémna poloha/orientácia

kĺbové uhly

Viacnásobné/žiadne/nekonečné

Pre dvojkĺbové rovinné rameno možno inverznú kinematiku nastaviť v AI a overiť manuálne nasledovne:

import numpy ako npdef inverse_kinematik_2r(x, y, L1, L2): """IK pre 2-kĺbové rovinné rameno. Vráti uhly v radiánoch (riešenie s lakťom).""" r2 = x**2 + y**2 # Kontrola dostupnosti: je bod v pracovnom priestore? ak np.sqrt(r2) > (L1 + L2) alebo np.sqrt(r2) < abs(L1 - L2): zvýšiť ValueError("Bod je mimo dostupného pracovného priestoru") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2, 1.0.0. # numericalsecurity t2 = np.arccos(cos_t2) # koleno dole t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) návrat np.degrees(tidt.degrees)## L1=L2=1, cieľ (1,1) -> očakávaný t2=90 stupňov print(inverse_kinematik_2r(1,0, 1,0, 1,0, 1,0)) # ~ (0,0, 90,0)

Kritické čiary sú tu, kde AI často preskakuje: kontrola dosiahnuteľnosti (je bod v pracovnom priestore) a `np.clip` (bráni vstupu arccos presiahnuť ±1 v dôsledku chyby zaokrúhľovania). Bez týchto dvoch ochrán kód vytvorí NaN alebo zlyhá v neplatnom bode.

Tip: Keď požadujete rozlíšenie IK, jasne povedzte AI, aby „pridať ovládanie prístupnosti a obmedziť vstup arccos do klipu“. Tieto dva riadky zabraňujú tichým chybám, ktoré spôsobujú najväčšie bolesti hlavy v teréne.

Spoločné limity, singularita a viacnásobné riešenia

Každý kĺb skutočného robota má rozsah uhla (napr. -170° až +170°), obmedzenie rýchlosti a obmedzenie zrýchlenia. Aj keď IK udáva matematicky platný uhol, nemožno ho použiť, ak je tento uhol mimo fyzického rozsahu kĺbu. Okrem toho robot v niektorých konfiguráciách upadá do singularity: dve osi sú zarovnané, jeden stupeň voľnosti je stratený a rýchlosti kĺbov sa snažia ísť do nekonečna pre malý pohyb hrotu.

Preto samotné HR riešenie nestačí; Každé riešenie musí prejsť filtrom prijateľnosti:

def solution_gecerli_mi(acilar_deg, limited_deg): """bolesti: [t1,t2,...], limity: [(min,max),...]""" pre bolesť, (amin, amax) v zip(acilar_deg, limity_deg): ak nie (amín <= bolesť <= amax): návrat False, f"Joint deg.} ({amine},{amax}) okrem" return True, "OK"limity = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limity)) # (True, 'OK')print(cozum_valid_mi, #F150.) limity. 'Prekročený spoločný limit...')

AI môže poskytnúť „matematické“ riešenie IK; ale spoločné limity a vyhýbanie sa singularite sú špecifické pre váš systém a musia byť uvedené ako kontext výzvy.

Plánovanie obežnej dráhy

Dostať robota z bodu A do bodu B nie je o nakreslení rovnej čiary medzi dvoma uhlami. Náhla zmena rýchlosti spôsobuje mechanické otrasy a vibrácie. Namiesto toho sa používajú mäkké profily: lichobežníkový rýchlostný profil (konštantné zrýchlenie – konštantná rýchlosť – konštantné spomalenie) alebo S-krivka (hladší, kde je tiež obmedzené zrýchlenie). Keď AI generuje trajektóriu, musíte zadať cieľ, trvanie a obmedzenia.

import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0,01): """Profil lichobežníkovej rýchlosti pre jeden spoj. Pole polohy je vrátené.""" vzdialenosť = abs(q1 - q0) rýchlosť = np.sign(q1 = q_0. vzdialenosť a_max) t_ a_max * t_speed**2 if 2 * distance_speed > distance: # trojuholníkový profil (v_max nedosiahnuteľný) t_speed = np.sqrt(vzdialenosť / a_max) t_constant = 0,0 v_peak = a_max * t_speed else: t_constant = (vzdialenosť) - 2 * vzdialenosť_rýchlosť = v_max. t_accelerate + t_constant t = np.arange(0, T, dt) # ... výpočet polohy pre každé t (na základe fáz zrýchlenia/konštantná/spomalenie) návrat t, T, v_peak, trvanie, vz = trapezoidal_trajectory(0,0, 90,0, v_f2"=6Total_0.0tal, 2f2"=6Total_ trvanie: {duration:.3f} s, špičková rýchlosť: {vz:.1f} deg/s")

Logická kontrola je nasledovná: ak je vzdialenosť krátka, motor nikdy nedosiahne v_max a profil sa zmení z lichobežníkového na trojuholníkový. Ak AI túto podmienku nesplní, pre krátke pohyby sa vypočíta nesprávne trvanie. Môžete to overiť testovaním kódu so známou hodnotou (napríklad veľmi krátka vzdialenosť).

Slabá výzva / silná výzva

SLABÝ:"Napíšte trajektóriu, ktorá vedie rameno robota z bodu A do bodu B."(Žiadne obmedzenie: rýchlostný limit? zrýchlenie? vzdialenosť kĺbov? Slepý výstup.)SILNÝ:"Vygenerujte trajektóriu z bodu do bodu v kĺbovom priestore pre 6-osového robota. Rýchlostný limit pre každý kĺb je 90 stupňov^s, rozsah zrýchlenia/spomalenia je 22 v tabuľke. Použite lichobežníkový rýchlostný profil, ak je vzdialenosť krátka, spadnite do trojuholníkového profilu. Výstupom každého spoja je tiež napíšte overovaciu funkciu, ktorá skontroluje, či neprekračuje limity spoja: {{tabuľka}}".

Overenie: Od simulácie k robotovi

Trajektória vygenerovaná AI sa overí v tomto poradí pred prechodom k robotovi:

  1. Numerický: Sú uhol kĺbov, rýchlosť a zrýchlenie každého kroku v rámci limitov?
  2. Kolízia: Zráža sa rameno pozdĺž trajektórie so sebou samým alebo s okolím (ak je to možné, vizualizujte/simulujte)?
  3. Singularita: Prechádza obežná dráha oblasťou singularity (približuje sa jakobiánsky determinant k nule)?
  4. Test pomalého hardvéru: Prevádzkujte robot pri nízkej rýchlosti (napr. 10 %) a vizuálne ho sledujte.
  5. Postupné zvyšovanie rýchlosti: Keď je všetko overené, rýchlosť sa postupne zvyšuje na nominálnu hodnotu.
Upozornenie: Pri prvom štarte robota s novou trajektóriou by malo byť nastavenie rýchlosti vždy nízke a malo by byť k dispozícii núdzové zastavenie. Aj keď je výstup AI „matematicky správny“, posun, obrátená os alebo zaseknutie kábla vo fyzickom nastavení sa odhalí až pri pomalom testovaní.

Mini puzdro

Automatizačný inžinier Ece žiada AI o kód trajektórie v spoločnom priestore pre aplikáciu typu pick-and-place. AI ​​vytvára lichobežníkový profil, ale keď Ece testuje pohyb na krátku vzdialenosť, vidí, že čas je negatívny: kód nezvládol prípad trojuholníkového profilu, kde sa nedá dosiahnuť v_max. Ece to napraví pokynom „ak je vzdialenosť krátka, spadnite do trojuholníkového profilu“. Potom spustí uhly spoja dané AI prostredníctvom svojej overovacej funkcie proti svojej vlastnej tabuľke limitov a zistí, že spoj 5 chcel v jednom bode +125°, zatiaľ čo limit bol +120°. Preplánuje trajektóriu a sleduje ju, tentoraz beží robot rýchlosťou 10 %. V prvom kole vidí, že chápadlo sa príliš približuje k stolu a koriguje posun Z. AI vrátila pracovný náčrt v priebehu niekoľkých minút; ale tri samostatné overenia (trojuholníkový profil, limit spoja, pomalý test) zachytili tri samostatné skutočné problémy.

Časté chyby

  • Použitie riešenia IK bez spoločných limitov a kontroly dostupnosti.
  • Neorezáva položky arccos/arcsin, ale vytvára NaN v prípade chyby zaokrúhľovania.
  • Žiadosť o obežnú dráhu bez obmedzenia rýchlosti/zrýchlenia a vytvárania mechanického šoku.
  • Ignorovať zóny singularity a nechať rýchlo stúpať spoje.
  • Preskočenie prechodu profilu lichobežník-trojuholník v krátkej vzdialenosti a výpočet nesprávneho času.
  • Vykonanie prvého orbitálneho testu pri plnej rýchlosti a bez prístupu E-stop.

V súhrne

  • Dopredná kinematika má jediné riešenie; inverzná kinematika môže produkovať viaceré, neexistujúce alebo nekonečné riešenia.
  • Riešenia IK sú nevyhnutne filtrované z hľadiska spoločných limitov, dostupnosti a singularity.
  • Plánovanie trajektórie; Používa mäkké, limitne kompatibilné profily, ako sú lichobežníkové alebo S-krivky.
  • Na krátku vzdialenosť sa profil mení z lichobežníkového na trojuholníkový; toto by sa malo riešiť v kóde.
  • AI zrýchľuje matematiku; Do výzvy by mali vstúpiť limity a kontext fyzickej inštalácie.
  • Nová dráha sa vždy prvýkrát spustí s nízkym rýchlostným pomerom a prístupným núdzovým zastavením.

Aplikačná úloha

Vyberte model ramena s dvomi alebo tromi kĺbmi (so skutočnými alebo imaginárnymi dĺžkami článkov a limitmi kĺbov). Nechajte AI vygenerovať inverznú kinematickú funkciu a plánovač trajektórií v tomto kontexte. Potom: (1) manuálne overte výstup IK so známym cieľom (vrátite uhly späť a vrátite sa do rovnakého bodu ako FK), (2) otestujte, či ich kód zachytí zadaním aspoň jedného neprístupného bodu a jedného spoločného limitu prekračujúceho cieľ, (3) skontrolujte, či sa na krátku vzdialenosť orbitálny čas ukáže ako primeraný. Zapíšte si, koľko problémov s overením ste našli v prvej verzii kódu a ktorá vrstva zachytila ​​každý z nich.