URBI
Oryginalni autorzy | Jean-Christophe Baillie |
---|---|
Deweloperzy | Gostai, Aldebaran Robotics |
Pierwsze wydanie | 2003 |
Wersja stabilna | 2.7.4 / 17 listopada 2011
|
Magazyn | |
Napisane w | urbiscript , C++ |
System operacyjny | WindowsNT , macOS , Linux |
Typ | Pakiet robotyki , system operacyjny , biblioteka |
Licencja | BSD |
Urbi to wieloplatformowa platforma obliczeniowa typu open source napisana w języku C++ , używana do tworzenia aplikacji dla robotyki i złożonych systemów. Urbi jest oparty na rozproszonej architekturze komponentów C++ UObject. Obejmuje to również orkiestrację urbiscript język, który jest równoległym i sterowanym zdarzeniami językiem skryptowym. Komponenty UObject można podłączyć do urbiscript i pojawiać się jako natywne obiekty, które można napisać w skrypcie, aby określić ich interakcje i wymianę danych. UObjects mogą być połączone z interpreterem urbiscript lub wykonywane jako autonomiczne procesy w trybie „zdalnym”.
Język urbiscript
Język urbiscript został stworzony w 2003 roku przez Jeana-Christophe'a Bailliego w Laboratorium Robotyki Kognitywnej ENSTA w Paryżu. Był aktywnie i dalej rozwijany w branży za pośrednictwem firmy Gostai założonej w 2006 roku. Obecnie jest to projekt typu open source, z licencją BSD, dostępny na GitHub.
Język urbiscript można najlepiej opisać jako język skryptowy orkiestracji: podobnie jak Lua w grach wideo, urbiscript może być używany do sklejania komponentów C++ w zachowanie funkcjonalne, część algorytmiczna intensywnie korzystająca z procesora jest pozostawiona C++, a część dotycząca skryptów behawioralnych pozostawiona do języka skryptowego, który jest bardziej elastyczny, łatwy w utrzymaniu i umożliwia dynamiczną interakcję podczas wykonywania programu. Jako język orkiestracji, urbiscript wnosi również do programu kilka przydatnych abstrakcji dzięki równoległości i programowaniu opartemu na zdarzeniach jako część semantyki języka. Skryptowanie równoległych zachowań i reakcji na zdarzenia to podstawowe wymagania większości zrobotyzowanych i złożonych aplikacji AI, dlatego urbiscript (i cała platforma Urbi) doskonale nadaje się do takich aplikacji.
Atrybuty języka
- Równoległość i programowanie oparte na zdarzeniach
- Programowanie oparte na prototypach
- C++ jak składnia
- Javie i C++ (UObject) z możliwością łączenia obiektów lub ich zdalnego uruchamiania
- Architektura modelu klient-serwer
- Wieloplatformowość: Linux, Macintosh, Windows, inne.
- Wbudowany Urbi może działać na różnych procesorach: x86, ARM, MIPS, powerPC itp.
- Kontrola zadań za pomocą „tagów”
Funkcje
- Programowanie równoległe i programowanie sterowane zdarzeniami
- Programowanie prototypów
- Składnia podobna do C++
- Komponenty architektury: C++, Java (UObject) z możliwością łączenia obiektów lub zdalnego uruchamiania
- Model klient-serwer
- Interfejsy z klientami Java i MATLAB (Urbi SDK)
- Wiele platform: Linux , macOS , Windows NT i środowiska wbudowane ( x86 , ARM , MIPS , powerPC )
- Oznaczanie rozkazów do ich kontroli jest więc asynchroniczne
- Integracja systemu operacyjnego robota (ROS) dostępnego bezpośrednio z urbiscript (wersja 2.1)
Przykłady
Poniższy przykład pokazuje, jak napisać pętlę akcji/percepcji śledzenia piłki w urbiscript: headYaw/headPitch to dwa obiekty motoryczne, a ball to obiekt wykrywający piłkę (zakres x i y od -1/2 do 1/2):
kiedykolwiek ( piłka . widoczna ) { headYaw . val += kamera . xfov * piłka . x & headPitch . val += kamera . yfov * piłka . y };
when jest używany do wyzwalania fragmentu kodu w pętlach, o ile powiązany warunek jest prawdziwy. Znak &
służy do określenia, że oba polecenia powinny być uruchamiane w tym samym czasie, a więc działać równolegle.
Inne godne uwagi konstrukcje sterowane zdarzeniami obejmują at , które wyzwalają powiązany kod raz, gdy zdarzenie jest wyzwalane:
w ( mowa . słyszeć ?( "cześć" )) { głos . powiedz ( „Jak się masz?” ) & robot . wstawanie (); }
Każde polecenie lub grupę poleceń można otagować, co umożliwia późniejsze zatrzymanie go w razie potrzeby:
myTag : while ( true ) echo ( "To jest niekończąca się pętla" ), at ( przycisk . wciśnięty ) myTag . zatrzymać ;
Uwaga w powyższym przykładzie przecinek na końcu polecenia. Umieści poprzednie polecenie w tle, umożliwiając kontynuację wykonywania przepływu, w szczególności wykonanie następnego polecenia „at”.
Architektura komponentu UObject
Architektura komponentów UObject umożliwia programistom łączenie dowolnych obiektów Java/C++ w Urbi, dzięki czemu wybrane metody i atrybuty są widoczne w urbiscript, podczas gdy w rzeczywistości jest to skompilowany kod. Specjalne powiadomienia można ustawić dla dowolnego atrybutu obiektu, aby powiadomić stronę C++ o wszelkich zmianach tych atrybutów po stronie urbiscript/Urbi.
UObject używa szablonów C++ do przejrzystego mapowania dowolnej żądanej metody na maszynę interfejsu, która zajmuje się sprawdzaniem typu.
Obiekt UObject może być używany w trybie podłączonym, jeśli jest bezpośrednio połączony z Urbi w czasie kompilacji lub przy ładowaniu dynamicznym. W takim przypadku obiekt C++ bezpośrednio współdzieli pamięć Urbi, co skutkuje wydajną integracją. Jest to zwykle używane w przypadku komponentów krytycznych czasowo, takich jak sterowniki silników lub czujników. Ten sam UObject może być również używany bez modyfikacji jako komponent zdalny. W takim przypadku stanie się autonomicznym programem do wykonania z adresem IP serwera Urbi jako parametrem. W obu przypadkach obiekt pojawi się w urbiscript jako natywny obiekt urbiscript.
ekosystem
Symulatory robotyki kompatybilne z Urbi
- Webots to oficjalny symulator robota kompatybilny z Urbi.
- Zgłoszono integrację odtwarzacza/sceny , chociaż obecnie nie jest ona wydana.
Roboty miejskie
Wydany:
- Gostai Open Jazz
- Segway PT
- Aibo ERS-7/ERS-2xx (tylko Urbi 1.x, Urbi 2.3 jest dostępny jako alfa)
- iRobot Utwórz
- Lego Mindstorms NXT
- HRP-2 (ograniczone wydanie dla członków JRL)
- Nao
- Robotis Bioloid
- Pionier robotów mobilnych
Ogłoszony:
- Inspektor
- Chepera III
- e-krążek
Zobacz też
- Pakiet robotyki
- Player Project - interfejs robota typu open source w badaniach i szkolnictwie policealnym
- System operacyjny robota (ROS)
Linki zewnętrzne
- Urbi na GitHubie
- Dokumentacja internetowa Urbi
- Wong, William, „Gostai Urbi” , „Electronic Design”, 5 sierpnia 2010.
- McCafferty, Billy, „Q&A of Urbi, robot OS” , „Sharprobotica”, 16 lipca 2010.
- Blankenhorn, Dana, „Ja, robot open source” , „ZDNet”, 20 sierpnia 2010.