URBI
Originalförfattare | Jean-Christophe Baillie |
---|---|
Utvecklare | Gostai, Aldebaran Robotics |
Initial release | 2003 |
Stabil frisättning | 2.7.4 / 17 november 2011
|
Förvar | |
Skrivet i | urbiscript , C++ |
Operativ system | Windows NT , macOS , Linux |
Typ | Robotsvit , operativsystem , bibliotek |
Licens | BSD |
Urbi är en plattformsoberoende mjukvaruplattform med öppen källkod skriven i C++ som används för att utveckla applikationer för robotik och komplexa system. Urbi är baserad på UObject-distribuerade C++-komponentarkitekturen. Det inkluderar också urbiscript- orkestreringsspråket som är ett parallellt och händelsestyrt manusspråk. UObject-komponenter kan kopplas in i urbiscript och visas som inbyggda objekt som kan skriptas för att specificera deras interaktioner och datautbyten. UObjects kan länkas till urbiscript-tolken eller exekveras som autonoma processer i "fjärrläge".
Det urbana språket
Urbiscript-språket skapades 2003 av Jean-Christophe Baillie i Cognitive Robotics Lab i ENSTA , Paris. Det har aktivt och vidareutvecklats i branschen genom företaget Gostai som grundades 2006. Det är nu ett projekt med öppen källkod, med en BSD-licens, tillgängligt på GitHub.
Urbiscript-språket kan bäst beskrivas som ett orkestreringsskriptspråk: precis som Lua i videospel kan urbiscript användas för att limma ihop C++-komponenter till ett funktionellt beteende, den CPU-intensiva algoritmdelen lämnas till C++ och beteendeskriptdelen lämnas till skriptspråket som är mer flexibelt, lätt att underhålla och tillåter dynamisk interaktion under programkörning. Som ett orkestreringsspråk tillför urbiscript också några användbara abstraktioner till ett program genom att ha parallellism och händelsebaserad programmering som en del av språksemantiken. Skriptering av parallella beteenden och reaktioner på händelser är kärnkraven för de flesta robotbaserade och komplexa AI-applikationer, därför är urbiscript (och hela Urbi-plattformen) väl lämpad för sådana applikationer.
Språkattribut
- Parallellism och händelsebaserad programmering
- Prototypbaserad programmering
- C++ som syntax
- Java- och C++-baserad komponentarkitektur (UObject) med möjlighet att länka objekt eller köra dem på distans
- Klient–server modellarkitektur
- Cross-platform: Linux, Macintosh, Windows, andra.
- Urbi kan bäddas in på olika processorer: x86, ARM, MIPS, powerPC, etc.
- Jobbkontroll via "taggar"
Funktioner
- Parallell programmering och händelsestyrd programmering
- Programmering av prototyper
- Syntax som liknar C++
- Arkitekturkomponenter: C++, Java (UObject) med möjlighet att länka objekt eller exekvera på distans
- Klient-server-modell
- Gränssnitt med kunder Java och MATLAB (Urbi SDK)
- Flera plattformar: Linux , macOS , Windows NT och inbäddade miljöer ( x86 , ARM , MIPS , powerPC )
- Att markera order för deras kontroll så asynkront
- Integration av robotoperativsystem (ROS) direkt tillgänglig från urbiscript (version 2.1)
Exempel
Exemplet nedan visar hur man skriver en bollspårningshandling/perceptionsslinga i urbiscript: headYaw/headPitch är två motoriska objekt och bollen är bolldetekteringsobjektet (x och y sträcker sig från -1/2 till 1/2):
när som helst ( boll . synlig ) { headYaw . val += kamera . xfov * boll . x & headPitch . val += kamera . yfov * boll . y };
när som helst används för att trigga en kodbit i loopar så länge det associerade villkoret är sant. Tecknet &
används för att specificera att båda kommandona ska starta samtidigt och därmed köras parallellt.
Andra anmärkningsvärda händelsedrivna konstruktioner inkluderar at , som utlöser den associerade koden en gång när händelsen utlöses:
at ( tal . höra ?( "hej" )) { röst . säga ( "Hur mår du?" ) & robot . standup (); }
Varje kommando eller grupp av kommandon kan märkas, vilket ger ett sätt att stoppa det senare om det behövs:
myTag : medan ( true ) echo ( "Detta är en slinga som aldrig tar slut" ), vid ( knapp . nedtryckt ) myTag . stoppa ;
Notera i exemplet ovan kommatecken i slutet av kommandot. Det kommer att placera det föregående kommandot i bakgrunden, vilket gör att flödesexekveringen kan fortsätta, i synnerhet nästa "at"-kommando som ska utföras.
UObject komponent arkitektur
UObject-komponentarkitekturen tillåter utvecklare att gränssnitta alla Java/C++-objekt inom Urbi, vilket gör utvalda metoder och attribut synliga i urbiscript, samtidigt som de i själva verket kompileras kod. Särskilda meddelanden kan ställas in på något av objektets attribut för att meddela C++-sidan om eventuella ändringar på dessa attribut på urbiscript/Urbi-sidan.
UObject använder C++-mallar för att transparent mappa alla begärda metoder till ett gränssnittsmaskineri som tar hand om typkontrollen.
Ett UObject kan användas i pluggat läge om det är direkt länkat till Urbi vid kompilering eller med dynamisk laddning. I så fall delar C++-objektet Urbi-minnet direkt, vilket resulterar i effektiv integration. Detta används vanligtvis för tidskritiska komponenter som motor- eller sensordrivrutiner. Samma UObject kan även användas utan ändringar som en fjärrkomponent. I så fall kommer det att bli ett autonomt program som ska köras med Urbi-serverns IP-adress som parameter. I båda fallen kommer objektet transparent att visas i urbiscript som ett inbyggt urbiscript-objekt.
Ekosystem
Robotsimulatorer kompatibla med Urbi
- Webots är den officiella robotsimulatorn som är kompatibel med Urbi.
- Player/Stage- integration har rapporterats, även om den inte är släppt för närvarande.
Urbi-fied robotar
Släppte:
- Göstai Open Jazz
- Segway PT
- Aibo ERS-7/ERS-2xx (endast Urbi 1.x, Urbi 2.3 finns som alfa)
- Skapa iRobot
- Lego Mindstorms NXT
- HRP-2 (begränsad frigivning till medlemmar av JRL)
- Nao
- Robotis Bioloid
- Mobile Robots Pioneer
Meddelat:
- Besiktningsman
- Khepera III
- e-puck
Se även
- Robotsvit
- Player Project - robotgränssnitt med öppen källkod inom forskning och eftergymnasial utbildning
- Robotoperativsystem (ROS)
externa länkar
- Urbi på GitHub
- Urbi online-dokumentation
- Wong, William, "Gostai Urbi" , "Electronic Design", 5 augusti 2010.
- McCafferty, Billy, "Q&A of Urbi, a robot OS" , "Sharprobotica", 16 juli 2010.
- Blankenhorn, Dana, "Jag, robot med öppen källkod" , "ZDNet", 20 augusti 2010.