Jedinica 2 / 9

Umjetna inteligencija u robotici i kontroli pokreta

Dobici:

  • Sposobnost postavljanja i rješavanja problema napredne/inverzne kinematike i planiranja putanje uz pomoć AI
  • Sposobnost stvaranja sigurne orbite davanjem ograničenja zglobova robota, ograničenja brzine i ubrzanja kao konteksta za prompt
  • Sposobnost numeričke i fizičke verifikacije kinematičkog i trajektorskog izlaza koje proizvodi AI

Dovođenje hvataljke na kraju ruke robota do određene tačke u prostoru, u određenoj orijentaciji; Zvuči jednostavno, ali iza toga stoje kinematičke jednadžbe, granice zglobova, singularnosti i planiranje putanje. Ovdje inženjer mehatronike zajedno koristi trigonometriju, linearnu algebru i teoriju upravljanja. Umjetna inteligencija je moćna pomoć u ovom procesu: može uspostaviti kinematičke jednadžbe naprijed, predložiti pristupe rješenja za inverznu kinematiku, parametrizovati putanju prema ograničenjima brzine/ubrzanja. Međutim, robotika je jedno od područja mehatronike s najvećim fizičkim rizikom; Ako se ugaona sekvenca koju generiše AI pošalje robotu bez verifikacije, ruka može udariti sebe, okolinu ili operatera. U ovoj jedinici ćemo vidjeti kako postaviti i provjeriti kinematiku i planiranje putanje pomoću AI.

Prednja i inverzna kinematika

Prednja kinematika (FK): Pronalaženje položaja i orijentacije krajnjeg efektora ako su poznati uglovi zgloba. Postoji samo jedno rešenje, direktno.

Inverzna kinematika (IK): Ako je poznata željena pozicija krajnje funkcije, pronalaženje zglobnih uglova koji će to osigurati. Obično ima više od jednog rješenja (kao lakat gore/dolje), ponekad nema rješenja (nedohvatljiva tačka), ponekad ima beskonačna rješenja (singularnost).

koncept

unos

izlaz

Broj rješenja

Kinematika naprijed

zglobni uglovi

Ekstremna pozicija/orijentacija

single

Inverzna kinematika

Ekstremna pozicija/orijentacija

zglobni uglovi

Višestruki/ništa/beskonačno

Za planarnu ruku s dva zgloba, inverzna kinematika se može postaviti u AI i provjeriti ručno na sljedeći način:

import numpy kao npdef inverse_kinematik_2r(x, y, L1, L2): """IK za planarnu ruku sa 2 zgloba. Vraća uglove u radijanima (rešenje laktom nadole).""" r2 = x**2 + y**2 # Provera pristupačnosti: da li je tačka u radnom prostoru? ako je np.sqrt(r2) > (L1 + L2) ili np.sqrt(r2) < abs(L1 - L2): povisi ValueError("Tačka je izvan pristupačnog radnog prostora") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cosp.0,2 cosp.0,2 1.0) # numericalsecurity t2 = np.arccos(cos_t2) # lakat prema dolje t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degreesn(t2)) return np.degreesn:tde1), L1=L2=1, cilj (1,1) -> očekivano t2=90 stepeni print(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Ovdje su kritične linije gdje AI često preskače: provjera dostupnosti (to je tačka u radnom prostoru) i `np.clip` (sprečava da unos arccos pređe ±1 zbog greške zaokruživanja). Bez ove dvije zaštite, kod će proizvesti NaN ili će se srušiti na nevažećoj tački.

Savjet: Kada tražite IK rezoluciju, jasno recite AI da "doda kontrolu pristupačnosti i ograniči unos arccos na klip". Ove dvije linije sprječavaju tihe greške koje uzrokuju najviše glavobolja na terenu.

Zglobne granice, singularnost i višestruka rješenja

Svaki zglob pravog robota ima raspon kutova (npr. -170° do +170°), ograničenje brzine i ograničenje ubrzanja. Čak i ako IK daje matematički valjan ugao, ne može se koristiti ako je taj ugao izvan fizičkog opsega zgloba. Osim toga, robot pada u singularnost u nekim konfiguracijama: dvije ose su poravnate, jedan stepen slobode je izgubljen, a brzine zgloba pokušavaju da idu u beskonačnost za mali pokret vrha.

Zato samo HR rješenje nije dovoljno; Svako rješenje mora proći filter prihvatljivosti:

def solution_gecerli_mi(acilar_deg, limits_deg): """bolovi: [t1,t2,...], ograničenja: [(min,max),...]""" za bol, (amin, amax) u zip(acilar_deg, limits_deg): ako nije (amine <= bol <= bol <= amax, premašiti:" J vraćanje F o e amax: deg ({amine},{amax}) osim" return Tačno, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (Tačno, 'OK')print(cozum_0.lid.)_0. (Netačno, 'Zajednički limit je prekoračen...')

AI može dati "matematičko" rješenje IK; ali zajedničke granice i izbjegavanje singularnosti su specifični za vaš sistem i moraju se dati kao kontekst promptu.

Planiranje orbite

Dovođenje robota od tačke A do tačke B nije crtanje prave linije između dva ugla. Nagla promjena brzine stvara mehanički udar i vibracije. Umjesto toga, koriste se meki profili: trapezni profil brzine (konstantno ubrzanje-konstantna brzina-konstantno usporavanje) ili S-kriva (glađa, gdje je ubrzanje također ograničeno). Kada pravite da AI generira putanju, morate dati cilj, trajanje i ograničenja.

import numpy kao npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0,01): """Trapezni profil brzine za jedan spoj. Vraća se niz položaja.""" distance = abs(q1 - q0) smjer = np.sign = np.sign = / qt_xma q distance_speed = 0,5 * a_max * t_speed**2 ako je 2 * distance_speed > distance: # trokutasti profil (v_max nije dostupan) t_speed = np.sqrt(distance / a_max) t_constant = 0,0 v_peak = a_max * t_constant - distance = (dit_constant - distance): v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... izračunavanje položaja za svaki t (zasnovano na fazama ubrzanja/konstante/usporenja) povratak t, T, v_peak, trajanje, vz = trapezoidni (0.0.0, v.6. putanja) a_max=120.0)print(f"Ukupno trajanje: {duration:.3f} s, vršna brzina: {vz:.1f} deg/s")

Logička provjera je sljedeća: ako je udaljenost kratka, motor nikada neće dostići v_max i profil će se iz trapezastog pretvoriti u trokutasti. Ako AI propusti ovaj uvjet, za kratke pokrete će se izračunati pogrešno trajanje. To možete provjeriti testiranjem koda s poznatom vrijednošću (na primjer, vrlo kratka udaljenost).

Slaba prompt / jaka prompt

SLABO:"Napišite putanju koja vodi ruku robota od A do B."(Bez ograničenja: ograničenje brzine? ubrzanje? razmak između zglobova? Slijepi izlaz.)JAKO:"Generirajte putanju od tačke do tačke u zglobnom prostoru za robota sa 6 osa. Ograničenje brzine za svaki zglob je 90 stepeni/s, ograničenje ubrzanja/s, dato ograničenje ubrzanja je 180 deg u tabeli. trapezoidni profil brzine, ako je udaljenost kratka, izlaz za svaki spoj je također napišite funkciju provjere koja provjerava da ne premašuje granice zgloba: {{tabela}}.

Provjera: od simulacije do robota

Putanja koju generira AI se provjerava ovim redoslijedom prije odlaska do robota:

  1. Numerički: Jesu li zglobni ugao, brzina i ubrzanje svakog koraka unutar granica?
  2. Sudar: Duž putanje, da li se ruka sudara sa sobom ili okolinom (vizualizirajte/simulirajte ako je moguće)?
  3. Singularnost: Da li orbita prolazi kroz područje singularnosti (da li se Jakobijanska determinanta približava nuli)?
  4. Spor hardverski test: Upravljajte robotom malom brzinom (npr. 10%) i nadgledajte ga vizualno.
  5. Postepeno povećanje brzine: Kada se sve provjeri, brzina se povećava korak po korak do nominalne vrijednosti.
Oprez: Prilikom prvog pokretanja robota s novom putanjom, prekoračenje brzine uvijek treba biti nisko i E-stop bi trebao biti dostupan. Čak i ako je AI izlaz "matematički ispravan", pomak, obrnuta osovina ili začepljenje kabela u fizičkoj postavci će se otkriti samo sporim testiranjem.

Mini Case

Inženjer automatizacije Ece traži od AI šifru putanje u zajedničkom prostoru za aplikaciju biraj i postavljaj. AI proizvodi trapezoidni profil, ali kada Ece testira kretanje na kratkim udaljenostima, vidi da je vrijeme negativno: kod nije obradio slučaj trokutastog profila u kojem se ne može postići v_max. Ece to ispravlja govoreći promptu "ako je udaljenost kratka, upadni u trouglasti profil". Zatim izvodi uglove zgloba koje je dala AI kroz svoju funkciju validacije u odnosu na vlastitu tablicu ograničenja i otkriva da je spoj 5 htio +125° u jednoj tački, dok je granica bila +120°. On ponovo planira putanju i prati je, ovaj put pokreće robota brzinom od 10%. U prvoj rundi vidi da se hvataljka preblizu stolu i ispravlja Z offset. AI je vratio radni nacrt za nekoliko minuta; ali tri odvojene validacije (trokutasti profil, ograničenje zgloba, spori test) uhvatile su tri odvojena stvarna problema.

Uobičajene greške

  • Korištenje IK rješenja bez zajedničkih ograničenja i kontrole pristupačnosti.
  • Ne seče arccos/arcsin unose, ali proizvodi NaN u slučaju greške zaokruživanja.
  • Zahtjev za orbitu bez ograničavanja brzine/ubrzanja i stvaranja mehaničkog udara.
  • Ignoriranje zona singularnosti i dopuštanje da brzine zglobova rastu u nebo.
  • Preskakanje prijelaza trapezoidno-trokutastog profila na maloj udaljenosti i izračunavanje pogrešnog vremena.
  • Provođenje prvog orbitalnog testa pri punoj brzini i bez pristupa E-stop.

Ukratko

  • Kinematika naprijed ima jedno rješenje; inverzna kinematika može proizvesti višestruka, nepostojeća ili beskonačna rješenja.
  • IK rješenja su nužno filtrirana u smislu zajedničkih granica, pristupačnosti i singularnosti.
  • Planiranje putanje; Koristi meke profile kompatibilne s ograničenjima kao što su trapezoidni ili S-krivi.
  • Na maloj udaljenosti profil se mijenja od trapezastog do trokutastog; ovo bi trebalo biti riješeno u kodu.
  • AI ubrzava matematiku; Ograničenja i fizički kontekst instalacije trebali bi ući u prompt.
  • Nova putanja se uvijek pokreće prvi put s malim omjerom brzine i pristupačnim E-stop.

Zadatak aplikacije

Odaberite model ruke sa dva ili tri zgloba (sa stvarnim ili imaginarnim dužinama veza i ograničenjima zglobova). Neka AI generira inverznu kinematičku funkciju i planer putanje s ovim kontekstom. Zatim: (1) ručno verifikujte IK izlaz sa poznatom metom (da li vraćate uglove nazad i vraćate se u istu tačku kao i FK), (2) testirajte da li ih kod hvata dajući barem jednu nedostupnu tačku i jedno zajedničko ograničenje prekoračenja cilja, (3) proverite da li se na kratkoj udaljenosti orbitalno vreme ispostavi da je razumno. Zapišite koliko ste problema s validacijom pronašli u prvoj verziji koda i koji sloj je uhvatio svaki od njih.