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 .
URBI distribueres under BSD-licensen , tilgængelig på GitHub .
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 er et scriptsprog, der bruges i videospil. Det kan bruges med C++ programmeringssproget til at skabe komponenter i en enkelt funktionel struktur.
OprettelseUrbiScript-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.
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 .
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.