URBI ( eng. universellt realtidsbeteendegränssnitt - plattformsoberoende mjukvaruplattform, på programmeringsspråket C ++ [ förtydliga ] används för applikationsutveckling, robotteknik och komplexa system. Plattformen inkluderar ett parallellt och händelsebaserat skriptspråk - UrbiScript .
URBI distribueras under BSD-licensen , tillgänglig på GitHub .
Cross-platform UObject kan användas i skript för interaktion och datautbyte. De ansluter till UrbiScript och behandlas som infödda.
Komponenter kan länkas till urbiscript- tolken eller köras som en fristående process i "fjärrläge".
Urbiscript är ett skriptspråk som används i videospel. Det kan användas med programmeringsspråket C++ för att skapa komponenter till en enda funktionell struktur.
SkapandeSpråket urbiScript har utvecklats sedan 2003 av Jean-Christophe Bailey vid ENSTA Cognitive Robotics Laboratory i Paris .
Manuset utvecklas för närvarande aktivt i samarbete med Gostai.
Exemplen visar hur "boll"-spårningscykeln implementeras i urbiscript - huvudmotorobjekt, objekt för att detektera "bollen" (x och y i intervallet från -1/2 till 1/2):
när som helst (ball.visible) { headYaw.val += camera.xfov * ball.x & headPitch.val += camera.yfov * ball.y };Whenever är en loop som används för att exekvera den associerade koden så länge som värdet på villkoren är sant. Används även för att indikera att båda kommandona ska starta samtidigt och köras parallellt .
"&" - en indikation för båda kommandona, som måste börja samtidigt, medan de körs parallellt .
at(speech.hear("hej")) { voice.say("Hur mår du?") & robot.standup(); }at är en händelsekonstruktion som exekverar den associerade koden en gång, när villkoret blir sant:
myTag: medan (sant) echo("Detta är en aldrig sinande loop"), vid (knapp.tryckt) myTag.stop;myTag är en tagg som gör det möjligt att pausa den här koden vid behov:
I exemplet ovan finns det ett kommatecken i slutet av kommandot - indikerar exekveringen av det föregående kommandot i bakgrunden , vilket gör att programmet kan fortsätta att köra, i synnerhet exekveringen av nästa kommando .
UObject- komponentarkitekturen är för närvarande baserad på C++-biblioteket UObject tillåter utvecklare att interagera med vilket C++-objekt som helst i Urbi genom att tillhandahålla en skriptspråksmappning av valda metoder och parametrar samtidigt som C++-kod finns kvar. En C++-varning kan ställas in på något av ett objekts attribut för att meddela kod om eventuella ändringar av dessa attribut av urbiscript/Urbi.
UObject använder C++-mallar för att transparent mappa alla nödvändiga metoder till en gränssnittsmotor.
C++ UObject kan användas antingen i plugin -läge om det är direkt länkat till Urbi-kärnan vid kompilering eller i dynamiskt laddningsläge. I det första fallet får C++-objektet tillgång till Urbis kärnminne som ett resultat av integrationen. Detta används vanligtvis för tidskritiska komponenter som motor- eller sensordrivrutiner . Samma C++ UObject kan också användas oförändrat som en fjärrkomponent. I det här fallet kommer det att bli ett fristående program som kommer att köras med Urbi-serverns IP-adress som parameter. I båda fallen kommer objektet transparent att visas i urbiscript som dess ursprungliga objekt.