Fitimet:
- Aftësia për të vendosur dhe zgjidhur problemet e kinematikës së përparme/inverse dhe planifikimit të trajektores me ndihmën e AI
- Aftësia për të prodhuar orbitë të sigurt duke i dhënë kufizime të përbashkëta të robotit, kufizime të shpejtësisë dhe nxitimit si kontekst të kërkesës
- Aftësia për të verifikuar numerikisht dhe fizikisht daljen kinematike dhe trajektore të prodhuar nga AI
Sjellja e kapëses në fund të krahut të një roboti në një pikë të caktuar në hapësirë, në një orientim të caktuar; Duket e thjeshtë, por ka ekuacione kinematike, kufij të përbashkët, singularitete dhe planifikim të trajektores pas saj. Këtu, inxhinieri i mekatronikës përdor trigonometrinë, algjebrën lineare dhe teorinë e kontrollit së bashku. Inteligjenca artificiale është një ndihmë e fuqishme në këtë proces: ajo mund të vendosë ekuacione kinematike përpara, të sugjerojë zgjidhje për kinematikën e kundërt, të parametrizojë një trajektore sipas kufizimeve të shpejtësisë/shpejtimit. Megjithatë, robotika është një nga fushat në mekatronikë me rrezikun më të lartë fizik; Nëse një sekuencë këndore e krijuar nga AI i dërgohet robotit pa verifikim, krahu mund të godasë veten, mjedisin ose operatorin. Në këtë njësi do të shohim se si të vendosim dhe verifikojmë kinematikën dhe planifikimin e trajektores me AI.
Kinematika e përparme dhe e anasjelltë
Kinematika e përparme (FK): Gjetja e pozicionit dhe orientimit të efektit fundor nëse dihen këndet e bashkimit. Ka vetëm një zgjidhje, ajo është e drejtpërdrejtë.
Kinematika e anasjelltë (IK): Nëse dihet pozicioni i dëshiruar i funksionit fundor, gjetja e këndeve të bashkimit që do ta ofrojnë këtë. Zakonisht ka më shumë se një zgjidhje (si bërryl lart/poshtë), ndonjëherë nuk ka zgjidhje (pika e paarritshme), ndonjëherë ka zgjidhje të pafundme (singularitet).
koncept
hyrje
prodhimit
Numri i zgjidhjeve
Kinematika e përparme
kënde të përbashkëta
Pozicioni/orientimi ekstrem
beqare
Kinematika e anasjelltë
Pozicioni/orientimi ekstrem
kënde të përbashkëta
Shumëfish/asnjë/i pafund
Për një krah planar me dy nyje, kinematika e anasjelltë mund të vendoset në AI dhe të verifikohet manualisht si më poshtë:
import numpy si npdef inverse_kinematik_2r(x, y, L1, L2): """IK për krahun planar me 2 nyje. Kthen këndet në radianë (zgjidhje me bërryl-poshtë).""" r2 = x**2 + y**2 # Kontrolli i aksesit: është pika në hapësirën e punës? nëse np.sqrt(r2) > (L1 + L2) ose np.sqrt(r2) < abs(L1 - L2): ngre ValueError("Pika është jashtë hapësirës së aksesueshme të punës") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2, -npt.) cos_t. 1.0) # siguri numerike t2 = np.arccos(cos_t2) # bërryl poshtë t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) kthimi np.grade:2) L1=L2=1, objektivi (1,1) -> i pritshëm t2=90 gradë printim(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
Linjat kritike këtu janë ato ku AI shpesh kalon: kontrolli i arritshmërisë (është pika në hapësirën e punës) dhe `np.clip` (parandalon hyrjen e arccos që të kalojë përtej ±1 për shkak të gabimit të rrumbullakosjes). Pa këto dy mbrojtje, kodi do të prodhojë NaN ose do të rrëzohet në një pikë të pavlefshme.
Këshillë: Kur kërkoni për rezolucionin IK, thuajini qartë AI që "të shtojë kontrollin e aksesit dhe të kufizojë hyrjen e arccos në klip". Këto dy rreshta parandalojnë gabimet e heshtura që shkaktojnë më shumë dhimbje koke në terren.
Kufijtë e përbashkët, singulariteti dhe zgjidhjet e shumëfishta
Çdo nyje e një roboti të vërtetë ka një gamë këndi (p.sh. -170° deri +170°), një kufi shpejtësie dhe një kufi përshpejtimi. Edhe nëse IK jep një kënd matematikisht të vlefshëm, ai nuk mund të përdoret nëse ai kënd është jashtë diapazonit fizik të nyjës. Për më tepër, roboti bie në singularitet në disa konfigurime: dy akse janë të rreshtuara, humbet një shkallë lirie dhe shpejtësitë e nyjeve përpiqen të shkojnë në pafundësi për një lëvizje të vogël të majës.
Kjo është arsyeja pse vetëm zgjidhja e burimeve njerëzore nuk mjafton; Çdo zgjidhje duhet të kalojë një filtër pranueshmërie:
def solution_gecerli_mi(acilar_deg, limits_deg): """dhimbjet: [t1,t2,...], kufijtë: [(min,max),...]""" për dhimbje, (amin, amax) në zip(acilar_deg, limits_deg): nëse jo (amine <= dhimbje <= amax: kthimi i gabuar: 1. ({amine},{amax}) përveç" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print (cozum_valid_mi). (E gabuar, 'Kufiri i përbashkët u tejkalua...')
AI mund të japë zgjidhjen "matematikore" të IK; por kufijtë e përbashkët dhe shmangia e singularitetit janë specifike për sistemin tuaj dhe duhet të jepen si kontekst në prompt.
Planifikimi i Orbitës
Marrja e robotit nga pika A në pikën B nuk ka të bëjë me tërheqjen e një vije të drejtë midis dy këndeve. Ndryshimi i papritur i shpejtësisë krijon goditje mekanike dhe dridhje. Në vend të kësaj, përdoren profile të buta: profili i shpejtësisë trapezoidale (nxitim konstant-shpejtësi konstante-ngadalësim konstant) ose kurba S (më e butë, ku nxitimi është gjithashtu i kufizuar). Kur bëni që AI të gjenerojë një trajektore, duhet të jepni objektivin, kohëzgjatjen dhe kufizimet.
importoni numpy si npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Profili i shpejtësisë trapezoidale për një nyje të vetme. Vargu i pozicionit është kthyer.""" distance = abs(q1 - q0) drejtim = np.sign(qspe - qspeed = vxma) 0,5 * a_max * t_shpejtësia**2 nëse 2 * shpejtësia_distanca > distanca: # profil trekëndor (v_max nuk është i arritshëm) t_speed = np.sqrt(distanca / a_max) t_konstant = 0,0 v_maja = a_max * t_shpejtësia -2 -distanca tjetër (t_speed) v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... llogaritja e pozicionit për çdo t (bazuar në fazat e nxitimit/konstante/ngadalësimit) kthen t, T, v_peak, kohëzgjatje, vzdal_0,0,00 trapezoi. v_max=60.0, a_max=120.0)print(f"Kohëzgjatja totale: {kohëzgjatja:.3f} s, shpejtësia maksimale: {vz:.1f} gradë/s")
Kontrolli logjik këtu është ky: nëse distanca është e shkurtër, motori nuk do të arrijë kurrë v_max dhe profili do të kthehet nga trapezoid në trekëndësh. Nëse AI e humb këtë kusht, do të llogaritet kohëzgjatja e gabuar për lëvizjet e shkurtra. Ju mund ta verifikoni këtë duke testuar kodin me një vlerë të njohur (për shembull, një distancë shumë e shkurtër).
Prompt i dobët / Prompt i fortë
I DOBËT:"Shkruani një trajektore që e çon krahun e robotit nga A në B." (Pa kufizim: kufizim shpejtësie? nxitim? Hapësira nyjesh? Dalje e verbër.) FORTË:"Gjeneroni një trajektore pikë-për-pikë në hapësirën e përbashkët për një robot me 6 boshte. Kufiri i shpejtësisë për çdo nyje është 90 deg/s, kufiri i nxitimit në tabelë është 20 në kënd/1. Profili i shpejtësisë trapezoidale, nëse distanca është e shkurtër, bie në një profil trekëndor. Dalja e çdo nyje është gjithashtu shkruaj një funksion verifikimi që kontrollon që ai të mos i kalon kufijtë e nyjeve: {{tabela}}.
Verifikimi: Nga simulimi në robot
Trajektorja e gjeneruar nga AI verifikohet në këtë mënyrë përpara se të shkoni te roboti:
- Numerike: A janë këndi i përbashkët, shpejtësia dhe nxitimi i çdo hapi brenda kufijve?
- Përplasja: Përgjatë trajektores, a përplaset krahu me veten apo me mjedisin (vizualizoni/simuloni nëse është e mundur)?
- Singulariteti: A kalon orbita përmes një rajoni singulariteti (a afrohet përcaktorja jakobiane zeros)?
- Testi i ngadaltë i harduerit: Përdorni robotin me një shpejtësi të ulët (p.sh. 10%) dhe monitoroni atë vizualisht.
- Rritja graduale e shpejtësisë: Pasi të verifikohet gjithçka, shpejtësia rritet hap pas hapi deri në vlerën nominale.
Kujdes: Kur filloni një robot me një trajektore të re për herë të parë, tejkalimi i shpejtësisë duhet të jetë gjithmonë i ulët dhe E-stop duhet të jetë i disponueshëm. Edhe nëse dalja e AI është "matematikisht e saktë", një zhvendosje, bosht i kundërt ose pengesë kabllore në konfigurimin fizik do të zbulohet vetëm me testim të ngadaltë.
Mini Case
Inxhinieri i automatizimit Ece i kërkon AI një kod trajektorie në hapësirën e përbashkët për një aplikim të zgjedhjes dhe të vendosjes. AI prodhon një profil trapezoidal, por kur Ece teston një lëvizje në distancë të shkurtër, ajo sheh se koha është negative: kodi nuk trajtoi rastin e profilit trekëndor ku v_max nuk mund të arrihet. Ece e korrigjon këtë duke i thënë promptit "nëse distanca është e shkurtër, bini në profilin trekëndor". Më pas ai drejton këndet e bashkimit të dhëna nga AI përmes funksionit të tij të vlefshmërisë kundrejt tabelës së vet kufitare dhe zbulon se nyja 5 donte +125° në një pikë, ndërsa kufiri ishte +120°. Ai riplanifikon trajektoren dhe e monitoron atë, këtë herë duke drejtuar robotin me shpejtësi 10%. Në raundin e parë, ai sheh që kapësi po i afrohet shumë tryezës dhe korrigjon kompensimin Z. AI ktheu një skicë pune në minuta; por tre vërtetime të veçanta (profili trekëndor, kufiri i përbashkët, testi i ngadaltë) kapën tre probleme reale të veçanta.
Gabimet e zakonshme
- Përdorimi i zgjidhjes IK pa kufij të përbashkët dhe kontroll të aksesueshmërisë.
- Jo prerja e hyrjeve arccos/arcsin, por prodhimi i NaN në rast gabimi rrumbullakimi.
- Kërkimi i orbitës pa kufizuar shpejtësinë/përshpejtimin dhe krijimin e goditjeve mekanike.
- Injorimi i zonave të singularitetit dhe lënia e shpejtësive të nyjeve të ngrihen në qiell.
- Kapërcimi i tranzicionit të profilit trapezoid-trekëndor në një distancë të shkurtër dhe llogaritja e kohës së gabuar.
- Kryerja e testit të parë orbital me shpejtësi të plotë dhe pa akses E-stop.
Në përmbledhje
- Kinematika e përparme ka një zgjidhje të vetme; kinematika e anasjelltë mund të prodhojë zgjidhje të shumëfishta, inekzistente ose të pafundme.
- Zgjidhjet IK janë domosdoshmërisht të filtruara për sa i përket kufijve të përbashkët, aksesueshmërisë dhe singularitetit.
- Planifikimi i trajektores; Ai përdor profile të buta, të përputhshme me kufijtë, si kurba trapezoidale ose S.
- Në distancë të shkurtër profili ndryshon nga trapezoid në trekëndësh; kjo duhet të trajtohet në kod.
- AI përshpejton matematikën; Kufijtë dhe konteksti fizik i instalimit duhet të hyjnë në prompt.
- Trajektorja e re drejtohet gjithmonë për herë të parë me një raport të ulët shpejtësie dhe E-stop të aksesueshëm.
Detyra e aplikimit
Zgjidhni një model krahu me dy ose tre nyje (me gjatësi lidhjesh reale ose imagjinare dhe kufij të nyjeve). Vëreni që AI të gjenerojë një funksion të kinematikës së kundërt dhe një planifikues trajektoresh me këtë kontekst. Më pas: (1) verifikoni manualisht daljen IK me një objektiv të njohur (a i vendosni këndet prapa dhe i ktheni në të njëjtën pikë si FK), (2) testoni që kodi i kap ato duke dhënë të paktën një pikë të paarritshme dhe një kufi të përbashkët që tejkalon objektivin, (3) kontrolloni që në një distancë të shkurtër koha orbitale të dalë e arsyeshme. Shkruani sa çështje të vlefshmërisë keni gjetur në versionin e parë të kodit dhe cila shtresë e kapi secilën prej tyre.