URBI

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 27 august 2019; verificările necesită 11 modificări .

URBI ( ing.  interfață universală de comportament în timp real  - platformă software multiplatformă, în limbajul de programare C++ [ clarifica ] utilizat pentru dezvoltarea de aplicații, robotică și sisteme complexe. Platforma include un limbaj de scripting paralel și bazat pe evenimente - UrbiScript .

Licență

URBI este distribuit sub licența BSD , disponibilă pe GitHub .

Conexiune

UObject multiplatformă poate fi utilizat în scripturi pentru interacțiune și schimb de date. Se conectează la UrbiScript și sunt tratați ca nativi.

Componentele pot fi conectate la interpretul urbiscript sau pot rula ca proces independent în modul „la distanță”.

urbiScript

Urbiscript este un limbaj de scripting folosit în jocurile video. Poate fi folosit cu limbajul de programare C++ pentru a crea componente într-o singură structură funcțională.

Creare

Limbajul urbiScript a fost dezvoltat din 2003 de Jean-Christophe Bailey la Laboratorul de Robotică Cognitivă ENSTA din Paris .

Scenariul este în prezent dezvoltat în mod activ în cooperare cu Gostai.

Caracteristici cheie

  • Concurență și programare bazată pe evenimente
  • Programare prototip (programare bazată pe prototip)
  • Sintaxa stilului C++
  • Arhitectura componentelor C++ (UObject) cu capacitatea de a lega obiecte sau de a le rula de la distanță
  • arhitectura client-server
  • Interfețe client pentru Java și Matlab (Urbi SDK)
  • Multi- platformă : Linux , Mac , Windows și altele. Încorporat, URBI poate rula pe o varietate de procesoare: x86 , ARM , MIPS , PowerPC etc.
  • Comenzi etichetabile pentru a controla execuția fluxului
  • din mai 2010 Urbi este un produs open source ( licență GNU AGPL v3).
  • Urbi poate interfata cu ROS de la Willow Garage .
  • Urbi poate fi folosit simplu ca middleware C++, fără urbiscript. Cu toate acestea, utilizarea urbiscript necesită învățarea unui limbaj relativ nou, nu atât în ​​ceea ce privește sintaxa (care este similară cu C/C++), cât în ​​ceea ce privește paradigma paralelă/eveniment.
  • Webots  este un simulator de robot profesionist care poate funcționa cu Urbi.
  • Software de control vizual al robotului, de la Gostai Studio și Gostai Lab , dar este proprietar și scump.

Exemple

Exemplele arată modul în care ciclul de urmărire a „mingii” este implementat în urbiscript - obiecte motorii capului, obiecte pentru detectarea „bilei” (x și y în intervalul de la -1/2 la 1/2):

oricând (minge.vizibil) { headYaw.val += camera.xfov * ball.x & headPitch.val += camera.yfov * ball.y };

Ori de câte ori  este o buclă care este folosită pentru a executa codul asociat, atâta timp cât valoarea condițiilor este adevărată. De asemenea, folosit pentru a indica faptul că ambele comenzi ar trebui să înceapă în același timp și să ruleze în paralel .

„&” - o indicație pentru ambele comenzi, care trebuie să înceapă în același timp, în timp ce se execută în paralel .

la(vorbire.auzi(„bună ziua”)) { voce.spune ("Ce mai faci?") & robot.standup(); }

at  este un construct de eveniment care execută codul asociat o dată, când condiția devine adevărată:

myTag: în timp ce (adevărat) echo ("Aceasta este o buclă fără sfârșit"), la (buton.apăsat) myTag.stop;

myTag este o etichetă care face posibilă întreruperea acestui cod dacă este necesar:

În exemplul de mai sus, există o virgulă la sfârșitul comenzii - indică execuția comenzii anterioare în fundal , permițând programului să continue să ruleze, în special, execuția următoarei la comandă .

Arhitectura componentelor UObject

Arhitectura componentelor UObject se bazează în prezent pe biblioteca C++ UObject permite dezvoltatorilor să interacționeze cu orice obiect C++ din Urbi, oferind o mapare în limbaj de scripting a metodelor și parametrilor selectați , rămânând în același timp codul C++. O alertă C++ poate fi setată pe oricare dintre atributele unui obiect pentru a notifica codul cu privire la orice modificări aduse acestor atribute prin urbiscript/Urbi.

UObject folosește șabloane C++ pentru a mapa în mod transparent orice metodă necesară la un motor de interfață.

C++ UObject poate fi folosit fie în modul plugin dacă este legat direct la nucleul Urbi în timpul compilării, fie în modul de încărcare dinamică. În primul caz, obiectul C++ are acces la memoria de bază a lui Urbi ca urmare a integrării. Acesta este utilizat în mod obișnuit pentru componentele critice în timp, cum ar fi driverele pentru motor sau senzori . Același UObject C++ poate fi, de asemenea, utilizat neschimbat ca componentă la distanță. În acest caz, va deveni un program independent care va fi executat cu adresa IP a serverului Urbi ca parametru. În ambele cazuri, obiectul va apărea transparent în urbiscript ca obiect nativ.

UObjects existente

Scripturi acceptate

Link -uri