- Politechnika Wrocławska
Transkrypt
- Politechnika Wrocławska
Zastosowanie otwartego oprogramowania
w systemie sterowania robotem
społecznym∗
Jan K˛edzierski1 , Łukasz Małek1 , Adam Oleksy1
Streszczenie
W pracy podj˛eto tematyk˛e realizacji systemu sterowania robotycznych towarzyszy życia.
Przedstawiono dost˛epne otwarte oprogramowanie, mogace
˛ znaleźć zastosowanie w robotach społecznych i nie tylko, koncepcj˛e oprogramowania robota społecznego oraz przykład
jej realizacji w oparciu o otwarte oprogramowanie. W pracy zaprezentowano otwarty system sterowania bazujacy
˛ na platformie Urbi, umożliwiajacy
˛ kontrol˛e szerokiej klasy robotów społecznych. System ten posiada wiele modułów funkcyjnych oraz dysponuje zunifikowanym interfejsem programistycznym. Funkcjonalność omawianego systemu potwierdzono
w trakcie realizacji testowego scenariusza.
1.
WSTEP
˛
Rozwijajaca
˛ si˛e na całym świecie robotyka przyczyniła si˛e do powstania ogromnej
ilości, dedykowanego tej dziedzinie, oprogramowania. Rynek robotów przemysłowych wymusił wypracowanie pewnych standardów dotyczacych
˛
budowy oraz ich wyposażenia. Interfejsy oraz metody programowania robotów przemysłowych sa˛ do siebie bardzo zbliżone. Przyczyna tego zjawiska leży w identycznych wymaganiach stawianych np. manipulatorom przemysłowym. W przypadku innych dziedzin robotyki
standardy ciagle
˛ sa˛ kształtowane i podlegaja˛ bardzo dynamicznej ewolucji. Zjawisko
to jest szczególnie widoczne w przypadku robotyki społecznej, która jest relatywnie
nowym nurtem nauki. Od robotów społecznych [3] wymaga si˛e, aby były zdolne do
podejmowania interakcji z człowiekiem, wyrażania emocji, komunikowania si˛e w naturalny sposób, wykazywania wi˛ezi z człowiekiem oraz uczenia si˛e [20].
Celem prowadzonych badań z zakresu interakcji pomi˛edzy człowiekiem a robotem jest skonstruowanie sztucznej istoty, która mogłaby towarzyszyć człowiekowi
w jego codziennych aktywnościach. Taka istota powinna być w stanie wchodzić w relacj˛e społeczna˛ ze swoim właścicielem poprzez dostosowanie swojego zachowania do
jego preferencji [27] oraz zachowywać si˛e w sposób akceptowalny przez człowieka
[15, 4]. Aktualnie roboty społeczne nie sa˛ wykorzystywane komercyjnie, lecz stanowia˛ jedynie prototypowe konstrukcje wyposażane w dedykowane cz˛esto zamkni˛ete oprogramowanie. W minionych latach powstało wiele projektów informatycznych
∗ Praca
została wykonana w ramach projektu LIREC realizowanym w 7 Programie Ramowym UE
Informatyki, Automatyki i Robotyki, Politechnika Wrocławska, 50-370 Wrocław Wybrzeże
Wyspiańskiego 27, mail: {jan.kedzierski, lukasz.malek, adam.oleksy}@pwr.wroc.pl
1 Instytut
J. K˛edzierski, Ł. Małek, A. Oleksy
o otwartym kodzie [40], które mimo że nie sa˛ dedykowane robotyce społecznej, moga˛ znaleźć w niej istotne zastosowanie. W artykule przedstawiono wytworzony system sterowania dla wybranych konstrukcji robotycznych, który dostarcza obiektowo
zorientowany interfejs programistyczny. Pokazano również, że dostarczone oprogramowanie pozwala w krótkim czasie przygotować scenariusz działania robota, który
może być wykorzystany podczas realizacji eksperymentów HRI (Human-Robot Interaction).
Układ pracy jest nast˛epujacy.
˛ W rozdziale drugim zebrano i po krótce opisano najpopularniejsze dost˛epne biblioteki oraz moduły, które moga˛ znaleźć zastosowanie również poza robotyka˛ społeczna.˛ W kolejnych dwóch rozdziałach przedstawiono
ide˛e wielowarstwowej architektury sterowania oraz jej realizacj˛e. Przedostatni rozdział zawiera przykładowy scenariusz działania robota społecznego. Ostatni rozdział
stanowi podsumowanie przeprowadzonych dotychczas prac.
2.
OTWARTE OPROGRAMOWANIE ROBOTÓW
SPOŁECZNYCH
Roboty społeczne, ze wzgl˛edu na swój interdyscyplinarny charakter, wymagaja˛ zastosowania oprogramowania z wielu różnych obszarów, które realizuja˛ wybrane funkcje.
Kluczowym elementem w każdym robocie jest system integrujacy
˛ jego oprogramowanie i pełniacy
˛ rol˛e warstwy pośredniej mi˛edzy urzadzeniami
˛
a systemem sterujacym.
˛
Najpopularniejszymi tego typu systemami sa:
˛ ROS [39], Player [14], YARP
[30], Urbi [22], CARMEN [34], Orocos [11] i Orca [10]. Pośród dost˛epnych systemów na szczególna˛ uwag˛e z punktu widzenia robotyki społecznej zasługuje Urbi,
gdyż poza bogatym zestawem modułów dostarcza także j˛ezyk programowania robotów, zorientowany na równoległe zarzadzanie
˛
zdarzeniami oraz poszczególnymi
komponentami.
Robot społeczny musi cechować si˛e umiej˛etnościa˛ prowadzenia interakcji
z człowiekiem. Naturalnym sposobem komunikacji dla człowieka jest mowa, wi˛ec zapewnienie tego kanału wymiany informacji jest dla robota społecznego bardzo istotne.
Wi˛ekszość oprogramowania umożliwiajacego
˛
syntez˛e mowy ma charakter komercyjny. Niemniej istnieja˛ także projekty otwarte, spośród których na szczególna˛ uwag˛e
zasługuja˛ FreeTTS [46], Festival [5], Flite [6], MBROLA [18] oraz MaryTTS [42].
Programy te sa˛ przeważnie rozwijane przez ośrodki naukowe zajmujace
˛ si˛e synteza˛
mowy.
Kolejnym elementem niezb˛ednym do zapewnienia komunikacji werbalnej jest
zastosowanie oprogramowania do rozpoznawania mowy. Ilość otwartych systemów
realizujacych
˛
ta˛ funkcj˛e jest stosunkowo mała i w zasadzie ogranicza si˛e głównie
do projektów Sphinx [23] oraz Julius [28]. Oba pakiety umożliwiaja˛ rozpoznawanie
mowy w oparciu o n-gramy wyrazów oraz o ukryte modele Markowa. Systemy te
umożliwiaja˛ analiz˛e mowy w sposób w miar˛e niezależny od mówcy. Niemniej uzyskanie dużej poprawności rozpoznawania słów wymaga pewnej wprawy i stosowania
ograniczonego słownika.
Do zapewnienia integracji komponentów syntezy i rozpoznawania mowy konieczne jest zastosowanie oprogramowania realizujacego
˛
funkcj˛e systemu dialogo-
Zastosowanie otwartego oprogramowania w systemie sterowania robotem. . .
wego. System dialogowy powinien zapewniać możliwości prowadzenia nieliniowej
rozmowy, poprzez wprowadzenie losowości, analiz˛e kontekstu wypowiedzi, wnioskowanie oraz rozbudowany system wzorców. Dodatkowo istotna˛ cecha˛ jest możliwość sterowania przebiegiem dialogu za pomoca˛ zewn˛etrznej informacji. Do najpopularniejszych otwartych systemów dialogowych należa:
˛ Olympus [7], Ariadne [16],
Midiki [13] oraz programy bazujace
˛ na j˛ezyku AIML [1].
Istotnym dla robota społecznego źródłem informacji o człowieku, z którym
wchodzi on w interakcj˛e, jest kanał wizyjny. Najpopularniejszym systemem umożliwiajacym
˛
analiz˛e obrazów jest OpenCV [8]. Oprogramowanie to dostarcza bogaty
repertuar algorytmów służacych
˛
do przetwarzania obrazów umożliwiajacych
˛
miedzy
innymi dokonywanie transformacji obrazu, wykrywanie ruchu, śledzenie obiektów
czy wykrywanie twarzy. Z kolei przy wykrywaniu parametrów geometrycznych twarzy zastosowanie znajduja˛ biblioteki Stasm [32] oraz FacET [35]. Bardzo istotne w realizacji interakcji z człowiekiem jest umiej˛etność identyfikacji osób znajdujacych
˛
si˛e
w otoczeniu robota. Na szczególna˛ uwag˛e spośród otwartego oprogramowania zasługuja˛ w tej dziedzinie biblioteki libfacerec [45], Malic [44] oraz RTFTR [19].
Istotnym elementem robota społecznego jest umysł. Jego zadaniem jest symulowanie wewn˛etrznego stanu emocjonalnego poprzez zarzadzanie
˛
jego pami˛ecia,˛
celami oraz wnioskowaniem. Pośród otwartego oprogramowania na szczególna˛ uwag˛e zasługuja˛ tutaj projekty JADEX [38], Jason [24] oraz FatiMA [17]. Opieraja˛ si˛e
one o architektur˛e BDI [9] i opisuja˛ budow˛e inteligentnych agentów w oparciu o teorie behawioralne.
3.
ARCHITEKTURA OPROGRAMOWANIA ROBOTA
SPOŁECZNEGO
Coraz cz˛eściej mówiac
˛ o architekturze sterowania robotem wskazuje si˛e na jej wielowarstwowy charakter [21]. Podział ten stosuje si˛e ze wzgl˛edu na zakres działań poszczególnych komponentów. Systemy, poczawszy
˛
od tych najprostszych, skończywszy na złożonych strukturalnie, składaja˛ si˛e zwykle z modułów realizujacych
˛
pewne
funkcje w zakresie kompetencji, zadań oraz celów [2]. Moduły te sa˛ ulokowane w poszczególnych warstwach i moga˛ wykorzystywać współdzielone zasoby.
Na rysunku 1 zilustrowano architektur˛e trójwarstwowa˛ na przykładzie dwóch
robotów: robota społecznego i manipulatora mobilnego. Warstwa najniższa to sterowanie robota majace
˛ bezpośredni dost˛ep do sprz˛etu. Odpowiedzialna jest za sterowanie nap˛edami, śledzenie trajektorii, pobieranie i przetwarzanie obrazów z kamery oraz
ostatecznie dostarczenie przetworzonych informacji do warstwy pośredniej. Gdy nie
wymaga si˛e dużych mocy obliczeniowych cz˛esto realizowana jest z użyciem prostych
układów mikroprocesorowych. Warstwa pośrednia odpowiada za funkcje robota i realizacj˛e poszczególnych kompetencji. To ich obecność decyduje jakie zadania robot
b˛edzie w stanie wykonać. W przedstawionym przykładzie zarówno robot społeczny
jak i platforma mobilna posiadaja˛ manipulator. Obydwie konstrukcje moga˛ zatem posiadać kompetencj˛e manipulacji. Ze wzgl˛edu na ich odmienne zastosowanie, pierwszy z nich może być także wyposażony w kompetencj˛e wyrażania gestów, drugi np.
w możliwość spawania. Wspomniane kompetencje b˛eda˛ wykorzystywać te same za-
WARSTWA
NAJWYŻSZA
- zdobądź kopie dokumentów
- migruj na innego robota
- dostarcz wiadomość
- odszukaj Adama
- okaż radość
WARSTWA
POŚREDNIA
- podążanie za człowiekiem
- generator wypowiedzi
- śledzenie obiektów
- generowanie gestów
- nawigacja
-lokalizacja przedmiotów
- rozpoznawanie obiektów
- manipulacja
- śledzenie linii
- sygnalizacja
WARSTWA
NAJNIŻSZA
J. K˛edzierski, Ł. Małek, A. Oleksy
- detekcja twarzy
- pomiar odległości
- śledzenie trajektorii
- sterowanie napędami
- skanowanie kodów
- skanowanie otoczenia
- sterowanie zaworami
- przetwarzanie sygnałów
- przejedź do głównego magazynu
- zaczekaj na kolejnego robota
- zastąp uszkodzonego robota
- załaduj paczkę nr 1
- zaparkuj
Rys. 1. Przykładowy podział zadań realizowany w trójwarstwowym systemie sterowania
soby sprz˛etowe czyli manipulator. Warstwa najwyższa to umysł robota. W zależności
od potrzeb jest on realizowany w postaci automatu skończonego, systemu decyzyjnego, algorytmu szeregujacego
˛
zadania lub z użyciem rozbudowanego oprogramowania
symulujacego
˛
działanie ludzkiego umysłu. Warstwa ta nie zawsze musi być w pełni
autonomiczna i w niektórych przypadkach może być wspomagana przez człowieka.
Przedstawiona powyżej koncepcja to jedynie podział logiczny, który nie zawsze jest sztywno odzwierciedlony w strukturze oprogramowania czy realizacji sprz˛etowej. Może si˛e zdarzyć, że jeden moduł b˛edzie pobierał z warstwy najniższej dane
z dalmierzy, przetwarzał je i zadajac
˛ sterowania do platformy realizował kompletna˛
kompetencj˛e nawigacji. Z kolei detektor gestów bazujacy
˛ na obrazie z kamer stereowizyjnych może pracować na komputerze zdalnym, który realizuje także warstw˛e najwyższa,˛ gdyż wymaga dużych mocy obliczeniowych, których komputer pokładowy
robota nie posiada.
4.
REALIZACJA SYSTEMU STEROWANIA
Opisana˛ w poprzednim rozdziale koncepcj˛e wielowarstwowej architektury zrealizowano w postaci kompletnego systemu operacyjnego. Jego działanie przetestowano na
dost˛epnych dla autorów konstrukcjach (Pioneer [33], PeopleBot[33], FLASH [26],
Romek [12], Samuel [12], EMYS [26]). Przygotowany system pozwala na ich dowolne zestawianie ze soba˛ np. platforma mobilna-głowa, ramiona-dłonie lub ramionagłowa. Można zatem zastosować system ten dla zestawu konstrukcji np. PioneerRomek, PeopleBot-EMYS itd. Do uruchomienia systemu wymagana jest jego poprawna instalacja oraz przygotowanie pliku konfiguracyjnego w którym ustala si˛e jakie moduły b˛eda˛ wykorzystywane oraz jakie b˛eda˛ ich parametry pracy. Przygotowane
oprogramowanie dost˛epne jest dla systemu Windows, Linux oraz MacOS X.
Zastosowanie otwartego oprogramowania w systemie sterowania robotem. . .
4.1.
Integracja oprogramowania
Jako główne narz˛edzie integrujace
˛ poszczególne moduły robota użyto oprogramowania Urbi firmy Gostai. Urbi integruje i zapewnia komunikacj˛e na dwóch najniższych
poziomach trójwarstwowej architektury. Pozwala na dynamiczne ładowanie modułów
(UObjects), które umożliwiaja˛ dost˛ep do warstwy sprz˛etowej robota lub w pełni realizuja˛ pewne kompetencje. Wszystkie UObjects zostały napisane w j˛ezyku C++ i skompilowane do postaci wtyczek rozszerzajacych
˛
funkcje Urbi. Zadbano o to, aby zachować przenośny charakter oprogramowania. Wyjatek
˛
stanowia˛ moduły korzystajace
˛
z bibliotek dost˛epnych jedynie dla wybranego systemu operacyjnego. W tej sytuacji
zaproponowano alternatywny moduł dostarczajacy
˛ podobna˛ funkcj˛e dla pozostałych
systemów operacyjnych. Niektóre kompetencje zrealizowano na poziomie skryptów
pisanych w j˛ezyku urbiscript, które sa˛ ładowane wraz z modułami UObjects.
4.2.
Moduły oprogramowania
W celu realizacji założeń stawianych robotom społecznym należy wyposażyć je w szereg kompetencji jak również umożliwić komunikacj˛e pomi˛edzy systemem operacyjnym robota a warstwa˛ sprz˛etowa.˛ Zostało to osiagni˛
˛ ete poprzez dostarczenie zbioru
modułów UObjects wykorzystywanych w środowisku Urbi, za pomoca˛ którego zbudowano zintegrowany interfejs programistyczny.
W celu zapewnienia komunikacji z warstwa˛ sprz˛etowa˛ dostarczono moduł realizujacy
˛ komunikacj˛e poprzez porty szeregowe. Został on nast˛epnie wykorzystany do
stworzenia dwóch modułów. Pierwszy z nich realizuje komunikacj˛e z użyciem protokołu Dynamixel [41], umożliwiajacym
˛
sterowanie silnikami nap˛edzajacymi
˛
ramiona,
dłonie oraz głow˛e. Drugi moduł pozwala na sterowanie platforma˛ mobilna˛ w oparciu o protokół ARIA [25]. Ponadto dostarczono moduł oparty o bibliotek˛e SDL [43]
relizujacy
˛ zdalne sterowanie robotem za pomoca˛ dżojstika.
Do realizacji kompetencji bazujacych
˛
na przetwarzaniu obrazu wykorzystano
bibliotek˛e OpenNI [37] oraz OpenCV [36]. Pierwsza z nich umożliwia wykorzystanie urzadzenia
˛
Kinect firmy Microsoft [31], b˛edacego
˛
zaawansowanym czujnikiem
ruchu. Urzadzenie
˛
razem z dostarczonym interfejsem programistycznym dostarcza
informacje o otoczeniu, w którym znajduje si˛e robot. Opracowane moduły Urbi, wykorzystujace
˛ funkcje czujnika Kinect, pozwalaja˛ na wykrycie sylwetki człowieka, jak
również otrzymanie informacji o odległościach elementów znajdujacych
˛
si˛e na przetwarzanym obrazie. Takie dane pozwalaja˛ na zlokalizowanie człowieka w otoczeniu
robota, określenie położenia jego kończyn oraz wykrycie znajdujacych
˛
si˛e w nich
obiektów.
Bibliotek˛e OpenCV wykorzystano do budowy szeregu modułów przetwarzajacych
˛
obraz. Podobnie jak te oparte o OpenNI, dostarczaja˛ informacje uzyskane z obrazu pobranego z zainstalowanych na robocie kamer. Za ich pomoca˛ system steruja˛
cy robota jest zdolny do wykrycia ludzkich twarzy lub innych wybranych obiektów.
W połaczeniu
˛
z detektorem kolorów, możliwa jest realizacja prostego scenariusza,
którego celem jest określenie koloru włosów poszczególnych osób. Oprócz powyższych funkcji dostarczono również moduły zawierajace
˛ zestaw podstawowych operacji na obrazie.
Kompetencje zwiazane
˛
z generowaniem i przetwarzaniem dźwi˛eku, oparte na
J. K˛edzierski, Ł. Małek, A. Oleksy
introduce_yourself()
find_someone()
welcome_someone()
follow_person()
robot
audio
video
camera
detector
image
x
y
body
speech
recog.
neck
say()
result
head
smile()
sad()
arm
hand
close()
point()
open()
Rys. 2. Struktura funkcjonalna robota
oprogramowaniu Loquendo [29] i bibliotece SDL, zaimplementowane zostały w postaci trzech oddzielnych modułów. Realizuja˛ one takie funkcje jak synteza mowy,
rozpoznawanie mowy oraz odtwarzanie plików dźwi˛ekowych. Umożliwiaja˛ one realizacj˛e jednego z najważniejszych kanałów komunikacji mi˛edzyludzkiej jaka˛ jest
mowa i dźwi˛ek.
Dostarczono również moduły realizujace
˛ procesy uczenia si˛e oparte o algorytmy zawarte w bibliotece OpenCV. Moga˛ one zostać wykorzystane do zbierania
i klasyfikowania informacji o otoczeniu i użytkownikach robota.
Powyższe moduły, zaimplementowane z wykorzystaniem zewn˛etrznego oprogramowania, zostały napisane w j˛ezyku C++ i dostarczone w postaci ładowanych dynamicznie wtyczek do systemu Urbi. Zostały one uzupełnione stworzonymi w j˛ezyku
urbiscript skryptami ułatwiajacymi
˛
wykorzystanie ich w procesie tworzenia scenariuszy działania robota.
4.3.
Interfejs programistyczny
Robota programuje si˛e w j˛ezyku skryptowym urbiscript ładujac
˛ instrukcje do silnika
Urbi (Urbi Engine Runtime) poprzez aplikacj˛e kliencka.˛ Dost˛ep do poszczególnych
funkcji, kompetencji i parametrów pracy możliwy jest poprzez struktur˛e robot. Na
rysunku 2 przedstawiono niewielki jej fragment. Wybierajac
˛ po kropce kolejne gał˛ezie
przechodzi si˛e do kolejnych komponentów np.
robot.body.arm.hand.Open(1s);
robot.body.neck.head.Smile(3s);
robot.body.x.speed=0.5;
robot.video.camera.image;
robot.audio.speechrecognition.result;
Warto zwrócić uwag˛e, że interfejs dostarcza identycznych funkcji dla danego zestawienia, bez wzgl˛edu na to z jakich składa si˛e ono urzadzeń.
˛
Jeżeli wywołana zostanie
funkcja
Zastosowanie otwartego oprogramowania w systemie sterowania robotem. . .
robot.body.neck.head.Smile(3s);
to niezależnie od tego jaki rodzaj głowy został użyty w danym zestawieniu, w ciagu
˛
3 sekund zostanie wygenerowany uśmiech. Innym przykładem może być wywołanie
funkcji
robot.body.neck.head.Say(„hello world”);
W przypadku robota Samuel wypowiedź zostanie zilustrowana ruchem warg nap˛edzanych czterema serwonap˛edami, a w przypadku robota EMYS jedynie ruchem dolnego
dysku. Jeśli w konfiguracji zabraknie głowy system poinformuje o jej braku. Ponadto
struktura robot umożliwia korzystanie z tzw. lokalizatorów. Wywołanie instrukcji
robot.body.arm.MoveUp(5s);
spowoduje w ciagu
˛ 5 sekund ruch obu ramion w gór˛e. Wywołanie instrukcji
robot.body.arm[left].MoveUp(5s);
spowoduje podniesienie jedynie lewego ramienia. Dost˛ep do kompetencji również
został zunifikowany. Np. wywołujac
˛ instrukcj˛e
robot.body.x.speed=0.5;
nastapi
˛ zadanie platformie mobilnej pr˛edkości wzdłużnej równej 0,5m/s, niezależnie
od tego czy jest to platforma Pioneer czy FLASH oraz czy korzystaja˛ one z modułu
nawigacji bazujacego
˛
na oprogramowaniu ARIA lub Player.
5.
REALIZACJA PRZYKŁADOWEGO SCENARIUSZA
W oparciu o dost˛epne funkcje przygotowano scenariusz testowy wykorzystujacy
˛ robota FLASH. Pozwala to na sprawdzenie działania i integracji poszczególnych komponentów. Scenariusz składał si˛e z kilku faz. W pierwszej fazie do pomieszczenia,
w którym znajduje si˛e robot, wchodzi jego użytkownik. Robot poczatkowo
˛
porusza
si˛e losowo po pomieszczeniu. Robot, po zasygnalizowaniu przez użytkownika jego
obecności, lokalizuje położenie użytkownika. Po ustaleniu jego położenia, robot zbliża si˛e do użytkownika na akceptowalna˛ odległość [47, 48], po czym wita go. Użytkownik po uzyskaniu od robota potwierdzenia, iż ten chce nauczyć si˛e kolorów, prezentuje robotowi obiekty przekazujac
˛ mu każdorazowo informacj˛e o tym jakiego sa˛
one koloru. Uczenie odbywa si˛e przez pokazanie robotowi obiektu znajdujacego
˛
si˛e
w prawej r˛ece użytkownika i wypowiedzenie nazwy koloru odpowiadajacej
˛ danemu
obiektowi. Robot po nauczeniu si˛e kilku kolorów traci zainteresowanie tym działaniem i informuje użytkownika o tym, że chciałby pobawić si˛e w inna˛ gr˛e. Użytkownik
proponuje robotowi zabaw˛e w rozpoznawanie kolorów, polegajac
˛ a˛ na odpytywaniu
robota o kolor przedmiotu trzymanego w prawej r˛ece. Po udzieleniu przez robota odpowiedzi użytkownik informuje go o jej poprawności. Właściwa klasyfikacja koloru
powoduje zwi˛ekszenie poziomu satysfakcji robota i ch˛eci do dalszej zabawy, natomiast pomyłki skutkuja˛ utrata˛ zainteresowania gra.˛
J. K˛edzierski, Ł. Małek, A. Oleksy
6.
PODSUMOWANIE
Działanie robota społecznego jest uzależnione od zmian zachodzacych
˛
w otoczeniu,
w którym przebywa człowiek. Zachowanie robota oraz jego sposób gestykulacji jest
unikalny dla danej sytuacji, warunków w jakich znajduja˛ si˛e robot i człowiek. Sprawia to, że projektowanie, implementowanie i testowanie scenariuszy zachowań jest
pracochłonnym zaj˛eciem. Dostarczony interfejs programistyczny pozwala na szybkie
generowanie zestawów ruchowych, pozwalajacych
˛
na wyrażanie emocji całym "ciałem" robota.
Zastosowana platforma Urbi jest przyjaznym i funkcjonalnym oprogramowaniem pozwalajacym
˛
na synchroniczna˛ i współbieżna˛ prac˛e poszczególnych komponentów robota. Dostarczony j˛ezyk programowania urbiscript jest intuicyjny i łatwy
do opanowania w krótkim czasie. Dysponujac
˛ bogatym zestawem modułów można
budować dowolnie skomplikowane systemy.
Ostatecznie przeprowadzono trzy eksperymenty z udziałem robota FLASH
oraz po jednym z robotami EMYS i Samuel. Dla pozostałych konstrukcji przygotowano jedynie demo, które prezentowano przy okazji wielu imprez akademickich.
LITERATURA
[1] A.L.I.C.E. AI Foundation, Inc. Aiml - The Artificial Intelligence Markup Language. http://www.alicebot.org/aiml.html, 2010.
[2] Ruth Aylett et al. Updated integration architecture. http://dl.lirec.eu/deliverables
/Lirec-D.9.4-Updated%20Integration%20Architecture.pdf, 10, 2010. LIREC
GROUP Deliverable 9.4.
[3] C. Bartneck, J. Forlizzi. A design centred framework for social human-robot
interaction. In: 13th IEEE International Workshopon Robot and Human Interactive Communication. Proceedings, Kurashiki, Okayama, Japan, 2004, s. 591 –
994.
[4] T. Bickmore, R. Picard. Establishing and maintaining long-term humancomputer relationships. ACM Trans. Computer-Human Interaction, 2005, wolumen 12, numer 2, s. 293–327.
[5] A. W. Black et al. The Festival Speech Synthesis System. http://www.cstr
.ed.ac.uk/projects/festival/, 2010.
[6] A. W. Black, K. A. Lenzo. Flite: a small, fast run time synthesis engine.
http://www.speech.cs.cmu.edu/flite, 2010.
[7] D. Bohus et al. Opympus. http://www.ravenclaw-olympus.org, 2010.
[8] Gary Bradski, Adrian Kaehler. Learning OpenCV: Computer Vision with the
OpenCV Library. Cambridge, MA, O’Reilly 2008.
[9] M. E. Bratman. Intention, Plans, and Practical Reason. CSLI Publications
1987.
[10] A. Brooks et al. Orca: a component model and repository. In: Principles and
Practice of Software Development in Robotics Red. D. Brugali. Springer 2007.
[11] H. Bruyninckx. Open robot control software: the orocos project. In: ICRA’01.
Proceedings, 2001. wolumen 3, s. 2523–2528.
Zastosowanie otwartego oprogramowania w systemie sterowania robotem. . .
[12] R. Budziński, J. K˛edzierski, B. Weselak. Głowa robota społecznego Samuel –
konstrukcja. In: Prace Naukowe - Politechnika Warszawska. Proceedings, 2010,
s. 185–194.
[13] C. Burke. Midiki: Mitre dialogue kit. http://midiki.sourceforge.net, 2010.
[14] T. H. J. Collett, B. A. MacDonald, B. P. Gerkey. Player 2.0: Toward a practical
robot programming framework.. In: Australasian Conference on Robotics and
Automation. Proceedings, 2005.
[15] K. Dautenhahn. Robots We Like to Live With?! - A Developmental Perspective
on a Personalized, Life-Long Robot Companion. In: RO-MAN. Proceedings.
IEEE, 2004, s. 17–22.
[16] M. Denecke. Ariadne Spoken Dialogue System. http://www.opendialog.org,
2010.
[17] J. Dias, A. Paiva. Feeling and reasoning: a computational model. In: Progress
in Artificial Intelligence, s. 127–140. Springer 2005.
[18] T. Dutoit et al. The mbrola project: towards a set of high quality speech synthesizers free of use for non commercial purposes. In: ICSLP’96. Proceedings,
Philadelphia, IEEE, 1996. wolumen 3, s. 1393–1396.
[19] Abhishek Dutta et al.
Real time face tracking and recognition.
http://rtftr.sourceforge.net, 2012.
[20] T. Fong, I. Nourbakhsh, K. Dautenhahn. A survey of socially interactive robots.
Robotics and Autonomous Systems, 2003, wolumen 42, numer 3–4, s. 143 –
166.
[21] E. Gat. On ThreeLayer Architectures. Artificial Intelligence and Mobile Robots
1998.
[22] Gostai. The Urbi Software Development Kit. http://www.urbiforge.org, 2011.
[23] E. Gouvea. CMU Sphinx - Speech Recognition Toolkit. http://cmusphinx .sourceforge.net, 2010.
[24] J. F. Hübner, R. H. Bordini. Jason a Java-based interpreter for an extended
version of AgentSpeak. http://jason.sourceforge.net, 2010.
[25] MobileRobots Inc. Aria wiki. http://robots.mobilerobots.com/wiki/ARIA, 2012.
[26] J. K˛edzierski et al.
Foundations of Embodied Companions.
http://dl.lirec.org/deliverables/Lirec-D.6.2-Design%20of%20Embodied
%20Companions.pdf, 12, 2009. LIREC GROUP Deliverable 6.2.
[27] K. L. Koay et al. Living with robots: Investigating the habituation effect in
participants’ preferences during a longitudinal human-robot interaction study.
In: International Symposium on Robot and Human Interactive Communication.
Proceedings. IEEE, 2007, s. 564––569.
[28] A. Lee. Open-Source Large Vocabulary CSR Engine Julius. http://julius. sourceforge.jp, 2010.
[29] Loquendo.
Loquendo - We Speak. We Listen. We Understand.
http://www.loquendo.com/en.
[30] G. Metta, P. Fitzpatrick, L. Natale. Yarp: yet another robot platform. International Journal on Advanced Robotics Systems, 2006, wolumen 3, numer 1, s.
43–48.
[31] Microsoft. Technologia Kinect dla konsoli Xbox 360. http://www.xbox.com/plPL/Kinect.
J. K˛edzierski, Ł. Małek, A. Oleksy
[32] Stephen Milborrow, Fred Nicolls. Locating facial features with an extended active shape model. In: Proceedings of the 10th European Conference on Computer
Vision: Part IV. Proceedings, Berlin, Heidelberg, Springer-Verlag, 2008, ECCV
’08, s. 504–513.
[33] Adept MobileRobots. Autonomous mobile robots, software, and accessories.
http://www.mobilerobots.com.
[34] Michael Montemerlo et al.
Carmen robot navigation tool kit.
http://carmen.sourceforge.net, 2012.
[35] Marcin Namysł. Koncepcja systemu wizyjnego do rozpoznawania emocji na
obrazie twarzy. Prace Naukowe Politechniki Warszawskiej. Elektronika, 2008,
wolumen 166, numer 1, s. 91–100.
[36] OpenCV. OpenCV Wiki. http://opencv.willowgarage.com.
[37] OpenNI. Introducing OpenNI. http://openni.org.
[38] A. Pokahr. Jadex Software Projects. http://jadex.informatik.uni-hamburg.de,
2010.
[39] Morgan Quigley et al. Ros: an open-source Robot Operating System. In: OpenSource Software workshop at the International Conference on Robotics and Automation (ICRA). Proceedings, 2009.
[40] E. Raymond, B. Perens. Open Source Intiative. http://www.opensource.org,
2010.
[41] LTD. ROBOTIS CO. RX-28. http://www.robotis.com, 2012.
[42] M. Schröder, J. Trouvain.
The MARY Text-to-Speech System.
http://mary.dfki.de, 2010.
[43] SDL. Simple DirectMedia Layer. http://www.libsdl.org.
[44] A. Suga. Malic. http://malic.sourceforge.net, 2012.
[45] Philipp Wagner. libfacerec 0.02 documentation. http://www.bytefish.de
/dev/libfacerec, 2012.
[46] W. Walker, P. Lamere, P. Kwok. Freetts 1.2: A speech synthesizer written entirely in the Java programming language. http://freetts.sourceforge.net/, 2010.
[47] Michael L. Walters et al. Close encounters: Spatial distances between people
and a robot of mechanistic appearance. In: in Proceedings of the IEEE-RAS
International Conference on Humanoid Robots. Proceedings, 2005, s. 450–455.
[48] Michael L. Walters et al. An empirical framework for human-robot proxemics.
In: symposium at the AISB09 convention. Proceedings, 2009. wolumen 8, s.
144–149.
APPLICATION OF OPEN-SOURCE SOFTWARE FOR ROBOT
COMPANIONS CONTROL SYSTEM
This paper deals with the robot companion control system. We present open-source software,
that can be applied for social robot. Moreover paper describe social robot control system concept and example its implementation based on open-source software. Presented control system
is based on Urbi. It can be applied to the various social robots. This system is endowed with
reach set of functional modules and unified developer interface. Functionality of a described
system has been prooved in a test scenario.