Selectarea și descrierea algoritmului de căutare a traseului adecvat pentru utilizarea în orientarea roboților mobili dintr-o hartă de teren predeterminată
Standardizarea reprezentării datelor reprezintă un aspect important al oricărui domeniu al cunoașterii. RoboML este limbajul care rezolvă această problemă în domeniul roboticii.
Se ia în considerare utilizarea unui robot pe baza unui computer personal în sistemele de securitate.
Abordarea utilizării tehnologiilor de inteligență artificială în sistemul de control al robotului.
Ideea generală. O scurtă descriere a situației actuale în domeniul roboticii, premisele pentru crearea robotului descris, aplicațiile potențiale etc.
intrare
În primul rând, vom clarifica obiectivul nostru principal. Ne limităm la o scurtă intrare: Creați un robot cu un comportament complex. În acest articol voi încerca să descriu cum se poate face acest lucru.
După cum știți, orice robot este alcătuit din două părți:
- Fier - care este adesea piatra de temelie
- Program sau comportament - despre care este adesea uitat
Din cutie? Cu toate acestea, dacă vă gândiți la aceasta, această abordare are partea sa de adevăr. Tehnologiile moderne de programare au mers mult mai departe și pe sutele de mii de clădiri au depășit microprocesoare, care asamblori încă utilizează cea mai mare parte de amatori robotostroiteley si fata semi-profesionale pentru programarea funcțiilor comportamentale ale creațiilor lor. Există un rezultat lamentabil: cele mai multe dintre aceste proiecte au fost pentru a ocoli obstacolele (care poate, de altfel, să pună în aplicare un simplu mecanica!), Iar acestea sunt limitate. Dar ocolirea obstacolelor este o epocă de piatră!
Dragul cititor va fi cu siguranta indignat: "Cum sa cream ceva mai mult acasa? Avem nevoie de calculatoare industriale, circuite logice complexe, interfete periferice non-standard". Nu exact: puteți folosi și un calculator personal vechi obișnuit, sau mai bine - un laptop. Pentru început, suficient, și dacă totul merge bine - va fi posibilă schimbarea locurilor pe computerele industriale.
Utilizarea PC-ului în loc de "creierul" robotului
Deci, ce ne dă utilizarea muzicii personale în loc de creierul viitorului robot? Întrebarea principală pentru începători este cum să gestionați dispozitivele externe? Răspunsul este simplu: prin porturile COM (RS232) și LPT. Această soluție face posibilă implementarea atât a controlului motorului cât și a feedback-ului.
Dintre dezavantajele utilizării unui computer, notez câteva, probabil foarte importante pentru fani:
- Necesitatea de a reproiecta circuitul de putere al calculatorului în ceea ce privește puterea bateriei, adică crearea unei surse de alimentare speciale
- O creștere semnificativă a masei robotului datorită necesității de a transporta baterii puternice și un calculator cu periferice. Ca o consecință - complicația designului "căruciorului", utilizarea motoarelor mai puternice (și costisitoare) etc. Greutatea estimată a robotului este de 6 kg.
Programare Comportament
Să ne uităm la modul în care puteți specifica în mod programatic comportamentul robotului. Dacă omiteți implementarea tuturor driverelor posibile de dispozitive, aveți nevoie de un sistem de management abstract, care, în funcție de starea mediului înconjurător, ar lua orice decizie cu privire la acțiuni ulterioare.
Cea mai simplă versiune a unui astfel de sistem de control este un automat finit (acesta este un model matematic care reflectă regulile pentru schimbarea stării unui obiect abstract, în funcție de factorii externi și starea actuală)
Mașina de stat finită vă permite să implementați orice modele "pre-instalate" de comportament, ca să spunem așa, linii innascute de comportare a obiectului (în cazul nostru - robotul).
Un automat finit descrie astfel de formule de comportament ca:
Dacă am lucrat și brusc a început să plouă, du-te acasă
Într-o variantă mai generală:
Dacă obiectul a fost în starea A. și a apărut un eveniment X, atunci obiectul merge la starea B.
Rolul unui automat finit este o funcție care definește regula pentru determinarea unei noi stări a unui obiect.
NewMode = EndAutomatic (eveniment, stare curentă)
O variantă mai complexă a implementării funcției comportamentale a robotului este utilizarea de soluții din domeniul inteligenței artificiale (AI). În primul rând, aici merită să subliniem rețelele neuronale. Rețeaua neurală este un model de program pentru interacțiunea neuronilor umani în creier. Principalele sarcini care sunt rezolvate cu ajutorul rețelelor neuronale - recunoașterea (imagini, texte, etc.). Cea mai importantă caracteristică a rețelelor neuronale este prezența memoriei și abilitatea de a învăța. În prezent, pe Internet se găsesc multe soluții gata făcute, care implementează mecanismul rețelelor neuronale. De aceea, acum ne vom concentra nu pe programarea lor, ci, mai întâi, pe reglarea lor.
De obicei, o anumită bază de răspunsuri corecte este utilizată pentru formarea rețelelor neuronale. Acest lucru este normal, deoarece dacă robotul nostru a învățat ceva, atunci trebuie să știe dacă a învățat corect acest lucru. De exemplu, un robot ar putea învăța să călătorească în jurul obstacolelor - rotind 180 de grade! Care, desigur, este o decizie greșită.
Astfel, este necesar să găsim principalele motive care îi motivează pe robot să acționeze. Ce este potrivit pentru el și ce este o greșeală? Ce este bun pentru el și ce este rău pentru el?
În aceste întrebări, statele pe care le poate primi robotul vor veni în ajutorul nostru. Aceste stări sunt specificate rigid de mecanismul mașinii de stat finite discutat mai sus și, prin urmare, este de asemenea dificil să se stabilească anumite atribute la stările indicate. Inclusiv gradul dorinței lor pentru prietenul nostru mecanic.
Pentru a determina în ce state poate fi localizat un robot, să luăm în considerare motivul tranziției către diferite state - apariția în sistemul de evenimente. Evenimentele reflectă două lucruri:
- Starea internă a robotului conform indicațiilor senzorilor (de exemplu descărcarea bateriei, lipsa spațiului de pe hard disk etc.)
- Interacțiunea robotului cu mediul.
Lista evenimentelor interne și evaluarea acestora:
- Ultimul test al sistemului a trecut perfect - bine
- Ultimul test al sistemului a eșuat - rău
- Baterie descărcată - rău
- Descărcarea completă a bateriilor - teribil
- Lipsa memoriei RAM este rea
- Eroarele software sunt teribile
- Lipsa spațiului pe hard disk este teribilă
- Evenimentul din calendar (apare la un moment dat, folosind ceasul calculatorului încorporat) - fără greutate
Lista evenimentelor externe este mult mai interesantă. Dar distincția este mai dificilă. În primul rând, să analizăm ce obiecte din lumea exterioară pot interacționa cu robotul nostru:
- Managerii - cei care au creat robotul
- Oamenii care sunt oameni obișnuiți - aceia care folosesc serviciile robotului și interacționează direct cu robotul
- Unele obstacole statice - a căror poziție nu sa schimbat mult timp și robotul nu-l poate schimba
- Obstacolele dinamice - obstacolele care apar apoi dispar, dar întotdeauna într-un singur loc
- Impedimente imprevizibile - obstacole care nu pot fi prevăzute
- Surse de sunet
- Surse de lumină
- Locul de încărcare
- Balize pentru determinarea poziției
Situația cu locuitorii este mai interesantă. oameni care interacționează fizic cu robotul. Astfel de persoane pot:
- Dați comenzi de la telecomandă (telecomandă)
- Discutați cu robotul / țipa la robot (sunet de impact)
- Impactul luminii (pentru a închide robotul de la lumină / ilumina-l cu o lanternă)
- A fi un obstacol (instabil)
- Încărcați robotul (fericirea finală a lui hihi)
- Opriți robotul
- Imobilizați robotul
Această listă poate fi suplimentată, dar arată că locuitorii pot acționa ca și alte obiecte enumerate în mediul înconjurător, așadar stările de bază ale robotului vor interacționa cu toate aceste obiecte.
Poate că putem încerca să facem o listă de state datorită interacțiunii cu mediul extern:
- Primirea unei comenzi de la telecomandă - fără greutate
- Sunetul este bun
- Sunetul ritmic (există modalități simple de a determina această calitate) - bine
- Sunet foarte tare - rău
- Sunetul gamei non-standard este rău
- Lumina este bună
- Lumină foarte strălucitoare - rău
- Lipsa de lumină pentru o lungă perioadă de timp este rău
- Imobiliaritatea (când senzorii de feedback nu înregistrează mișcarea) - este teribil
- Oprire - fără greutate
- Procesul de încărcare este perfect
Ce ne dă această distribuție de greutăți? Ne dă cel mai important lucru - lista intereselor robotului și o listă a ceea ce îi va fi frică. În cazul în care robotul vede aceeași acțiunea sa (sau chiar fluxul de lucru complex) conduce întotdeauna la aceleași rezultate (convertit în aceeași stare), aceasta va tinde fie să evite executarea astfel de acțiuni - în cazul în care starea de greutate este negativ, sau invers, repetați-le dacă greutatea este pozitivă. Formarea va avea loc automat, conform principiilor muncii rețelelor neuronale. Apropo, pentru a împiedica robotul să se fixeze pe un singur lucru, este de asemenea necesar să introduceți starea "Schimbarea tipului de activitate" cu prioritate perfectă. și în această stare robotul trebuie să meargă mai departe, dacă tot acest timp el era într-unul sau mai multe (mici) state.