Przegląd systemu operacyjnego dla robotów ROS oraz najważniejsze informacje

Przegląd systemu operacyjnego ROS dla robotów i najważniejsze informacje

Cele projektowe systemu ROS

Wraz z szybkim rozwojem i rosnącą złożonością robotyki zapotrzebowanie na możliwość ponownego wykorzystania kodu oraz modułowość stało się coraz bardziej palące. Niektóre systemy robotyki typu open source miały trudności z odpowiednim zaspokojeniem tych potrzeb. W 2007 roku firma Willow Garage udostępniła na licencji open source system Robot Operating System (ROS), co szybko wywołało falę zainteresowania i wdrożeń w środowisku naukowym zajmującym się robotyką.

System ROS powstał w wyniku współpracy między projektem z 2007 roku realizowanym w Laboratorium Sztucznej Inteligencji Uniwersytetu Stanforda a programem Personal Robots Program firmy Willow Garage. Po 2008 roku prace rozwojowe przejęła firma Willow Garage. Dzięki niezwykłym osiągnięciom pierwszych robotów opartych na ROS, takich jak PR2 — obejmującym składanie ubrań, podłączanie urządzeń i przygotowywanie śniadań — system ROS zyskał coraz większe zainteresowanie. Firma Willow Garage wyraziła ambicję wykorzystania rozwoju oprogramowania open source do przekształcenia robota PR2 w robota “uniwersalnego”.

Model PR2 miał wysoką cenę – w 2011 roku kosztował $400 000. Obecnie jest wykorzystywany głównie do badań naukowych. Wyposażony w dwa ramiona, z których każde posiada siedem przegubów, PR2 posiada chwytaki jako elementy końcowe. O mobilność dbać cztery koła zamontowane na podstawie. Kamery o wysokiej rozdzielczości, dalmierze laserowe, inercyjne jednostki pomiarowe, czujniki dotykowe oraz inne zaawansowane urządzenia pomiarowe są zamontowane na głowie, klatce piersiowej, łokciach i chwytakach robota PR2. Dwa 8-rdzeniowe komputery w podstawie pełnią rolę centrum sterowania i komunikacji dla sprzętu robota. Oba komputery działają pod kontrolą systemu Ubuntu i środowiska ROS.

Cele projektowe ROS

ROS jest oprogramowaniem typu open source i pełni rolę drugorzędnego systemu operacyjnego dla robotów. Zapewnia funkcje podobne do tych, jakie pełni system operacyjny, w tym abstrakcję sprzętową, zarządzanie sterownikami niskopoziomowymi, wykonywanie funkcji współdzielonych, komunikację międzyprogramową oraz zarządzanie pakietami. Oferuje również narzędzia i biblioteki służące do pozyskiwania, tworzenia, pisania i uruchamiania programów do współpracy wielu robotów. ROS jest oprogramowaniem typu open source i pełni rolę systemu operacyjnego zaplecza lub drugorzędnego systemu operacyjnego dla robotów. Zapewnia funkcje podobne do tych oferowanych przez system operacyjny, w tym abstrakcję sprzętową, zarządzanie sterownikami niskopoziomowymi, wykonywanie funkcji współdzielonych, komunikację międzyprogramową oraz zarządzanie pakietami. Oferuje również programy użytkowe i biblioteki służące do pozyskiwania, tworzenia, pisania i uruchamiania programów współpracy wielu robotów.

Najważniejsze cechy systemu ROS

Architektura środowiska uruchomieniowego ROS to platforma przetwarzania, która wykorzystuje moduły komunikacyjne ROS do nawiązywania luźno powiązanych połączeń sieciowych typu peer-to-peer między modułami. Obsługuje ona kilka rodzajów komunikacji, w tym synchroniczną komunikację RPC (Remote Procedure Call) opartą na usługach, asynchroniczną komunikację opartą na tematach oraz przechowywanie danych na serwerze parametrów. Jednak sam system ROS z natury nie posiada możliwości działania w czasie rzeczywistym.

Najważniejsze cechy ROS można podsumować w następujący sposób:

  • Projektowanie typu peer-to-peer

System wykorzystujący ROS składa się z szeregu procesów działających na wielu odrębnych hostach i komunikujących się podczas pracy w topologii peer-to-peer. Chociaż platformy programowe oparte na serwerach centralnych również mogą zapewnić korzyści wynikające ze środowisk wieloprocesowych i wielohostowych, napotykają one problemy związane z centralnym serwerem danych, gdy komputery są połączone za pośrednictwem różnych sieci. System wykorzystujący ROS składa się z szeregu procesów działających na wielu różnych hostach i komunikujących się podczas pracy w topologii peer-to-peer. Chociaż frameworki oprogramowania oparte na serwerze centralnym również mogą zapewnić korzyści wynikające ze środowisk wieloprocesowych i wielohoistowych, w tych frameworkach pojawiają się problemy z centralnym serwerem danych, gdy komputery są połączone za pośrednictwem różnych sieci.

  • Obsługa wielu języków

Podczas pisania kodu wielu programistów ma skłonność do preferowania określonych języków programowania. Preferencje te wynikają z takich czynników, jak ilość czasu poświęcona na programowanie w każdym z języków, skuteczność debugowania, składnia, wydajność wykonywania oraz różne uwarunkowania techniczne i kulturowe. Aby rozwiązać te problemy, zaprojektowaliśmy ROS jako platformę niezależną od języka programowania. ROS obsługuje obecnie wiele różnych języków, w tym C++, Python, Octave i LISP, a także zawiera liczne implementacje interfejsów dla innych języków.

Wyjątkowość ROS przejawia się przede wszystkim w warstwie komunikacji komunikatowej, a nie na głębszych poziomach. Połączenia typu „end-to-end” oraz konfiguracje są realizowane za pomocą mechanizmu XML-RPC, który obejmuje również dobrze udokumentowane implementacje dla większości głównych języków programowania. Naszym celem jest, aby ROS był wdrażany w sposób bardziej naturalny w różnych językach, dostosowując się do ich odpowiednich konwencji składniowych, zamiast dostarczania interfejsów opartych na języku C dla innych języków. Jednak w niektórych przypadkach wygodne jest wykorzystanie istniejących bibliotek w celu zapewnienia obsługi nowych języków. Na przykład klient Octave jest zaimplementowany przy użyciu biblioteki opakowującej w języku C++.

Aby ułatwić tworzenie oprogramowania w różnych językach, ROS wykorzystuje prosty, niezależny od języka programowania język definicji interfejsów (IDL) do opisywania wymiany komunikatów między modułami. Język IDL wykorzystuje zwięzły tekst do definiowania struktury każdego komunikatu i umożliwia tworzenie komunikatów złożonych. Na przykład poniższy schemat przedstawia komunikat typu „point” opisany za pomocą języka IDL:

Generatory kodu dla każdego języka tworzą odpowiadające im pliki kodu natywnego. Podczas wysyłania i odbierania komunikatów ROS automatycznie kompiluje i wykonuje te pliki równolegle. Pozwala to znacznie zaoszczędzić czas poświęcany na programowanie i ograniczyć liczbę błędów: trzywierszowy plik IDL automatycznie rozbudowuje się do 137 wierszy kodu C++, 96 wierszy kodu Python, 81 wierszy kodu Lisp oraz 99 wierszy kodu Octave. Ponieważ komunikaty są generowane automatycznie na podstawie prostych plików tekstowych, można łatwo definiować nowe typy komunikatów. W chwili pisania tego tekstu znane biblioteki kodu oparte na ROS zawierają ponad czterysta typów komunikatów. Komunikaty te przekazują dane z czujników, umożliwiając obiektom wykrywanie otoczenia.

W rezultacie uzyskujemy obsługę komunikatów niezależną od języka, co pozwala na swobodne łączenie i dopasowywanie wielu języków.

  • Usprawnienie i integracja

Większość istniejących projektów z zakresu inżynierii oprogramowania robotycznego zawiera sterowniki i algorytmy, które można ponownie wykorzystać poza ramami danego projektu. Niestety, z różnych powodów warstwy pośrednie większości kodu są nadmiernie zagmatwane, co utrudnia wyodrębnienie ich funkcjonalności i zastosowanie ich poza etapem prototypowania.

Aby przeciwdziałać tej tendencji, zachęcamy do stopniowego przekształcania wszystkich sterowników i algorytmów w samodzielne biblioteki, niezależne od zależności ROS. Systemy oparte na ROS charakteryzują się modułowością, dzięki czemu kod w każdym module można kompilować osobno. Narzędzie CMake wykorzystywane do kompilacji ułatwia realizację koncepcji minimalizmu. ROS zasadniczo hermetyzuje złożony kod w bibliotekach, tworząc jedynie niewielkie aplikacje w celu zademonstrowania funkcjonalności bibliotek. Umożliwia to przenoszenie i ponowne wykorzystanie prostego kodu poza etap prototypowania. Dodatkową zaletą jest to, że testowanie jednostkowe staje się znacznie łatwiejsze, gdy kod jest rozdzielony między biblioteki. Pojedynczy program testowy może zweryfikować wiele funkcji w ramach jednej biblioteki.

ROS wykorzystuje kod z wielu istniejących projektów open source. Na przykład czerpie kod sterowników, sterowania ruchem i symulacji z projektu Player; algorytmy przetwarzania obrazu z OpenCV; algorytmy planowania z OpenRAVE; oraz wiele innych. W każdym z tych przypadków ROS zapewnia różnorodne opcje konfiguracyjne i ułatwia komunikację danych między komponentami oprogramowania, stosując przy tym minimalną liczbę nakładek i modyfikacji. ROS nieustannie ewoluuje dzięki wsparciu społeczności, włączając do swojego kodu źródłowego aktualizacje z innych bibliotek oprogramowania oraz poprawki aplikacji.

  • Kompleksowy zestaw narzędzi

Aby zarządzać złożonym środowiskiem programistycznym ROS, wykorzystaliśmy liczne narzędzia do kompilacji i uruchamiania różnorodnych komponentów ROS, projektując je jako jądro zamiast tworzyć rozbudowane środowisko programistyczne i uruchomieniowe. Narzędzia te obsługują różne zadania, takie jak organizowanie struktur kodu źródłowego, pobieranie i ustawianie parametrów konfiguracyjnych, wizualizacja połączeń topologicznych typu „end-to-end”, pomiar wykorzystania przepustowości, obrazowe przedstawianie danych informacyjnych oraz automatyczne generowanie dokumentacji. Chociaż przetestowaliśmy podstawowe usługi, takie jak zegar globalny i rejestrator dla modułów sterujących, nadal dążymy do modularyzacji całego kodu. Uważamy, że wszelkie straty wydajności są znacznie mniejsze niż korzyści wynikające ze stabilności i zmniejszonej złożoności zarządzania.

  • Bezpłatne i oparte na otwartym kodzie źródłowym

Cały kod źródłowy ROS jest udostępniany publicznie. Uważamy, że nieuchronnie przyczyni się to do usprawnienia debugowania na wszystkich poziomach oprogramowania ROS oraz do ciągłego korygowania błędów. Chociaż oprogramowanie niebędące oprogramowaniem typu open source, takie jak Microsoft Robotics Studio i Webots, posiada wiele godnych pochwały cech, pozostajemy przy przekonaniu, że platforma open source pozostaje niezastąpiona. Dotyczy to zwłaszcza sytuacji, w której sprzęt i oprogramowanie na wszystkich poziomach są projektowane i debugowane jednocześnie. Cały kod źródłowy ROS jest publicznie udostępniony. Uważamy, że nieuchronnie przyczyni się to do usprawnienia debugowania oprogramowania ROS na wszystkich poziomach oraz do ciągłego korygowania błędów. Chociaż oprogramowanie niebędące oprogramowaniem typu open source, takie jak Microsoft Robotics Studio i Webots, posiada również wiele godnych pochwały cech, uważamy, że platforma typu open source jest niezastąpiona. Dotyczy to zwłaszcza sytuacji, w której sprzęt i oprogramowanie na wszystkich poziomach są projektowane i debugowane jednocześnie.

Typowe modele robotów z systemem ROS dostępne na rynku

Dostępne na rynku roboty wykorzystujące ROS pokazują, w jaki sposób ta platforma typu open source wspiera różnorodne zastosowania. Na przykład, roboty mobilne takie jak TurtleBot i Husarion – roboty oparte na ROS – są szeroko wykorzystywane w edukacji i badaniach naukowych; roboty usługowe, takie jak Fetch i PR2, wyróżniają się zaawansowanymi możliwościami manipulacji i nawigacji; natomiast platformy przemysłowe, takie jak Husky firmy Clearpath, pokazują, jak system ROS można zintegrować w trudnych warunkach środowiskowych. Przykłady te odzwierciedlają elastyczność i skalowalność systemu ROS zarówno w robotyce akademickiej, jak i komercyjnej.

Poniżej przedstawiono listę reprezentatywnych czworonożnych robotów opartych na ROS, robotów kołowych opartych na ROS oraz robotów gąsienicowych opartych na ROS.

Najlepsze roboty czworonożne oparte na systemie ROS

Nazwa firmy CopmayKrajZdjęcie robotaZastosowanieOficjalna strona internetowa
Unitree RoboticsChinyUnitree Robotics edukacja, badania naukowe i zadania przemysłowehttps://www.unitree.com/go2
Boston DynamicsUSABoston DynamicsKontrola przemysłowahttps://bostondynamics.com/products/spot/

5 najlepszych robotów kołowych wykorzystujących ROS

Nazwa firmy CopmayKrajZdjęcie robotaŁadunekOficjalna strona internetowa
MiRDaniaRobot MiR600 kghttps://www.mobile-industrial-robots.com
Robotnik RobotHiszpaniaRobotnik – robot automatyki150 kghttps://bostondynamics.com/products/spot/
RobotnikHiszpania5 najlepszych robotów kołowych wykorzystujących ROS250 kg
Clearpath RoboticsKanadaClearpath Robotics100 kghttps://clearpathrobotics.com
Robot FdataChinyrobot rolniczy A0251000 kghttps://www. fdatabot.com

Najlepsze roboty z napędem gąsienicowym z integracją z ROS

Nazwa firmy CopmayKrajZdjęcie robotaZastosowanieOficjalna strona internetowa
Superdroid

Roboty

KanadaSuperdroid Robot Robot taktyczny Robot taktycznyhttps://www.superdroidrobots.com/store/tracked-robots

Szukasz rozwiązań robotycznych dostosowanych do indywidualnych potrzeb? Skontaktuj się z nami

Skontaktuj się z nami

Fdata to chiński producent robotów mobilnych. Specjalizujemy się w tworzeniu dostosowanych do indywidualnych potrzeb rozwiązań w zakresie robotów mobilnych, wspierając klientów od etapu pomysłu aż po produkcję seryjną.

Twoje indywidualne rozwiązanie w zakresie robotów mobilnych zaczyna się właśnie tutaj

Chiński producent OEM/ODM — systemy AMR i AGV, automatyzacja magazynów. Od projektowania i badań i rozwoju po dostawy na całym świecie.

  • Ponad 10 lat doświadczenia w produkcji pojazdów AMR i AGV
  • Indywidualne rozwiązania wdrożone w ponad 50 krajach
  • Bezpłatna ocena projektu i analiza zwrotu z inwestycji (ROI)
  • Inżynier odpowie w ciągu 24 godzin
Formularz kontaktowy

Specjalistka ds. robotyki w firmie FdataBot z ponad 8-letnim doświadczeniem w dziedzinie robotów mobilnych, systemów AMR/AGV, projektowania podwozi robotów oraz dostosowywania rozwiązań dla klientów OEM/ODM. Jej poradniki pomagają nabywcom z całego świata w ocenie dostawców, porównywaniu opcji technicznych oraz podejmowaniu bardziej trafnych decyzji dotyczących zaopatrzenia.

ZAPYTAJ TERAZ