Istnieje wiele poziomów kontroli oprogramowania, które muszą mibyć uwzględnione we wszystkich robotach, z wyjątkiem tych najprostszych. Jednostki mikrokontrolerów (MCU) i rozwiązania system-on-chip (SoC), odpowiedzialne za zarządzanie czujnikami i elementami wykonawczymi zwykle korzystają z systemu operacyjnego czasu rzeczywistego (RTOS) lub jądra.
Maksymalizacja zasobów systemowych za sprawą wielozadaniowości RTOS
Zaletą RTOS jest jego wielozadaniowość. RTOS umożliwia efektywne planowanie wielu działań na pojedynczym mikroprocesorze, maksymalizując wykorzystanie zasobów i zdolność systemu do reagowania na zdarzenia zewnętrzne. Na przykład otwarcie klatki bezpieczeństwa musi spowodować wstrzymanie działania w sposób minimalizujący ryzyko dla robota i personelu. Samo odłączenie zasilania może być niebezpieczne. RTOS może wyzwalać wszystkie działania niezbędne do zatrzymania robota w stanie nieruchomym, zapewniając, że nie upuści on ciężkich przedmiotów, ani nie spowoduje uszkodzenia innych elementów. Można to osiągnąć, na przykład poprzez przejście do wątku oprogramowania, który nakazuje obwodom elektroniki sterującym zasilaniem zatrzymanie silników w określonych położeniach.
W połączeniu z odpowiednio zaprojektowanym oprogramowaniem RTOS może dostarczać pewnych gwarancji co do czasu reakcji na krytyczne zdarzenia. Te zdarzenia zazwyczaj są sygnalizowane poprzez zewnętrzne przerwanie docierające do mikroprocesora. Zazwyczaj jest ono obsługiwane przez program obsługi przerwania, który inicjuje wątek oprogramowania, odpowiedzialny za podjęcie działań Dzięki opartemu na priorytetach planowaniu z wyprzedzeniem RTOS gwarantuje możliwie najkrótsze opóźnienie dla tego typu odpowiedzi na najważniejsze problemy.
ROS: Robot Operating System
W robotach wykorzystujących wiele mikroprocesorów i akceleratorów sprzętowych, co staje się coraz bardziej powszechne, każdy węzeł urządzenia uruchamiającego musi być kontrolowany przez system nadzoru. Ten system odpowiada za planowanie zadań i utrzymanie wysokiego poziomu koordynacji. Jest to rola, która jest zwykle realizowana przez oprogramowanie pośredniczące, takie jak Robot Operating System (ROS), działające na mikroprocesorze o wysokiej wydajności.
Dzisiaj ROS jest przeznaczony do pracy na systemie operacyjnym, takim jak Linux, a nie jako samodzielny system operacyjny. ROS nie wymaga również zachowania RTOS z bazowego systemu operacyjnego, ponieważ wykonuje bardziej długoterminowe zadania niż te, które wymagają mikrosekundowych czasów odpowiedzi. Jednak trwają prace nad stworzeniem implementacji ROS 2.0, które będą uruchamiane na platformach RTOS, dzięki czemu będą mogły oferować wyższe stopnie szybkości reakcji.
Oprogramowanie pośredniczące, które uzupełnia ROS, oferuje wiele usług. Obejmują one usunięcie sprzętowe urządzeń niskiego poziomu, a także obsługę komunikatów przesyłanych między procesami, aby umożliwić architektury wieloprocesorowe i zarządzanie pakietami oprogramowania. Procesy zazwyczaj są reprezentowane za pomocą wykresów, które łączą węzły, wskazując miejsca przetwarzania oraz sposoby komunikacji między procesami. Implementacje ROS są często pakietami otwartymi i korzystają z platform Linux, aby ułatwić zarządzanie zależnościami pomiędzy projektami open-source. Zaletą tego rozwiązania jest łatwy dostęp do oprogramowania ROS.
W ROS węzły są procesami lub modułami oprogramowania, które obsługują jedno lub więcej powiązanych zadań. Na przykład kamera i węzeł przetwarzania obrazu mogą przetwarzać dane wizualne z jednego lub więcej czujników obrazu. Aby umożliwić wykorzystanie infrastruktury sieciowej do połączenia ze sobą węzłów, co jest obecnie powszechne w systemach motoryzacyjnych, ROS obsługuje protokoły TCP/IP i UDP do przekazywania komunikatów. Różne węzły i połączenia mogą być opisane za pomocą pliku URDF (Universal Robot Description Format), który jest formatem pliku XML.
Aby umożliwić efektywne udostępnianie danych z czujników i poleceń, ROS wykorzystuje mechanizm publish-subscribe, w którym węzły zgłaszają informowanie o określonych tematach. Wszelkie aktualizacje dotyczące każdego tematu są wysyłane do wszystkich węzłów z subskrypcją. Program ROS Master monitoruje wszystkie usługi i tematy, zarządza rejestracją węzłów oraz obsługuje serwer parametrów. To umożliwia węzłom przechowywanie i pobieranie wspólnych danych konfiguracyjnych.
Główną zaletą oprogramowania pośredniczącego, takiego jak ROS, jest ponowne wykorzystanie i udostępnianie kodu. Udostępnianie kodu umożliwia wszystkim użytkownikom posiadanie wspólnej podstawy oprogramowania, co pomaga w testowaniu i ogólnej niezawodności oprogramowania. ROS nie jest ograniczony do robotów fizycznych.
Obsługuje również symulowane roboty.
Rola symulacji w rozwoju robotyki
Istotnym wymaganiem w procesie projektowania robota jest umożliwienie symulacji jego funkcji w środowisku wirtualnym przed implementacją sprzętową. Symulator umożliwia pisanie i debugowanie programów robotycznych w trybie offline. To umożliwia rozwijanie oprogramowania w bezpiecznym środowisku, eliminując ryzyko uszkodzenia robota lub otoczenia w przypadku istnienia poważnych błędów w proponowanym programie. Ostateczną wersję programu można przetestować na rzeczywistym robocie.
Istnieją również inne zalety symulacji. Projektanci mogą rozwijać program etapowo, począwszy od prostych modeli wysokiego poziomu, co jest korzystne przy złożonych projektach. Takie symulacje mogą być prowadzone na wczesnym etapie, aby stwierdzić, czy system jest wykonalny. Środowiska symulacyjne stworzone dla robotyki są zoptymalizowane pod kątem kompatybilności z różnorodnymi językami programowania, co ułatwia rozwój aplikacji. Symulacja może znacząco skrócić czas opracowywania, umożliwiając korygowanie błędów w logice aplikacji przed jej przypisaniem do sprzętu. W ten sposób unika się sytuacji, w której błędy stają się trudniejsze do naprawienia po wdrożeniu na rzeczywistym sprzęcie.
Istnieje wiele podejść do symulacji robotów. Tradycyjnie symulacja skupiała się na kinematyce ruchu robota w celu wykazania, czy ścieżki i trajektorie są wykonalne i praktyczne.
Ten rodzaj symulacji umieszcza wirtualnego robota w przestrzeni 3D i pokazuje, w jaki sposób przeguby mogą się poruszać w świecie fizycznym. Symulacja może także pomóc w ustaleniu, czy robot będzie w stanie podnieść ciężkie i nieporęczne obiekty i manipulować nimi bez utraty stabilności.
Niektóre symulatory kinematyki posługują się uproszczonym zestawem obliczeń, skupiając się głównie na tym, w jaki sposób program może obracać i przesuwać obiekty, aby zapewnić, że nie kolidują z granicami klatki bezpieczeństwa lub obszarem produkcyjnym. Inne angażują bardziej skomplikowaną symulację fizyki, aby wykryć naprężenia i inne problemy, które mogą mieć wpływ na działanie robota w terenie.
Symulacja interakcji robotów w dynamicznych środowiskach
W momencie, gdy roboty opuszczają kontrolowane środowiska, zabezpieczone przez klatki bezpieczeństwa, i przenoszą się do obszarów, gdzie mogą swobodnie współdziałać z ludźmi i innymi robotami, projektanci muszą uwzględnić potencjalne interakcje. Symulatory zachowań robotów mobilnych pozwalają projektantom tworzyć, na wysokim poziomie abstrakcji, wirtualne światy zawierające inne obiekty. Prosta symulacja zachowania uwzględnia jedynie ruch robota pomiędzy zestawem stałych obiektów. Bardziej złożone symulacje wymagają użycia wielu mobilnych obiektów lub awatarów. Te symulatory analizujące zachowanie pomagają w projektowaniu aplikacji, w których robot może napotkać złożone środowiska. Dzięki kolizjom i innym interakcjom mogą uczyć się, jak lepiej radzić sobie z przeszkodami. Symulacje fizyczne odgrywają istotną rolę w potwierdzeniu, że kinematyka robota jest dokładnie odwzorowana.
Wybór odpowiedniego silnika fizycznego robota
Środowiska symulacyjne, takie jak pakiet open-source Gazebo, mają zdolność generowania realistycznych danych z czujników, które mogą być poddane różnorodnym zakłóceniom. Gazebo umożliwia dostosowanie symulacji do określonych wymagań aplikacji – na przykład przez zastosowanie różnych silników fizyki. W przypadku symulowania środowisk nieuporządkowanych często wybierany jest solver maksymalnej współrzędnej jak ODE lub Bullet. Solver oparty na algorytmie Featherstone’a, jak DART lub Simbody, znajdzie więcej zastosowań w systemach przegubowych, takich jak roboty humanoidalne lub złożone roboty produkcyjne. Wszystkie silniki fizyczne są dostępne poprzez ten sam interfejs programowania aplikacji (API).
Istnieją jednak granice symulacji. Aplikacja może symulować tylko właściwości i zdarzenia, dla których jest zaprogramowana. Czynniki wewnętrzne lub zewnętrzne nie są uwzględniane i nie będą symulowane, co może prowadzić do problemów podczas implementacji sprzętowej. Ponadto tworzenie wystarczająco reprezentatywnych scenariuszy jest często trudne, zwłaszcza jeśli chodzi o ocenę złożonych sytuacji i zachowań. Jednakże doświadczenie w transponowaniu symulowanych projektów do środowiska fizycznego może zostać wykorzystane w przyszłych projektach, co z czasem zmniejszy liczbę błędów.
W rezultacie symulacja pozostaje jednym z najpotężniejszych narzędzi w arsenale inżyniera robotyki.