Cele projektowe systemu ROS
Wraz z szybkim postępem i rosnącą złożonością robotyki, zapotrzebowanie na możliwość ponownego wykorzystania kodu i modułowość stało się coraz bardziej pilne. Niektóre systemy robotyki o otwartym kodzie źródłowym miały trudności z odpowiednim zaspokojeniem tych potrzeb. W 2007 roku firma Willow Garage wydała system operacyjny Robot Operating System (ROS), który szybko wywołał falę nauki i adopcji w społeczności badawczej robotyki.
The ROS system originated from a collaboration between a 2007 project at Stanford University’s Artificial Intelligence Laboratory and Willow Garage’s Personal Robots Program. After 2008, development was led by Willow Garage. With the remarkable feats of early ROS robots like the PR2—such as folding clothes, plugging in devices, and preparing breakfast—ROS gained increasing attention. Willow Garage expressed its ambition to leverage open-source development to transform PR2 into a “universal” robot.
PR2 came with a hefty price tag, retailing for $400,000 in 2011. It is now primarily used for research. Equipped with two arms, each featuring seven joints, PR2’s end effectors are grasping grippers. Mobility is provided by four wheels mounted on its base. High-resolution cameras, laser rangefinders, inertial measurement units, tactile sensors, and other advanced sensing equipment are mounted on the PR2’s head, chest, elbows, and grippers. Two 8-core computers at the base serve as the control and communication hub for the robot’s hardware. Both computers run Ubuntu and ROS.
Cele projektowe ROS
ROS jest oprogramowaniem typu open-source i służy jako dodatkowy system operacyjny dla robotów. Zapewnia funkcje podobne do funkcji systemu operacyjnego, w tym abstrakcję sprzętu, niskopoziomowe zarządzanie sterownikami, wykonywanie funkcji współdzielonych, przesyłanie komunikatów między programami i zarządzanie pakietami. Oferuje również narzędzia i biblioteki do pozyskiwania, budowania, pisania i uruchamiania programów współpracujących z wieloma robotami. ROS jest oprogramowaniem typu open-source i służy jako system operacyjny zaplecza lub dodatkowy system operacyjny dla robotów. Zapewnia funkcje podobne do tych w systemie operacyjnym, w tym abstrakcję sprzętu, niskopoziomowe zarządzanie sterownikami, wykonywanie funkcji współdzielonych, przesyłanie komunikatów między programami i zarządzanie pakietami. Oferuje również programy narzędziowe i biblioteki do pozyskiwania, budowania, pisania i uruchamiania programów współpracujących z wieloma robotami.
Kluczowe cechy ROS
Architektura środowiska uruchomieniowego ROS to struktura przetwarzania, która wykorzystuje moduły komunikacyjne ROS do ustanawiania luźno powiązanych połączeń sieciowych peer-to-peer między modułami. Implementuje ona kilka typów komunikacji, w tym opartą na usługach synchroniczną komunikację RPC (Remote Procedure Call), opartą na tematach asynchroniczną komunikację przepływu danych oraz przechowywanie danych na serwerze parametrów. Sam ROS nie posiada jednak z natury możliwości działania w czasie rzeczywistym.
Kluczowe cechy ROS można podsumować w następujący sposób:
-
Projektowanie peer-to-peer
System wykorzystujący ROS składa się z szeregu procesów, które istnieją na wielu różnych hostach i komunikują się podczas pracy w topologii peer-to-peer. Podczas gdy ramy oprogramowania oparte na serwerach centralnych mogą również osiągnąć zalety środowisk wieloprocesowych i wieloghostowych, ramy te napotykają problemy 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, które istnieją na wielu różnych hostach i komunikują się podczas pracy w topologii peer-to-peer. Choć frameworki programowe oparte na centralnym serwerze mogą również osiągać zalety środowisk wieloprocesowych i wieloghostowych, 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 preferuje określone języki programowania. Preferencje te wynikają z takich czynników, jak ilość czasu spędzonego na programowaniu w każdym języku, skuteczność debugowania, składnia, wydajność wykonania oraz różne względy techniczne i kulturowe. Aby rozwiązać te kwestie, zaprojektowaliśmy ROS jako platformę neutralną językowo. ROS obsługuje obecnie wiele różnych języków, w tym C++, Python, Octave i LISP, a także zawiera wiele implementacji interfejsów dla innych języków.
Wyjątkowość ROS przejawia się przede wszystkim w warstwie komunikacji komunikatów, a nie na głębszych poziomach. Połączenia end-to-end i konfiguracje są implementowane przy użyciu mechanizmu XML-RPC, który obejmuje również dobrze udokumentowane implementacje dla większości głównych języków programowania. Dążymy do tego, aby ROS był wdrażany w sposób bardziej naturalny w różnych językach, dostosowując się do ich odpowiednich konwencji składni, zamiast dostarczać interfejsy oparte na języku C dla innych języków. Jednak w niektórych przypadkach wykorzystanie istniejących bibliotek do hermetyzacji obsługi nowych języków jest wygodne. Na przykład klient Octave jest zaimplementowany przy użyciu biblioteki opakowującej C++.
To support cross-language development, ROS employs a simple, language-agnostic interface definition language (IDL) to describe message exchanges between modules. The IDL uses concise text to define each message’s structure and allows message composition. For example, the following diagram illustrates a point message described using IDL:
Generatory kodu dla każdego języka tworzą odpowiednie natywne pliki kodu. Podczas przesyłania i odbierania wiadomości ROS automatycznie kompiluje i wykonuje te pliki równolegle. Oszczędza to znaczny czas programowania i zmniejsza liczbę błędów: trzywierszowy plik IDL automatycznie rozszerza się do 137 wierszy kodu C++, 96 wierszy kodu Python, 81 wierszy kodu Lisp i 99 wierszy kodu Octave. Ponieważ komunikaty są automatycznie generowane z prostych plików tekstowych, nowe typy komunikatów można łatwo wyliczyć. W chwili pisania tego tekstu znane biblioteki kodu oparte na ROS zawierają ponad czterysta typów komunikatów. Komunikaty te przesyłają dane z czujników, umożliwiając obiektom wykrywanie ich otoczenia.
Efektem końcowym jest obsługa wiadomości niezależna od języka, co pozwala na swobodne mieszanie i dopasowywanie wielu języków.
-
Usprawnienie i integracja
Większość istniejących projektów inżynierii oprogramowania dla robotyki zawiera sterowniki i algorytmy, które mogą być ponownie wykorzystane poza projektem. Niestety, z różnych powodów, warstwy pośrednie większości kodu są zbyt niechlujne, co utrudnia wyodrębnienie ich funkcjonalności i zastosowanie ich poza prototypowaniem.
Aby przeciwdziałać temu trendowi, 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ą, w której kod w każdym module może być kompilowany oddzielnie. Narzędzie CMake używane do kompilacji ułatwia koncepcję minimalizmu. ROS zasadniczo hermetyzuje złożony kod w bibliotekach, tworząc tylko małe aplikacje demonstrujące funkcjonalność biblioteki. Pozwala to na przenoszenie prostego kodu i jego ponowne wykorzystanie poza prototypowaniem. Nową zaletą jest to, że testowanie jednostkowe staje się znacznie łatwiejsze, gdy kod jest rozproszony w bibliotekach. Pojedynczy program testowy może weryfikować wiele funkcji w bibliotece.
ROS wykorzystuje kod z wielu istniejących projektów open-source. Na przykład zapożycza kod sterownika, kontroli ruchu i symulacji z projektu Player; algorytmy wizyjne z OpenCV; algorytmy planowania z OpenRAVE; i wiele innych. W każdym przypadku ROS zapewnia różnorodne opcje konfiguracji i ułatwia komunikację danych między komponentami oprogramowania, stosując minimalne opakowania i modyfikacje. ROS stale ewoluuje dzięki utrzymaniu społeczności, włączając do swojego kodu źródłowego aktualizacje z innych bibliotek oprogramowania i poprawki aplikacji.
-
Kompleksowy zestaw narzędzi
Aby zarządzać złożoną strukturą oprogramowania ROS, wykorzystaliśmy liczne narzędzia do kompilacji i uruchamiania różnych komponentów ROS, projektując je jako jądro, a nie konstruując ogromne środowisko programistyczne i wykonawcze. 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ń topologii end-to-end, pomiar wykorzystania przepustowości, żywe przedstawianie danych informacyjnych i automatyczne generowanie dokumentacji. Chociaż przetestowaliśmy podstawowe usługi, takie jak globalny zegar i rejestrator dla modułów kontrolera, nadal dążymy do modularyzacji całego kodu. Wierzymy, że utrata wydajności jest znacznie większa niż korzyści wynikające ze stabilności i mniejszej złożoności zarządzania.
-
Darmowe i otwarte oprogramowanie
Cały kod źródłowy ROS jest publicznie dostępny. Wierzymy, że będzie to nieuchronnie promować debugowanie na wszystkich poziomach oprogramowania ROS i ciągłe poprawianie błędów. Podczas gdy oprogramowanie inne niż open-source, takie jak Microsoft Robotics Studio i Webots, posiada wiele godnych pochwały atrybutów, utrzymujemy, że platforma open-source pozostaje niezastąpiona. Jest to szczególnie prawdziwe, gdy sprzęt i oprogramowanie na wszystkich poziomach są projektowane i debugowane jednocześnie. Cały kod źródłowy ROS jest publicznie dostępny. Wierzymy, że będzie to nieuchronnie promować debugowanie na wszystkich poziomach oprogramowania ROS i ciągłe korygowanie błędów. Chociaż oprogramowanie inne niż open-source, takie jak Microsoft Robotics Studio i Webots, również posiada wiele godnych pochwały atrybutów, uważamy, że platforma open-source jest niezastąpiona. Jest to szczególnie prawdziwe, gdy sprzęt i oprogramowanie na wszystkich poziomach są projektowane i debugowane jednocześnie.
Reprezentatywne roboty typowego ROS na rynku
Reprezentatywne roboty wykorzystujące ROS na rynku pokazują, jak ta platforma open-source obsługuje różnorodne aplikacje. Na przykład, roboty mobilne such as TurtleBot and Husarion ROS bot are widely used for education and research; service robots like Fetch and PR2 highlight advanced manipulation and navigation capabilities; while industrial platforms such as Clearpath’s Husky demonstrate ROS integration in rugged environments. These examples reflect the flexibility and scalability of ROS in both academic and commercial robotics.
Poniżej wymieniono reprezentatywne czworonożne roboty ROS, kołowe roboty ROS i gąsienicowe roboty ROS.
Best Quadruped Robots Powered by ROS
| Nazwa Copmay | Kraj | Obraz robota | Zastosowanie | Oficjalna strona internetowa |
| Unitree Robotics | Chiny | ![]() |
edukacja, badania i zadania przemysłowe | https://www.unitree.com/go2 |
| Boston Dynamics | USA | ![]() |
Inspekcja przemysłowa | https://bostondynamics.com/products/spot/ |
5 najlepszych robotów kołowych wykorzystujących ROS
| Nazwa Copmay | Kraj | Obraz robota | Playload | Oficjalna strona internetowa |
| MiR | Dania | ![]() |
600 kg | https://www.mobile-industrial-robots.com |
| Robot Robotnik | Hiszpania | ![]() |
150 kg | https://bostondynamics.com/products/spot/ |
| Robotnik | Hiszpania | ![]() |
250 kg | |
| Clearpath Robotics | Kanada | ![]() |
100 kg | https://clearpathrobotics.com |
| Fdata Robot | Chiny | ![]() |
1000 KG | https://www. fdatabot.com |
Best Tracked Robots with ROS Integration
| Nazwa Copmay | Kraj | Obraz robota | Zastosowanie | Oficjalna strona internetowa |
| Superdroid
Roboty |
Kanada | ![]() |
Robot taktyczny Robot taktyczny | https://www.superdroidrobots.com/store/tracked-robots |








