Vienība 2 / 9

Mākslīgais intelekts robotikā un kustību kontrolē

Ieguvumi:

  • Spēja uzstādīt un atrisināt tiešās/apgrieztās kinemātikas un trajektorijas plānošanas problēmas ar AI palīdzību
  • Spēja radīt drošu orbītu, kā kontekstu uzvednei piešķirot robota savienojuma ierobežojumus, ātruma un paātrinājuma ierobežojumus
  • Spēja skaitliski un fiziski pārbaudīt AI radīto kinemātisko un trajektorijas izvadi

Satvērēja nogādāšana robota rokas galā noteiktā telpas punktā, noteiktā orientācijā; Tas izklausās vienkārši, bet aiz tā slēpjas kinemātiskie vienādojumi, locītavu robežas, singularitātes un trajektorijas plānošana. Šeit mehatronikas inženieris kopā izmanto trigonometriju, lineāro algebru un vadības teoriju. Mākslīgais intelekts ir spēcīgs palīgs šajā procesā: tas var izveidot tiešās kinemātikas vienādojumus, ieteikt risinājumu pieejas apgrieztajai kinemātikai, parametrizēt trajektoriju atbilstoši ātruma/paātrinājuma ierobežojumiem. Tomēr robotika ir viena no jomām mehatronikā ar visaugstāko fizisko risku; Ja AI ģenerēta leņķa secība tiek nosūtīta robotam bez pārbaudes, roka var trāpīt sev, videi vai operatoram. Šajā nodaļā mēs redzēsim, kā iestatīt un pārbaudīt kinemātiku un trajektorijas plānošanu, izmantojot AI.

Forward un apgrieztā kinemātika

Uz priekšu vērsta kinemātika (FK): gala efektora pozīcijas un orientācijas atrašana, ja ir zināmi savienojuma leņķi. Ir tikai viens risinājums, tas ir tiešs.

Apgrieztā kinemātika (IK): ja ir zināma vēlamā beigu funkcijas pozīcija, atrodiet savienojuma leņķus, kas to nodrošinās. Tam parasti ir vairāk nekā viens risinājums (piemēram, elkonis uz augšu/uz leju), dažreiz tam nav risinājumu (nesasniedzams punkts), dažreiz tam ir bezgalīgi risinājumi (singularitāte).

koncepcija

ievade

izvade

Risinājumu skaits

Uz priekšu kinemātika

locītavu leņķi

Ekstrēma pozīcija/orientācija

vientuļš

Apgrieztā kinemātika

Ekstrēma pozīcija/orientācija

locītavu leņķi

Vairāki/neviens/bezgalīgs

Divu locītavu plakanai rokai AI var iestatīt apgriezto kinemātiku un manuāli pārbaudīt šādi:

importēt numpy kā npdef inverse_kinematik_2r(x, y, L1, L2): """IK 2 locītavu plakanai rokai. Atgriež leņķus radiānos (risinājums ar elkoni uz leju).""" r2 = x**2 + y**2 # Pieejamības pārbaude: vai punkts atrodas darbvietā? ja np.sqrt(r2) > (L1 + L2) vai np.sqrt(r2) < abs(L1 - L2): paaugstiniet ValueError("Punkts atrodas ārpus pieejamās darba vietas") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t.2, -1 cos_t.2, 1.0) # skaitliskā drošība t2 = np.arccos(cos_t2) # elkonis uz leju t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) atgriešanās np.degreest2(tp.degreest)(tp.degreest) L1=L2=1, mērķis (1,1) -> paredzamais t2=90 grādu nospiedums(apgrieztā_kinematika_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Šeit AI bieži izlaiž kritiskās līnijas: sasniedzamības pārbaude (tas ir darbvietas punkts) un np.clip (noapaļošanas kļūdas dēļ neļauj arccos ievadei pārsniegt ±1). Bez šiem diviem aizsardzības līdzekļiem kods radīs NaN vai avarēs nederīgā vietā.

Padoms. Pieprasot IK izšķirtspēju, skaidri pasakiet AI “pievienot pieejamības kontroli un ierobežot arccos ievadi klipā”. Šīs divas līnijas novērš klusās kļūdas, kas šajā jomā rada visvairāk galvassāpes.

Kopīgi ierobežojumi, singularitāte un vairāki risinājumi

Katram īsta robota savienojumam ir leņķa diapazons (piemēram, no -170° līdz +170°), ātruma ierobežojums un paātrinājuma ierobežojums. Pat ja IK sniedz matemātiski derīgu leņķi, to nevar izmantot, ja šis leņķis atrodas ārpus savienojuma fiziskā diapazona. Turklāt dažās konfigurācijās robotam ir singularitāte: tiek izlīdzinātas divas asis, tiek zaudēta viena brīvības pakāpe, un locītavu ātrumi mēģina sasniegt bezgalību nelielai gala kustībai.

Tāpēc ar HR risinājumu vien nepietiek; Katram risinājumam ir jāiztur pieņemamības filtrs:

def Solution_gecerli_mi(acilar_deg, limits_deg): """sāpes: [t1,t2,...], ierobežojumi: [(min,max),...]""" sāpēm, (amin, amax) in zip (acilar_deg, limits_deg): ja nav (amīns <= sāpes <= amax): Jopa deg.1 limits, f:ed"): ({amīns}, {amax}), izņemot" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print(cozum_valid_0,].1 limits0) [s0. (Nepatiesi, "Pārsniegts kopīgais limits...")

AI var dot IK "matemātisko" risinājumu; bet savienojuma ierobežojumi un izvairīšanās no singularitātes ir specifiski jūsu sistēmai, un tie ir jānorāda kā uzvednes konteksts.

Orbītas plānošana

Robota nokļūšana no punkta A uz punktu B nenozīmē taisnas līnijas novilkšanu starp diviem leņķiem. Pēkšņa ātruma maiņa rada mehānisku triecienu un vibrāciju. Tā vietā tiek izmantoti mīkstie profili: trapecveida ātruma profils (nemainīgs paātrinājums – nemainīgs ātrums – nemainīgs palēninājums) vai S-līkne (vienmērīgāka, kur arī paātrinājums ir ierobežots). Liekot AI ģenerēt trajektoriju, jums jānorāda mērķis, ilgums un ierobežojumi.

importēt numpy kā npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Trapecveida ātruma profils vienam savienojumam. Tiek atgriezts pozīcijas masīvs.""" distance = abs(q1 - q0) a virziens = np.sign)(q1_xmax) / distance_speed = 0,5 * a_max * t_speed**2, ja 2 * distance_speed > distance: # trīsstūrveida profils (v_max nav sasniedzams) t_speed = np.sqrt(attālums / a_max) t_konstante = 0,0 v_peak = a_maksimums * t_attālums_konstants 2 distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... pozīcijas aprēķins katrai t (pamatojoties uz paātrinājuma/konstantes/palēninājuma fāzēm) atgriešanās t, T, v_peak, trajectory ilguma, v.0.0. v_max=60.0, a_max=120.0)print(f"Kopējais ilgums: {ilgums:.3f} s, maksimālais ātrums: {vz:.1f} grādi/s")

Loģiskā pārbaude šeit ir šāda: ja attālums ir mazs, motors nekad nesasniegs v_max un profils pārvērtīsies no trapecveida uz trīsstūrveida. Ja AI neievēro šo nosacījumu, īsām kustībām tiks aprēķināts nepareizs ilgums. To var pārbaudīt, pārbaudot kodu ar zināmu vērtību (piemēram, ļoti mazā attālumā).

Vāja uzvedne / spēcīga uzvedne

VĀJS:"Uzrakstiet trajektoriju, kas ved robota roku no A līdz B."(Nav ierobežojumu: ātruma ierobežojums? paātrinājums? locītavu atstatums? Aklā izvade.)STRONG:"Ģenerējiet no punkta līdz punktam trajektoriju savienojuma telpā 6 asu robotam. Katras locītavas ātruma ierobežojums ir 90 grādi/s, paātrinājuma leņķa ierobežojums ir 18, tabulā dotais leņķa diapazons ir ^ a. trapecveida ātruma profils, ja attālums ir īss, iekrīt trīsstūrveida profilā. Katra savienojuma izvade ir arī uzrakstīt verifikācijas funkciju, kas pārbauda, vai tas nepārsniedz savienojuma robežas: {{tabula}}.

Verifikācija: no simulācijas līdz robotam

AI ģenerētā trajektorija tiek pārbaudīta šādā secībā pirms došanās uz robotu:

  1. Skaitliski: vai katra soļa savienojuma leņķis, ātrums un paātrinājums ir robežās?
  2. Sadursme: vai pa trajektoriju roka saduras ar sevi vai vidi (ja iespējams, vizualizē/simulē)?
  3. Singularitāte: vai orbīta šķērso singularitātes reģionu (vai Jakoba determinants tuvojas nullei)?
  4. Lēna aparatūras pārbaude: darbiniet robotu ar mazu ātrumu (piemēram, 10%) un uzraugiet to vizuāli.
  5. Pakāpeniska ātruma palielināšana: kad viss ir pārbaudīts, ātrums pakāpeniski palielinās līdz nominālvērtībai.
Uzmanību: pirmo reizi iedarbinot robotu ar jaunu trajektoriju, ātruma ignorēšanai vienmēr jābūt zemam un jābūt pieejamai E-stop. Pat ja AI izvade ir “matemātiski pareiza”, nobīde, apgrieztā ass vai kabeļa aizķeršanās fiziskajā iestatījumā tiks atklāta tikai ar lēnu testēšanu.

Mini futrālis

Automatizācijas inženieris Ece pieprasa AI trajektorijas kodu apvienotajā telpā, lai izmantotu izvēles un novietošanas programmu. AI rada trapecveida profilu, bet, kad Ece pārbauda kustību nelielā attālumā, viņa redz, ka laiks ir negatīvs: kods neapstrādāja trīsstūrveida profila gadījumu, kad v_max nevar sasniegt. Ece to labo, pasakot uzvedni "ja attālums ir īss, iekrītiet trīsstūrveida profilā". Pēc tam tā laiž savienojuma leņķus, ko norādījis AI, izmantojot savu validācijas funkciju, salīdzinot ar savu ierobežojumu tabulu, un konstatē, ka savienojums 5 vienā brīdī gribēja +125°, bet robeža bija +120°. Viņš pārplāno trajektoriju un uzrauga to, šoreiz darbinot robotu ar 10% ātrumu. Pirmajā kārtā viņš redz, ka satvērējs pietuvojas galdam pārāk tuvu un izlabo Z nobīdi. AI minūtēs atgrieza darba kontūru; bet trīs atsevišķas validācijas (trīsstūra profils, locītavas ierobežojums, lēns tests) atklāja trīs atsevišķas reālas problēmas.

Biežākās kļūdas

  • Izmantojot IK risinājumu bez locītavu ierobežojumiem un pieejamības kontroles.
  • Neizgriež arccos/arcsin ierakstus, bet rada NaN noapaļošanas kļūdas gadījumā.
  • Orbītas pieprasīšana, neierobežojot ātrumu/paātrinājumu un radot mehānisku triecienu.
  • Ignorējot singularitātes zonas un ļaujot locītavu ātrumam strauji pieaugt.
  • Trapecveida-trijstūra profila pārejas izlaišana nelielā attālumā un nepareiza laika aprēķināšana.
  • Pirmā orbitālās pārbaudes veikšana ar pilnu ātrumu un bez piekļuves E-stop.

Rezumējot

  • Forward kinemātikai ir viens risinājums; apgrieztā kinemātika var radīt vairākus, neesošus vai bezgalīgus risinājumus.
  • IK risinājumi noteikti tiek filtrēti, ņemot vērā savienojuma ierobežojumus, pieejamību un singularitāti.
  • Trajektorijas plānošana; Tas izmanto mīkstus, ar ierobežojumiem saderīgus profilus, piemēram, trapecveida vai S-līknes.
  • Nelielā attālumā profils mainās no trapecveida uz trīsstūrveida; tas ir jārisina kodā.
  • AI paātrina matemātiku; Uzvednē jāievada ierobežojumi un fiziskās instalēšanas konteksts.
  • Jaunā trajektorija vienmēr pirmo reizi tiek nobraukta ar zemu ātruma attiecību un pieejamu E-stop.

Lietojumprogrammas uzdevums

Izvēlieties divu vai trīs locītavu rokas modeli (ar reālu vai iedomātu saites garumu un locītavu ierobežojumiem). Lieciet AI ģenerēt apgriezto kinemātikas funkciju un trajektorijas plānotāju šajā kontekstā. Pēc tam: (1) manuāli pārbaudiet IK izvadi ar zināmu mērķi (vai novietojat leņķus atpakaļ un atgriežaties tajā pašā punktā, kur FK), (2) pārbaudiet, vai kods tos uztver, norādot vismaz vienu nepieejamu punktu un vienu savienojuma robežu, kas pārsniedz mērķi, (3) pārbaudiet, vai nelielā attālumā orbītas laiks izrādās saprātīgs. Pierakstiet, cik validācijas problēmu atradāt koda pirmajā versijā un kurā slānī katra tika konstatēta.