URBI

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 27. august 2019; checks kræver 11 redigeringer .

URBI ( eng.  universal real-time behavior interface  - cross-platform software platform, i programmeringssproget C ++ [ klargør ] bruges til applikationsudvikling, robotteknologi og komplekse systemer. Platformen inkluderer et parallelt og begivenhedsbaseret scriptsprog - UrbiScript .

Licens

URBI distribueres under BSD-licensen , tilgængelig på GitHub .

Forbindelse

UObject på tværs af platforme kan bruges i scripts til interaktion og dataudveksling. De forbinder til UrbiScript og behandles som native.

Komponenter kan linkes til urbiscript- fortolkeren eller køre som en selvstændig proces i "fjern"-tilstand.

urbiScript

Urbiscript er et scriptsprog, der bruges i videospil. Det kan bruges med C++ programmeringssproget til at skabe komponenter i en enkelt funktionel struktur.

Oprettelse

UrbiScript-sproget er blevet udviklet siden 2003 af Jean-Christophe Bailey ved ENSTA Cognitive Robotics Laboratory i Paris .

Manuskriptet udvikles i øjeblikket aktivt i samarbejde med Gostai.

Nøglefunktioner

  • Samtidigheds- og hændelsesbaseret programmering
  • Prototype programmering (Prototype-baseret programmering)
  • C++ stil syntaks
  • C++ komponentarkitektur (UObject) med evnen til at linke objekter eller køre dem eksternt
  • klient-server arkitektur
  • Klientgrænseflader til Java og Matlab (Urbi SDK)
  • Cross -platform : Linux , Mac , Windows og andre. Indlejret kan URBI køre på en række forskellige processorer: x86 , ARM , MIPS , PowerPC osv.
  • Tagbare kommandoer til at kontrollere flowudførelse
  • siden maj 2010 har Urbi været et open source-produkt ( GNU AGPL v3-licens).
  • Urbi kan interface med ROS fra Willow Garage .
  • Urbi kan simpelthen bruges som en C++ middleware uden urbiscript. Brug af urbiscript kræver dog at lære et relativt nyt sprog, ikke så meget i form af syntaks (som ligner C/C++), men i forhold til parallel-/begivenhedsparadigmet.
  • Webots  er en professionel robotsimulator , der kan arbejde med Urbi.
  • Robotvisuel kontrolsoftware fra Gostai Studio og Gostai Lab , men den er proprietær og dyr.

Eksempler

Eksemplerne viser, hvordan "bold"-sporingscyklussen er implementeret i urbiscript - hovedmotorobjekter, objekter til at detektere "kuglen" (x og y i området fra -1/2 til 1/2):

når som helst (ball.visible) { headYaw.val += camera.xfov * ball.x & headPitch.val += camera.yfov * ball.y };

Whenever  er en loop, der bruges til at udføre den tilknyttede kode, så længe værdien af ​​betingelserne er sand. Bruges også til at angive, at begge kommandoer skal starte på samme tid og køre parallelt .

"&" - en indikation for begge kommandoer, som skal begynde på samme tid, mens de udføres parallelt .

at(speech.hear("hej")) { voice.say("Hvordan har du det?") & robot.standup(); }

at  er en hændelseskonstruktion, der udfører den tilknyttede kode én gang, når betingelsen bliver sand:

mit tag: mens (sandt) echo("Dette er en uendelig løkke"), ved (knap.trykket) myTag.stop;

myTag er et tag , der gør det muligt at sætte denne kode på pause, hvis det er nødvendigt:

I ovenstående eksempel er der et komma i slutningen af ​​kommandoen - angiver udførelsen af ​​den forrige kommando i baggrunden , hvilket gør det muligt for programmet at fortsætte med at køre, især udførelsen af ​​den næste kommando .

Komponentarkitektur af UObject

UObject- komponentarkitekturen er i øjeblikket baseret på C++-biblioteket . UObject giver udviklere mulighed for at interagere med et hvilket som helst C++-objekt i Urbi ved at levere en scriptsprog- mapping af udvalgte metoder og parametre, mens de forbliver C++-kode. En C++-alarm kan indstilles på enhver af et objekts attributter for at give koden besked om ændringer af disse attributter af urbiscript/Urbi.

UObject bruger C++-skabeloner til transparent at kortlægge enhver påkrævet metode til en grænseflademotor.

C++ UObject kan bruges enten i plugin -tilstand, hvis det er direkte forbundet med Urbi-kernen på kompileringstidspunktet eller i dynamisk indlæsningstilstand. I det første tilfælde får C++-objektet adgang til Urbis kernehukommelse som følge af integrationen. Dette bruges almindeligvis til tidskritiske komponenter såsom motor- eller sensordrivere . Det samme C++ UObject kan også bruges uændret som en fjernkomponent. I dette tilfælde vil det blive et selvstændigt program, der vil blive udført med IP-adressen på Urbi-serveren som parameter. I begge tilfælde vil objektet gennemsigtigt fremstå i urbiscript som dets oprindelige objekt.

Eksisterende UObjects

Understøttede scripts

Links