Üksus 2 / 9

Tehisintellekt robootikas ja liikumisjuhtimises

Kasu:

  • Võimalus seadistada ja lahendada AI abil edasi-/pöördkinemaatikat ja trajektoori planeerimise probleeme
  • Võimalus luua ohutut orbiiti, andes viipa kontekstiks roboti liigeste piirangud, kiiruse ja kiirenduse piirangud
  • Võimalus arvuliselt ja füüsiliselt kontrollida tehisintellekti loodud kinemaatilist ja trajektoorilist väljundit

Roboti käe otsas oleva haaratsi viimine kindlasse ruumipunkti, kindlasse suunda; See kõlab lihtsalt, kuid selle taga on kinemaatilised võrrandid, liigeste piirid, singulaarsused ja trajektoori planeerimine. Siin kasutab mehhatroonikainsener trigonomeetriat, lineaaralgebrat ja juhtimisteooriat koos. Tehisintellekt on selles protsessis võimas abivahend: see suudab luua edasisuunalisi kinemaatilisi võrrandeid, soovitada pöördkinemaatika lahendusviise, määrata trajektoori vastavalt kiiruse/kiirenduse piirangutele. Robootika on aga mehhatroonikas üks suurima füüsilise riskiga valdkondi; Kui tehisintellekti genereeritud nurgajada saadetakse robotile kontrollimata, võib käsi tabada ennast, keskkonda või operaatorit. Selles üksuses näeme, kuidas seadistada ja kontrollida tehisintellektiga kinemaatikat ja trajektoori planeerimist.

Edasi- ja pöördkinemaatika

Edasi-kinemaatika (FK): lõpp-efektori asukoha ja orientatsiooni leidmine, kui liigendi nurgad on teada. On ainult üks lahendus, see on otsene.

Pöördkinemaatika (IK): kui lõppfunktsiooni soovitud asukoht on teada, leidke selle tagavad liitenurgad. Tavaliselt on sellel rohkem kui üks lahendus (nagu küünarnukk üles/alla), mõnikord pole sellel lahendusi (saamatu punkt), mõnikord on sellel lõpmatu arv lahendusi (singulaarsus).

kontseptsioon

sisend

väljund

Lahenduste arv

Edasine kinemaatika

liigeste nurgad

Äärmuslik asend/orientatsioon

vallaline

Pöördkinemaatika

Äärmuslik asend/orientatsioon

liigeste nurgad

Mitu/mitte ükski/lõpmatu

Kahe liigesega tasapinnalise käe puhul saab AI-s seadistada pöördkinemaatika ja kontrollida seda käsitsi järgmiselt.

import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """IK 2-liigendilise tasapinnalise haru jaoks. Tagastab nurgad radiaanides (küünarnukk-alla lahendus).""" r2 = x**2 + y**2 # Juurdepääsetavuse kontroll: kas punkt on tööruumis? if np.sqrt(r2) > (L1 + L2) või np.sqrt(r2) < abs(L1 - L2): raise ValueError("Punkt asub väljaspool ligipääsetavat tööruumi") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t.2, =(1) cos_t.2, =( 1.0) # arvturvalisus t2 = np.arccos(cos_t2) # küünarnukk alla t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degreest2(tp.degreest)(tp.degreest) L1 = L2 = 1, sihtmärk (1, 1) -> eeldatav t2 = 90 kraadi trükk (inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Siin on kriitilised jooned, kus tehisintellekt sageli vahele jätab: ligipääsetavuse kontroll (on tööruumi punkt) ja np.clip (takistab arccose sisendil ümardamisvea tõttu minna üle ±1). Ilma nende kahe kaitseta tekitab kood NaN-i või jookseb vales kohas kokku.

Näpunäide: IK-i eraldusvõimet küsides öelge tehisintellektile selgelt, et "lisage juurdepääsetavuse kontroll ja piirake arccose sisendit klipi jaoks". Need kaks rida hoiavad ära vaikivad vead, mis põllul kõige rohkem peavalu põhjustavad.

Ühised piirangud, singulaarsus ja mitu lahendust

Tõelise roboti igal liigendil on nurgavahemik (nt -170° kuni +170°), kiiruspiirang ja kiirenduse piirang. Isegi kui IK annab matemaatiliselt kehtiva nurga, ei saa seda kasutada, kui see nurk on väljaspool liigendi füüsilist ulatust. Lisaks langeb robot mõnes konfiguratsioonis singulaarsusse: kaks telge on joondatud, üks vabadusaste kaob ja liigeste kiirused püüavad väikese otsa liigutamiseks jõuda lõpmatuseni.

Seetõttu ei piisa ainult personalilahendusest; Iga lahendus peab läbima vastuvõetavuse filtri:

def Solution_gecerli_mi(acilar_deg, limits_deg): """valud: [t1,t2,...], piirid: [(min,max),...]""" valu jaoks, (amin, amax) zip-vormingus (acilar_deg, limits_deg): kui ei (amiin <= valu <= amax): Jopaint} piirmäär, f: ületab ({amine},{amax}) välja arvatud" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print(cozum_valid_0,1) #5.0) [s0. (Vale, "Ühispiir ületatud...")

AI võib anda IK "matemaatilise" lahenduse; kuid ühispiirangud ja singulaarsuse vältimine on teie süsteemile omased ja need tuleb anda viipa kontekstiks.

Orbiidi planeerimine

Roboti viimine punktist A punkti B ei tähenda sirge tõmbamist kahe nurga vahele. Järsk kiiruse muutus tekitab mehaanilist lööki ja vibratsiooni. Selle asemel kasutatakse pehmeid profiile: trapetsikujuline kiirusprofiil (konstantne kiirendus – püsikiirus – pidev aeglustus) või S-kõver (sujuvam, kus ka kiirendus on piiratud). Kui tehisintellekt loob trajektoori, peate määrama eesmärgi, kestuse ja piirangud.

import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Ühe liigendi trapetsikujuline kiirusprofiil. Tagatakse positsioonimassiivi.""" kaugus = abs(q1 - q0) a suund = np.sign)_v_xmax / kauguse_kiirus = 0,5 * a_max * t_speed**2, kui 2 * kaugus_kiirus > kaugus: # kolmnurkprofiil (v_max ei ole kättesaadav) t_speed = np.sqrt(kaugus / a_max) t_konstant = 0,0 v_tipp = a_max * = t_kaugus_konstant 2 distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... asukoha arvutamine iga t kohta (kiirenduse/konstanti/aeglustusfaaside alusel) return t, T, v_peak, trajectory kestus, v.0.0 v_max=60.0, a_max=120.0)print(f"Kogukestus: {kestus:.3f} s, tippkiirus: {vz:.1f} kraadi/s")

Loogikakontroll on siin järgmine: kui vahemaa on väike, ei saavuta mootor kunagi v_max-i ja profiil muutub trapetsikujulisest kolmnurkseks. Kui AI jätab selle tingimuse vahele, arvutatakse lühikeste liikumiste jaoks vale kestus. Saate seda kontrollida, testides koodi teadaoleva väärtusega (näiteks väga lühikese vahemaa korral).

Nõrk viip / Tugev viip

NÕRK:"Kirjutage trajektoor, mis viib roboti käe punktist A punkti B."(Piirangut pole: kiiruspiirang? kiirendus? liigeste vahe? Pimeväljund.)STRONG:"Genereerige 6-teljelise roboti jaoks punkt-punkti trajektoor liigeseruumis. Iga liigendi kiiruspiirang on 90 kraadi/s, kiirenduse kraadi/nurkade piirang on tabelis 120. Kasutusnurga piirang on ^ a. trapetsikujuline kiirusprofiil, kui vahemaa on väike, langeb kolmnurkprofiili Iga vuugi väljundiks on Samuti kirjutage kontrollfunktsioon, mis kontrollib, et see ei ületaks liitepiire: {{tabel}}.

Kontrollimine: simulatsioonist robotini

Tehisintellekti loodud trajektoori kontrollitakse enne roboti juurde minekut järgmises järjekorras:

  1. Numbriline: kas iga sammu ühendusnurk, kiirus ja kiirendus on piirides?
  2. Kokkupõrge: kas käsi põrkab mööda trajektoori kokku iseenda või keskkonnaga (võimaluse korral visualiseeri/simuleeri)?
  3. Singulaarsus: kas orbiit läbib singulaarsuspiirkonda (kas Jacobi determinant läheneb nullile)?
  4. Aeglane riistvaratest: kasutage robotit madalal kiirusel (nt 10%) ja jälgige seda visuaalselt.
  5. Kiiruse järkjärguline suurendamine: kui kõik on kontrollitud, suureneb kiirus samm-sammult nimiväärtuseni.
Ettevaatust: Uue trajektooriga roboti esmakordsel käivitamisel peaks kiiruse ületamine olema alati madal ja peatada peatus. Isegi kui tehisintellekti väljund on "matemaatiliselt õige", ilmneb füüsilise seadistuse nihe, pöördtelg või kaabli tõrge ainult aeglase testimise korral.

Mini korpus

Automaatikainsener Ece küsib tehisintellektilt ühisruumis trajektoorikoodi, et valida ja asetada rakendus. Tehisintellekt loob trapetsikujulise profiili, kuid kui Ece testib lühikest liikumist, näeb ta, et aeg on negatiivne: kood ei käsitlenud kolmnurkprofiili juhtu, kus v_max ei ole saavutatav. Ece parandab seda, öeldes käskluse "kui vahemaa on lühike, kukkuge kolmnurkprofiili". Seejärel jookseb see AI-i antud liitenurgad läbi oma valideerimisfunktsiooni oma piirtabeliga ja leiab, et liigend 5 tahtis ühel hetkel +125°, samas kui piir oli +120°. Ta planeerib trajektoori ümber ja jälgib seda, juhtides seekord robotit 10% kiirusega. Esimesel ringil näeb ta, et haarats läheb lauale liiga lähedale ja korrigeerib Z-nihet. AI tagastas töökontuuri minutitega; kuid kolm erinevat valideerimist (kolmnurkprofiil, liigendipiirang, aeglane test) tabasid kolm erinevat tegelikku probleemi.

Levinud vead

  • IK lahenduse kasutamine ilma vuugipiiranguteta ja ligipääsetavuse kontrollita.
  • Ei lõika arccos/arcsin kirjeid, vaid toodab ümardamisvea korral NaN-i.
  • Orbiidi taotlemine kiirust/kiirendust piiramata ja mehaanilist lööki tekitamata.
  • Ignoreerides singulaarsusalasid ja lastes liigeste kiirustel hüppeliselt tõusta.
  • Trapetsi-kolmnurkse profiili ülemineku vahelejätmine lühikesel distantsil ja vale aja arvutamine.
  • Esimese orbitaalkatse läbiviimine täiskiirusel ja ilma E-stopi juurdepääsuta.

Kokkuvõttes

  • Edaspidisel kinemaatikal on üks lahendus; pöördkinemaatika võib anda mitu, olematut või lõpmatut lahendust.
  • IK lahendused on tingimata filtreeritud liitepiirangute, ligipääsetavuse ja singulaarsuse poolest.
  • Trajektoori planeerimine; See kasutab pehmeid, piirangutega ühilduvaid profiile, nagu trapetsikujuline või S-kõver.
  • Lühikese vahemaa tagant muutub profiil trapetsikujulisest kolmnurkseks; seda tuleks käsitleda koodis.
  • AI kiirendab matemaatikat; Viipa peaksid sisestama piirangud ja füüsilise installi kontekst.
  • Uut trajektoori sõidetakse esimest korda alati väikese kiiruse suhte ja ligipääsetava E-peatusega.

Rakenduse ülesanne

Valige kahe või kolme liigendiga õla mudel (reaalsete või kujuteldavate lülide pikkuste ja liigendipiirangutega). Laske tehisintellektil selle kontekstiga genereerida pöördkinemaatiline funktsioon ja trajektoori planeerija. Seejärel: (1) kontrollige käsitsi IK väljundit teadaoleva sihtmärgiga (kas asetate nurgad tagasi ja naasete FK-ga samasse punkti), (2) kontrollige, kas kood haarab need, andes vähemalt ühe ligipääsmatu punkti ja ühe sihtmärgist ületava liigesepiiri, (3) kontrollige, kas lühikese vahemaa korral osutub tiirlemisaeg mõistlikuks. Kirjutage üles, kui palju valideerimisprobleeme koodi esimeses versioonis leidsite ja milline kiht neist igaüht tabas.