Jednotka 2 / 9

Umělá inteligence v robotice a řízení pohybu

zisky:

  • Schopnost nastavit a řešit problémy s dopřednou/inverzní kinematikou a plánováním trajektorie pomocí AI
  • Schopnost vytvářet bezpečnou oběžnou dráhu tím, že jako kontext výzvy poskytnete omezení kloubů robota, omezení rychlosti a zrychlení
  • Schopnost numericky a fyzicky ověřit výstup kinematiky a trajektorie vytvořený AI

Přivedení chapadla na konci ramene robota do určitého bodu v prostoru, v určité orientaci; Zní to jednoduše, ale jsou za tím kinematické rovnice, společné limity, singularity a plánování trajektorie. Zde inženýr mechatroniky používá trigonometrii, lineární algebru a teorii řízení dohromady. Umělá inteligence je v tomto procesu mocným pomocníkem: může stanovit dopředné kinematické rovnice, navrhnout řešení pro inverzní kinematiku, parametrizovat trajektorii podle omezení rychlosti/zrychlení. Robotika je však jednou z oblastí mechatroniky s nejvyšším fyzickým rizikem; Pokud je úhlová sekvence generovaná umělou inteligencí odeslána do robota bez ověření, rameno může zasáhnout sebe, prostředí nebo operátora. V této jednotce uvidíme, jak nastavit a ověřit kinematiku a plánování trajektorie pomocí AI.

Dopředná a inverzní kinematika

Dopředná kinematika (FK): Zjištění polohy a orientace koncového efektoru, pokud jsou známy úhly kloubu. Existuje pouze jedno řešení, a to přímé.

Inverzní kinematika (IK): Pokud je známa požadovaná poloha koncové funkce, nalezení kloubových úhlů, které to zajistí. Obvykle má více než jedno řešení (jako loket nahoru/dolů), někdy nemá řešení (nedosažitelný bod), někdy má nekonečně řešení (singularita).

koncepce

vstup

výstup

Počet řešení

Dopředná kinematika

kloubové úhly

Extrémní poloha/orientace

svobodný

Inverzní kinematika

Extrémní poloha/orientace

kloubové úhly

Vícenásobné/žádné/nekonečné

U dvoukloubového rovinného ramene lze inverzní kinematiku nastavit v AI a ověřit ručně následovně:

import numpy jako npdef inverse_kinematik_2r(x, y, L1, L2): """IK pro 2-kloubové rovinné rameno. Vrátí úhly v radiánech (řešení loktem).""" r2 = x**2 + y**2 # Kontrola přístupnosti: je bod v pracovním prostoru? pokud np.sqrt(r2) > (L1 + L2) nebo np.sqrt(r2) < abs(L1 - L2): zvýšit ValueError("Bod je mimo přístupný pracovní prostor") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2, 1.0. # numericalsecurity t2 = np.arccos(cos_t2) # koleno dolů 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, cíl (1,1) -> očekávaný t2=90 stupňů print(inverse_kinematik_2r(1,0, 1,0, 1,0, 1,0)) # ~ (0,0, 90,0)

Zde jsou kritické řádky, kde AI často přeskakuje: kontrola dosažitelnosti (je bodem v pracovním prostoru) a `np.clip` (zabraňuje vstupu arccos překročit ±1 kvůli zaokrouhlovací chybě). Bez těchto dvou ochran bude kód vytvářet NaN nebo havarovat v neplatném bodě.

Tip: Když se ptáte na rozlišení IK, jasně řekněte AI, aby „přidala ovládání přístupnosti a omezila vstup arccos do klipu“. Tyto dva řádky zabraňují tichým chybám, které způsobují největší bolesti hlavy v terénu.

Společné limity, singularita a vícenásobná řešení

Každý kloub skutečného robota má rozsah úhlu (např. -170° až +170°), limit rychlosti a limit zrychlení. I když IK udává matematicky platný úhel, nelze jej použít, pokud je tento úhel mimo fyzický rozsah kloubu. Navíc robot v některých konfiguracích upadá do singularity: dvě osy jsou vyrovnány, jeden stupeň volnosti je ztracen a kloubové rychlosti se snaží jít do nekonečna pro malý pohyb špičky.

Proto samotné HR řešení nestačí; Každé řešení musí projít filtrem přijatelnosti:

def solution_gecerli_mi(acilar_deg, limited_deg): """bolesti: [t1,t2,...], limity: [(min,max),...]""" pro bolest, (amin, amax) v zip(acilar_deg, limity_deg): pokud ne (amine <= bolest <= amax): return False, f"Joint deg.: ({amine},{amax}) kromě" 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, #F150.0. 'Společný limit překročen...')

AI může poskytnout "matematické" řešení IK; ale společné limity a vyhýbání se singularitě jsou specifické pro váš systém a musí být uvedeny jako kontext výzvy.

Plánování oběžné dráhy

Dostat robota z bodu A do bodu B není o nakreslení přímky mezi dvěma úhly. Náhlá změna rychlosti způsobuje mechanické rázy a vibrace. Místo toho se používají měkké profily: lichoběžníkový profil rychlosti (konstantní zrychlení – konstantní rychlost – konstantní zpomalení) nebo S-křivka (plynulejší, kde je také omezeno zrychlení). Když AI generuje trajektorii, musíte zadat cíl, dobu trvání a omezení.

import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0,01): """Lichoběžníkový profil rychlosti pro jeden spoj. Pole poloh je vráceno.""" distance = abs(q1 - q0) speed = np.sign(q1 = q0_max vzdálenost a_5) t_max a_max * t_speed**2 if 2 * distance_speed > distance: # trojúhelníkový profil (v_max není dosažitelný) t_speed = np.sqrt(vzdálenost / a_max) t_constant = 0,0 v_peak = a_max * t_speed else: t_constant = (vzdálenost) / v2 * distance_speed t_accelerate + t_constant t = np.arange(0, T, dt) # ... výpočet polohy pro každé t (na základě fází zrychlení/konstanty/zpomalení) návrat t, T, v_peak, trvání, vz = trapezoidal_trajectory(0.0, 90.0, v_f2"a"=6Total_0. trvání: {duration:.3f} s, špičková rychlost: {vz:.1f} stupňů/s")

Logická kontrola je následující: pokud je vzdálenost krátká, motor nikdy nedosáhne v_max a profil se otočí z lichoběžníkového na trojúhelníkový. Pokud AI tuto podmínku vynechá, pro krátké pohyby se vypočítá nesprávná doba trvání. Můžete to ověřit testováním kódu se známou hodnotou (například na velmi krátkou vzdálenost).

Slabá výzva / Silná výzva

SLABÝ:"Napište trajektorii, která přenese rameno robota z A do B."(Žádné omezení: rychlostní limit? zrychlení? vzdálenost kloubů? Slepý výstup.)SILNÝ:"Vygenerujte trajektorii z bodu do bodu v prostoru kloubu pro 6osého robota. Rychlostní limit pro každý kloub je 90 stupňů^s, rozsah zrychlení/snížení je 180 v tabulce. Použijte lichoběžníkový rychlostní profil, pokud je vzdálenost krátká, spadněte do trojúhelníkového profilu. Výstupem každého spoje je také napište ověřovací funkci, která zkontroluje, že nepřekračuje limity spoje: {{tabulka}}".

Ověření: Od simulace k robotovi

Trajektorie generovaná umělou inteligencí se před přechodem k robotovi ověřuje v tomto pořadí:

  1. Numerický: Jsou úhel kloubu, rychlost a zrychlení každého kroku v mezích?
  2. Kolize: Sráží se paže podél trajektorie se sebou samým nebo s okolím (vizualizujte/simulujte, pokud je to možné)?
  3. Singularita: Prochází oběžná dráha oblastí singularity (blíží se Jacobiánský determinant k nule)?
  4. Test pomalého hardwaru: Provozujte robota při nízké rychlosti (např. 10 %) a sledujte jej vizuálně.
  5. Postupné zvyšování rychlosti: Jakmile je vše ověřeno, rychlost se postupně zvyšuje na nominální hodnotu.
Upozornění: Při prvním spuštění robota s novou trajektorií by mělo být potlačení rychlosti vždy nízké a mělo by být k dispozici nouzové zastavení. I když je výstup AI „matematicky správný“, posun, obrácená osa nebo zádrhel ve fyzickém nastavení budou odhaleny pouze při pomalém testování.

Mini pouzdro

Automatizační inženýr Ece žádá AI o kód trajektorie ve společném prostoru pro aplikaci typu pick-and-place. AI ​​vytváří lichoběžníkový profil, ale když Ece testuje pohyb na krátkou vzdálenost, vidí, že čas je záporný: kód nezvládl případ trojúhelníkového profilu, kde nelze dosáhnout v_max. Ece to napraví tím, že řekne výzvu „pokud je vzdálenost krátká, spadni do trojúhelníkového profilu“. Poté spustí úhly spoje dané AI prostřednictvím její ověřovací funkce proti své vlastní tabulce limitů a zjistí, že kloub 5 chtěl v jednom bodě +125°, zatímco limit byl +120°. Přeplánuje trajektorii a sleduje ji, tentokrát běží robot rychlostí 10 %. V prvním kole vidí, že se chapadlo příliš přibližuje ke stolu a koriguje Z offset. AI vrátila pracovní osnovu během několika minut; ale tři samostatné validace (trojúhelníkový profil, limit kloubu, pomalý test) zachytily tři samostatné skutečné problémy.

Časté chyby

  • Použití řešení IK bez společných limitů a kontroly dostupnosti.
  • Neořezává položky arccos/arcsin, ale vytváří NaN v případě chyby zaokrouhlování.
  • Požadavek na oběžnou dráhu bez omezení rychlosti/zrychlení a vytváření mechanického šoku.
  • Ignorovat zóny singularity a nechat klouby raketově stoupat.
  • Přeskočení přechodu profilu lichoběžník-trojúhelník v krátké vzdálenosti a výpočet špatného času.
  • Provedení prvního orbitálního testu plnou rychlostí a bez přístupu E-stop.

V souhrnu

  • Dopředná kinematika má jediné řešení; inverzní kinematika může produkovat vícenásobná, neexistující nebo nekonečná řešení.
  • Řešení IK jsou nutně filtrována z hlediska společných limitů, dostupnosti a singularity.
  • Plánování trajektorie; Používá měkké, limitně kompatibilní profily, jako jsou lichoběžníkové nebo S-křivky.
  • Na krátkou vzdálenost se profil mění z lichoběžníkového na trojúhelníkový; toto by mělo být ošetřeno v kódu.
  • AI zrychluje matematiku; Do výzvy by měly vstoupit limity a kontext fyzické instalace.
  • Nová dráha je vždy poprvé spuštěna s nízkým rychlostním poměrem a přístupným E-stop.

Aplikační úkol

Vyberte model ramene se dvěma nebo třemi klouby (se skutečnými nebo imaginárními délkami článků a omezeními kloubů). Nechte AI vygenerovat inverzní kinematickou funkci a plánovač trajektorie s tímto kontextem. Poté: (1) ručně ověřte výstup IK se známým cílem (umístíte úhly zpět a vrátíte se do stejného bodu jako FK), (2) otestujte, že je kód zachytil tím, že alespoň jeden nepřístupný bod a jeden společný limit překračují cíl, (3) zkontrolujte, že na krátkou vzdálenost se doba oběhu ukáže jako přiměřená. Zapište si, kolik problémů s ověřením jste našli v první verzi kódu a která vrstva každý z nich zachytila.