Autonomiczny robot dostawczy AQUILO został zaprojektowany i zrealizowany w celu dostarczania niewielkich przesyłek w obrębie budynków takich jak biurowce, uczelnie, szpitale itp. Głównym zadaniem realizowanym przez autonomicznego robota AQUILO jest dostarczanie niewielkich przesyłek w budynkach takich jak np. biurowce, hotele, szpitale, budynki administracji publicznej itp. Autonomiczny robot AQUILO musi mieć możliwość automatycznego tworzenia map pomieszczeń po których się porusza, wyznaczać optymalną ścieżkę dostawy oraz omijać przeszkody które może spotkać na swojej drodze.

Robot AQUILO musi być bezpieczny, nie może wjeżdżać w ludzi lub inne przeszkody, jego zachowanie nie powinno powodować niepokoju wśród użytkowników (nie powinien zbyt gwałtownie przyśpieszać lub poruszać się ze zbyt dużą prędkością) a w każdej chwili powinna istnieć możliwość przejęcia kontroli nad działaniem robota. Dodatkowo robot AQUILO musi być wyposażony w intuicyjny interfejs dzięki któremu komunikuje się z ludźmi a także wyświetla różne informujące lub dane o stanie pracy robota.

Robot AQUILO musi być wyposażony w napęd umożliwiający mu manewrowanie w bardzo ograniczonej przestrzeni np. winda, czas pracy robota pomiędzy kolejnymi ładowaniami powinien wynosić min. 10h, ciężar przewożonego ładunku powinien wynosić ok. 30kg. Ważnym aspektem który był również brany pod uwagę w trakcie projektowania robota AQUILO była maksymalnie prosta obsługa robota (np. ładowanie ogniw), łatwość późniejszych modyfikacji lub rozbudowy. Rysunek [fig:robot-3] przedstawia finalny projekt koncepcyjny robota AQUILO.

Konstrukcja robota AQUILO

Konstrukcja robota AQUILO.

Napęd i konstrukcja mechaniczna

Mając na uwadze wymagania stawiane, w szczególności maksymalna manewrowość robota na niewielkich przestrzeniach, zdecydowano się wykorzystać napęd z kołami typu mecanum. Napęd ten charakteryzuje się tym iż umożliwia on poruszanie się robota niezależnie w kierunkach x i y oraz obrotu wokół własnej osi z (3 stopnie swobody ruchu robota). Każde z robota kół typu mecanum musi mieć także własny silnik umożliwiający niezależną od pozostałych kół zmianę prędkości i kierunku obrotu koła. Do wad kół typu mecanum można zaliczyć ich duży ciężar (w przypadku większych kół) a także stosunkowo niewielki prześwit. W robocie AQUILO wykorzystano koła mecanum o średnicy 100mmm oraz silniki prądu stałego firmy FAULHABER seri 3257. Podstawowe parametry silnika to: napięcie zasilania 24V, maksymalne obroty (przed przekładnią) 5900 rpm, rodzielczość enkodera to 1024 tiki na jeden obrót. Silniki prądu stałego są powszechnie wykorzystywane w konstrukcja robotów z powodu dużego momentu obrotowego, małych rozmiarów, przystępnej ceny i prostego sterowania. Użyte silniki są zintegrowane z przekładnią oraz enkoderami i stanowią jedną całość. Silniki sterowane są sygnałem PWM który generowany jest przez niskopoziomowy układ sterowania.

Architektura układu sterownia

Układ sterowania robota AQUILO podzielny jest na trzy niezależne poziomy. Każdy z poziomów układu sterowania realizuje określoną grupę zadań do której został zaprojektowany. Poszczególne poziomy układu sterowania mają możliwość wymiany danych między sobą. 

Architekutra układu sterowania

Architekutra układu sterowania

Robot AQUILO posiada dwa główne tryby pracy: ręczny i autonomiczny. W trybie pracy ręcznym prędkość oraz kierunek poruszania się robota kontrolowane są za pomocą joysticka, pad-a lub innego urządzenia. Ten tryb pracy używany jest np. do zbierania danych, na podstawie których tworzone są mapy pomieszczeń. W trybie pracy autonomicznej robot AQUILO realizuje wybrany algorytm działania np. autonomiczne dostarczanie przesyłek, losowe błądzenie itp. W tym trybie pracy można wpływać na działanie robota AQUILO za pomocą interfejsu robota (ekran dotykowy) na którym mogą być wyświetlane różne informacje, pytania dotyczące realizowanego zadania. W każdym momencie działania robota w trybie autonomicznym istniej możliwość przełączenia się na tryb pracy ręcznej.

Low-level control

Najniższy poziom sterowania realizowany jest przez specjalnie zaprojektowany do tego układ wykorzystujący procesor STM32. Układ ten (nazywany dalej ARE Robot Cape) realizuje niskopoziomowe zadania takie jak: generowanie sygnałów PWM dla kontrolerów silników (4 wyjścia), odczyt danych z enkoderów (4 wejścia), sterowanie prędkością i kierunkiem obrotów każdego z silników, sterowanie adaptacyjnym oświetleniem, sterowanie obrotami wentylatorów, pomiar napięć na każdym z ogniw akumulatora. Oprócz tego ARE Robot Cape zawiera: 20 wejść/wyjść typu GPIO, 2 wyjścia przekaźnikowe (30VDC lub 277VAC), 2 wyjścia przekaźnikowe dla stref bezpieczeństwa lidaru, obsługę barometrów SPI (np. BM280, BM160), 3 uniwersalne wyjścia PWM 5kHZ, współpracuje z czujnikami ultradźwiękowymi JSNH04T, 4 optoizolowane wejścia. Urządzenie ARE Robot Cape współpracuje ze kontrolerami silników serii Poloul-u co umożliwia podłączenie różnego typu silników. Głównym zadaniem realizowanym przez ARE Robot Cape jest prawidłowe sterowanie napędem typu mecnaum które wymaga prawidłowego wyznaczenia prędkości kątowych każdego z kół . Do ARE Robot Cape za pośrednictwem portu szeregowego można wysłać kierunek i wartość wektora prędkości który następnie jest przeliczany na prędkości obrotowe i kierunki każdego z kół. Do prawidłowego sterowania prędkością obrotową kół wykorzystywany jest układ sterowania typu feedforward z stabilizującym regulatorem PID. Parametry regulatorów PID zostały dobrane numerycznie poprzez minimalizację zadanego wskaźnika jakości, natomiast prawidłowość doboru parametrów gwarantujących stabilność układu sterowania została zweryfikowana przy pomocy testów pokrycia.
Kolejnym zadaniem realizowanym przez ARE Robot Cape jest pomiar prędkości obrotowej każdego z kół, który realizowany jest za pomocą enkoderów. Prawidłowo przeliczone i przeskalowane wartości prędkości liniowych oraz przesunięcia uwzględniające fizyczne wymiary kół są następnie wysyłane na port szeregowy. Dodatkowo ARE Robot Cape na bieżąco odczytuje wartości wszystkich podłączonych sensorów i jeśli jest to wymagane skaluje i przelicza odczytane wartości, aby na końcu wysłać wszystkie dane na port szeregowy z którego mogą być odczytywane przez kolejne urządzenia.

Middle level controll

Sterowanie średniego poziomu robota AQUILO realizowane jest z wykorzystaniem frameworka Robot Operation System (ROS) i działa ono na komputerze klasy PC pracującym pod kontrolą systemu operacyjnego Ubuntu. Framework ROS to zbiór bibliotek, modułów i programów umożliwiający tworzenie zaawansowanego oprogramowania do sterowania robotami. ROS został wydany na licencji BSD oraz wolnego oprogramowania, dzięki czemu może on być wykorzystywany w celach naukowych, ale również komercyjnych całkowicie za darmo. Do głównych zalet frameworka ROS można zaliczyć: bardzo duża liczba gotowych modułów, ustandaryzowany sposób komunikacji między modułami, wielowątkowość, zaawansowane środowisko testowe oraz symulacyjne, możliwość programowania w językach Python lub C++, duża ilość gotowych aplikacji i modułów oraz ogromna społeczność programistów i komercyjnych firm wspierająca jego rozwój.

Do głównych zadań sterowania średniego poziomu robota AQUILO należy: tworzenie map pomieszczeń, wyznaczanie optymalnych tras, poruszanie się po zaplanowanej trasie, filtrowanie i analiza danych z lidaru oraz kamer głębokości, omijanie wykrytych przeszkód, obsługa komunikacji i wymiany danych z układem sterowania niskopoziomowego, obsługa interfejsu komunikacyjnego wraz z logiką jego działania. Wszystkie te zadania są realizowane przez odpowiednie moduły frameworka ROS które zostały odpowiednio skonfigurowane i dostosowane do potrzeb funkcjonalnych robota AQUILO.

Hight level controll – managment control

Zadaniem sterowania poziomu wysokiego jest dostarczanie interfejsu programistycznego aplikacji (API) do obsługi robota, zarządzanie grupą robotów, zbierania analiza danych przesyłanych przez roboty, globalne planowanie zadań dla grupy robotów. Na chwilę obecną ten poziom sterowania nie został jeszcze zaimplementowany.

Sensory

Autonomiczny robot AQUILO został wyposażony w różnego typu sensory dzięki którym potrafi ustalać swoją pozycję na mapie a także omijać napotkane w trakcie jazdy przeszkody. Podstawowym sensorem wykorzystywanym przez robota AQUILO jest lidar firmy HOKUYO UST-10LN następujących parametrach: liczba pomiarów w jednym skanie 1081, rodzielczość kątowa 0.25$\degree$, zakres patrzenia 270$\degree$, zasięg 10 metrów, prędkość skanowania 25 ms. Zastosowany lidar charakteryzuje się też tym, że jest całkowicie obudowany łącznie z obracającą się głowicą laserową co zdecydowanie podnosi jego trwałość i ułatwia zastosowanie. Lidar podłączony jest bezpośrednio do komputera centralnego. Wykorzystywany jest do tworzenia map pomieszczeń, lokalizacji robota oraz wykrywania przeszkód.

Kolejnym typem sensorów wykorzystywanym w projekcie robota AQUILO są dwie kamery głębokości firmy INTEL Realsense Depth D415. Kamery te charakteryzują się tym, że oprócz normalnego obrazu mogę również zwracać obraz głębokości danego kadru. Dzięki temu algorytmy sterowania mają informacje o rzeczywistej odległości różnych przedmiotów od robota które pozostają w polu widzenia kamery. Kamery głębokości zamontowane są pod dwoma kątam tak jak to przedstawia rysunek.

Sposób zamontowania kamer w robocie AQUILO

Sposób zamontowania kamer w robocie AQUILO.

Dolna kamera wykorzystywana jest przez system Stair Detection System (abbv. SDS) którego zadaniem jest wykrywanie schodów (w kierunku dolnym) które robot może napotkać w trakcie swojej pracy. Elementy mapy jakimi są schody nie są zaznaczane na tworzonych przez robota AQUILO mapach (musiało by to być robione ręcznie co jest zadaniem uciążliwym). System SDS wykrywa obiekty typu schody na bieżąco i nie dopuszcza do zjechania po nich robota AQUILO co z pewnością zakończyło by się jego poważnym uszkodzeniem. Górna kamera wykorzystywana jest w systemie interfejsu robota. Może na być wykorzystana np. do rozpoznawania twarzy odbiorców i nadawców przesyłek w celu maksymalnego uproszczenia autoryzacji. Kolejną funkcjonalność może być zaimplementowanie śledzenia ruchu gałek ocznych użytkownika i odtwarzanie tego ruchu na ekranie robota AQUILO co będzie dawać efekt interakcji i współpracy robot–człowiek.

Lidar pomimo swoich niewątpliwych zalet jakim są szybkość działania, dokładność nie jest urządzeniem w 100% niezawodnych. Stąd też chcąc podnieść poziomo bezpieczeństwa zdecydowano się do zamontowania w robocie AQUILO ultradźwiękowych czujników odległości które mogą wykrywać przeszkody w odległości 20cm–6m od robota. Wykorzystywane one są w systemie bezpieczeństwa robota i nie dopuszczają one do kolizji robota z innymi przeszkodami. 

Oprócz wymienionych wyżej czujników robot AQULO wyposażony jest w barometr wykorzystywany do estymowania wysokości np. podczas jazdą robota windą. W celu kontroli układu zasilania napięcia na ogniwach ciągle mierzone są za pomocą przetwornika AD-DC.Oprócz wymienionych wyżej czujników robot AQULO wyposażony jest w barometr wykorzystywany do estymowania wysokości np. podczas jazdą robota windą. W celu kontroli układu zasilania napięcia na ogniwach ciągle mierzone są za pomocą przetwornika AD-DC.

W zależności od rodzaju interfejsu komunikacyjnego danego sensora oraz funkcji realizowanej w systemie poszczególne sensory podłączone są bezpośrednio do komputera sterującego (sterowanie poziomu średniego) albo do specjalnie zaprojektowanego urządzenia mikroprocesorowego wykorzystującego procesor STM32 (dokładny opis układu znajduje się w sekcji Low-level control)

Sposób podłączenia sensorów robota AQUILO

Sposób podłączenia sensorów robota AQUILO.

Nawigacja

Jest to jedna z podstawowych funkcjonalności robota AQUILO. Umożliwia ona robotowi bezpieczne poruszanie się po pomieszczeniach. Podstawą nawigacja są mapy pomieszczeń. Mapy te tworzone są przez moduł ROS-a o nazwie SLAM Gmapping. Tworzenie nowej mapy może odbywać się na dwa sposoby. W pierwszym z nich użytkownik korzystając z pad-a ręcznie steruje robotem i stara się nim przejechać po obszarze po którym robot ma się później poruszać. W drugim przypadku, robot AQUILO korzystając z algorytmu eksploracji, zaimplementowanego w ROS modułu Frontier Exploration, stara się samodzielnie objechać obszar po którym później ma się poruszać . W obydwu przypadkach w trakcie jazdy robot skanuje (za pomocą lidaru) przestrzeń wokół niego i zapisuje dane. Z zebranych danych tworzona jest mapa pomieszczenia która jest wykorzystywana przez robota AQUILO. Pierwszy sposób tworzenia mapy jest szybszy oraz bardziej dokładny, użytkownik może dokładnie przejechać cały obszar. Wymaga on natomiast ręcznego sterowania przez człowieka. Drugi sposób skanuje przestrzeń w sposób automatyczny ale jest wolniejszy (ponieważ robot porusza powoli po nieznanym obszarze). Dodatkowo mapy utworzone w drugim przypadku mogą być mniej dokładnie bo robot może samodzielnie nie dotrzeć do wszystkich miejsc skanowanego obszaru. Rysunek [fig:robot-mapping] przedstawia robota AQUILO w trakcie tworzenia mapy pomieszczenia. W miarę jak robot sukcesywnie rozpoznaje przeszkody np. ściany są one zaznaczane na tworzonej mapie jako czarne punkty, czerwone punktu oznaczając pomiary z lidaru, jasne tło oznacza przestrzeń bez przeszkód.

Tworzenie mapy przez robota AQUILO

Tworzenie mapy przez robota AQUILO.

Do poprawnej pracy robot AQUILO musi w każdej chwili znać swoją pozycję na mapie. Do ustalana aktualnej lokalizacji na mapie wykorzystywane są pomiary z lidaru oraz dane z odometri kół robota które są łączone w z wykorzystaniem algorytmu Kalmana . Zadanie wyliczana pozycji realizowane jest z wykorzystaniem adaptacyjnego algorytmu Monte Carlo . Możliwy jest też inny sposób lokalizowania robota z wykorzystaniem samych kamer głębokości i algorytmu Fast Sampling Plane Filtering .

Jedną z funkcjonalności robota AQUILO jest możliwość jazdy windami. Dzięki tej funkcjonalności robot AQUILO może się poruszać w obrębie całego budynku, po wszystkich jego piętrach. Implementacja map w ROS-ie umożliwia jedynie wykorzystywanie map 2D na jednym poziomie stąd też koniecznym było opracowanie dodatkowe modułu o nazwie Maps Repository Module (abbr. MRM) którego zadaniem jest zarządzanie i przełączanie map robota w zależności od tego na jakim poziomie budynku lub jakiej części budynku znajduje się robot. MRM dla każdego budynku tworzy graf skierowany w którym węzły oznaczają poziomy ze swoimi mapami natomiast krawędzie oznaczają możliwość zmiany mapy z jednej na drugą (czyli np. zmiana piętra budynku). 

Unikanie kolizji

Podstawowym niebezpieczeństwem mogącym wystąpić w trakcie pracy robota AQUILO jest kolizja z innymi obiektami. Robot AQUILO zawiera aż trzy niezależne systemy zabezpieczającego przed tego typu zdarzeniami. Pierwszy z systemów antykolizyjnych składa się z algorytmu wykrywającego przeszkody na drodze robota AQUILO oraz algorytmu modyfikującego ścieżkę poruszania się tak żeby ominąć wykrytą przeszkodę. System ten zaimplementowany w warstwie sterowania średniego poziomu i działa tylko wtedy kiedy robot porusza się autonomicznie. System ten jest bardzo dokładny jednak do poprawnego działania wykorzystuje sporo zasobów głównego komputera. W razie awarii głównego komputera albo zatrzymania działania głównego algorytmu sterowania system ten również przestaje działać co jest jego wadą.

W przypadku sterowania ręcznego zapewnienie bezkolizyjnego poruszania się robotem jest zadaniem użytkownika. Jeśli jednak z jakiś względów sterowanie użytkownika mogło by doprowadzić do kolizji to zapobiega jej system który działa w warstwie sterowania niskopoziomowego. Wykorzystany w robocie lidar umożliwia zdefiniowanie tak zwanych stref bezpieczeństwa i jeśli zostanie wykryte naruszenie takiej strefy bezpieczeństwa to lidar wygeneruje na jednym ze swoich wyjść sygnał wysoki. Sygnał ten został wykorzystany w robocie AQUILO do odłączania zasilania od silników za pomocą przekaźnika. Zaletą tego systemu jest jego prostota oraz niezawodność działania. Dodatkowo system ten działa całkowicie niezależnie od sterowania średniego poziomu przez co na jego działanie nie ma wpływy ani komputer sterujący ani stan działania głównego algorytmu sterującego. Wadą tego systemu jest jego dwustanowe działanie, może on tylko zatrzymać robota AQUILO.

Powyższe dwa systemy zabezpieczeń wykorzystują dane pochodzące z lidar-u. Mogą jednak wystąpić sytuacje kiedy lidar nie wykryje prawidłowo przeszkody (np. szklane drzwi). Żeby zapobiec takim sytuacją robot AQUILO został wyposażony w ultradźwiękowe czujniki odległości. Jeśli w bezpośredniej odległości od robota czujniki ultradźwiękowe wykryją przeszkodę wtedy również napęd robota AQUILO zostanie odłączony. System ten zaimplementowany jest w warstwie sterowania niskopoziomowego a do pomiaru odległości wykorzystywane jest urządzenie ARE Robot Cape w którym zaimplementowany odpowiedni algorytm. Wykrywanie odległości z wykorzystaniem ultradźwiękowych czujników jest mało dokładne i stosunkowo wolne (jeśli stosujemy kilka takich sensorów) jednak tego rodzaju sensory są w stanie wykryć przeszkody takie jak np. szklane drzwi.

Unikanie schodów

Jedną z przeszkód której nie wykryje lidar oraz czujniki ultradźwiękowe są schody. Obiekty takie są niebezpieczne gdyż robot może z nich spaść i spowodować obrażenia osób znajdujących się poniżej a także uszkodzenie samego robota. Aby zapobiec spadnięciu robota AQUILO ze schodów zaprojektowano i wykonano system Stairs Detection System. System wykorzystuje kamerę głębokości która jest skierowana w dół na bieżąco analizuje przestrzeń przed robotem. Rysunek [fig:robot-side-sketch] przedstawia sposób w jaki wykrywane są schody które znajdują się przed robotem.

robot side sketch

 

Kamera głębokości umieszczona w punkcie A skierowana jest pod kątem w dół i na bieżąco mierzy odległość odcinka AC. Znając wartość kąta korzystając z twierdzenia pitagorasa można wyznaczyć odległość AB. Jeśli jej wartość jest większa o zadanej wartości granicznej wtedy system SDS zgłasza wykrycie schodów. System SDS zaimplementowany jest w warstwie sterowania średniego poziomu i w momencie wykrycia schodów zatrzymuje poruszanie się robota w kierunku wykrytych schodów. Systemy wykrywania schodów znane są w robotyce z tą różnicą, że wykorzystywane są w autonomicznych robotach odkurzających lub też robotach które mają możliwość poruszania się po schodach . Innym sposobem wykorzystywanym do wykrywania schodów jest ich oznaczenie na mapie jako przeszkód (np. ściana) lub rozmieszczenia specjalnych znaczników informujących robota o schodach. Takie rozwiązanie posiadają następujące wady: każda mapa musi być edytowania przez człowieka – musi on zaznaczyć wszystkie schody, w przypadku błędnej lokalizacji robota na mapie może on "niezauważyć" schodów, konieczność montażu dodatkowego wyposażenia . System SDS zaprojektowany i wykorzystany w robocie AQUILO jest wolnych od tych wszystkich wad.