ROS 2 w robotyce – czym jest i jak działa?

ROS 2 jest otwartym środowiskiem programistycznym wykorzystywanym do tworzenia złożonych systemów robotycznych. Ułatwia komunikację pomiędzy czujnikami, napędami, kamerami, manipulatorami oraz modułami odpowiedzialnymi za nawigację, przetwarzanie danych i podejmowanie decyzji. Dzięki modularnej architekturze poszczególne funkcje robota mogą być rozwijane, testowane i aktualizowane niezależnie.

Czym jest ROS 2?

ROS 2, czyli Robot Operating System 2, nie jest klasycznym systemem operacyjnym. Jest zbiorem bibliotek, narzędzi i mechanizmów komunikacyjnych, które wspierają tworzenie oprogramowania dla robotów. Środowisko pozwala podzielić rozbudowany system na mniejsze komponenty, nazywane węzłami, oraz uporządkować wymianę danych pomiędzy nimi.

W praktyce jeden węzeł może odbierać dane z kamery, drugi analizować obraz, trzeci planować trasę, a kolejny wysyłać polecenia do napędów. Takie podejście upraszcza rozwój projektu i umożliwia niezależne testowanie poszczególnych funkcji.

Najważniejsze elementy środowiska ROS 2

Element ROS 2 Do czego służy
Węzeł Realizuje określoną funkcję, na przykład odczyt obrazu z kamery, analizę danych lub sterowanie napędem.
Temat Umożliwia ciągłe przesyłanie danych pomiędzy węzłami, na przykład obrazu, pozycji robota lub odczytów z czujników.
Usługa Obsługuje krótkie zapytanie i odpowiedź, gdy jedna część systemu potrzebuje konkretnej informacji lub wykonania pojedynczej operacji.
Akcja Służy do realizacji dłuższych zadań z możliwością śledzenia postępu oraz przerwania działania.
Parametr Pozwala zmieniać ustawienia pracy węzła bez konieczności modyfikowania kodu źródłowego.
DDS Stanowi warstwę komunikacyjną odpowiedzialną za wymianę danych pomiędzy komponentami systemu ROS 2.
rosbag Umożliwia nagrywanie danych przesyłanych w systemie i ich późniejsze odtwarzanie podczas analizy lub testów.
RViz Służy do wizualizacji danych z robota, czujników, kamer, map i modeli przestrzennych.
Gazebo Pozwala testować zachowanie robota w środowisku symulacyjnym przed uruchomieniem programu na fizycznym urządzeniu.

Dlaczego powstał ROS 2?

ROS 2 został opracowany jako rozwinięcie wcześniejszego środowiska ROS, aby lepiej odpowiadać na wymagania nowoczesnych systemów robotycznych. W praktycznych wdrożeniach coraz częściej potrzebna jest komunikacja pomiędzy wieloma komputerami, praca w sieciach o zmiennej jakości, obsługa systemów czasu rzeczywistego, większe bezpieczeństwo oraz możliwość skalowania projektu od pojedynczego robota do całej floty urządzeń.

W ROS 2 poszczególne węzły mogą działać na różnych komputerach pokładowych, sterownikach i urządzeniach połączonych siecią. Dzięki temu architektura może być rozwijana modułowo, a kolejne funkcje mogą być dodawane bez konieczności przebudowy całego systemu.

Najważniejsze różnice między ROS 1 i ROS 2

Obszar ROS 1 ROS 2
Komunikacja Wykorzystuje centralny ROS Master do wykrywania węzłów. Stosuje rozproszone wykrywanie komponentów bez jednego centralnego punktu.
Warstwa transportowa Korzysta z mechanizmów komunikacyjnych opracowanych dla ROS. Wykorzystuje middleware oparte m.in. na standardzie DDS.
Systemy rozproszone Najlepiej sprawdza się w prostszych sieciach lokalnych. Jest lepiej przygotowany do pracy na wielu komputerach i urządzeniach.
Jakość komunikacji Ma ograniczone możliwości konfiguracji sposobu przesyłania danych. Pozwala stosować profile QoS dostosowane do rodzaju danych i jakości sieci.
Bezpieczeństwo Oferuje ograniczone mechanizmy ochrony komunikacji. Może wykorzystywać uwierzytelnianie, kontrolę dostępu i szyfrowanie.
Czas rzeczywisty Ma ograniczone możliwości budowy systemów czasu rzeczywistego. Jest lepiej przygotowany do projektów wymagających przewidywalnych opóźnień.
Obsługiwane platformy Najczęściej wykorzystywany jest w systemach Linux. Obsługuje Linux, Windows i macOS.
Skalowanie Jest często stosowany w pojedynczych robotach i projektach badawczych. Może być wykorzystywany w robotach, systemach wielokomputerowych i flotach urządzeń.

ROS 2 nie gwarantuje automatycznie niezawodności ani pracy w czasie rzeczywistym. Ostateczne działanie systemu zależy również od konfiguracji sieci, wybranego middleware, parametrów QoS, wydajności komputerów oraz jakości przygotowanego oprogramowania.

Jak działa komunikacja w ROS 2?

Komunikacja w ROS 2 została zaprojektowana tak, aby poszczególne elementy systemu mogły wymieniać dane w sposób uporządkowany i niezależny od miejsca, w którym działają. Węzły mogą być uruchomione na jednym komputerze pokładowym, na kilku urządzeniach połączonych siecią albo w rozproszonym środowisku obejmującym robota, serwer i stanowisko operatorskie.

Dobór właściwego mechanizmu komunikacji zależy od rodzaju zadania. Dane ciągłe, takie jak obraz z kamery lub odczyty z czujników, są najczęściej przesyłane za pomocą tematów. Krótkie operacje wymagające odpowiedzi wykorzystują usługi, natomiast dłuższe zadania, takie jak przejazd do wskazanego punktu, mogą być realizowane jako akcje.

Tematy, usługi i akcje na przykładzie robota

Mechanizm Przykład zastosowania Sposób działania
Temat Przesyłanie obrazu z kamery, danych z LiDAR-u lub pozycji robota. Dane są publikowane w sposób ciągły, a zainteresowane węzły mogą je odbierać.
Usługa Sprawdzenie stanu urządzenia, zmiana trybu pracy lub wykonanie pojedynczej operacji. Jeden węzeł wysyła zapytanie, a drugi zwraca odpowiedź.
Akcja Przejazd robota do celu, wykonanie sekwencji ruchów lub obsługa manipulatora. Zadanie może trwać dłużej, przekazywać informacje o postępie i zostać przerwane.
Parametr Zmiana prędkości robota, częstotliwości odczytu czujnika lub czułości algorytmu. Wartość konfiguracyjna może zostać zmieniona bez edycji kodu źródłowego.

Taki podział pozwala dopasować sposób komunikacji do charakteru danych i zadania. Dzięki temu strumień obrazu nie jest obsługiwany w taki sam sposób jak pojedyncze polecenie zmiany ustawienia, a długotrwałe zadanie może przekazywać informację o postępie i zostać bezpiecznie anulowane.

Czym jest DDS i QoS w ROS 2?

DDS, czyli Data Distribution Service, stanowi warstwę komunikacyjną wykorzystywaną przez ROS 2 do wykrywania komponentów, przesyłania danych oraz zarządzania komunikacją w systemach rozproszonych. Dzięki temu węzły mogą odnajdywać się automatycznie i wymieniać informacje bez konieczności korzystania z jednego centralnego serwera.

Ważnym elementem tej komunikacji są ustawienia QoS, czyli Quality of Service. Pozwalają one określić, w jaki sposób dane mają być przesyłane, buforowane i ewentualnie ponawiane. Innych ustawień wymaga strumień obrazu z kamery, a innych polecenie sterujące, które nie powinno zostać utracone. Oficjalna dokumentacja ROS 2 wskazuje, że zgodność ustawień QoS wydawcy i odbiorcy ma bezpośredni wpływ na możliwość ustanowienia komunikacji.

Najważniejsze ustawienia QoS

Ustawienie QoS Znaczenie Przykład zastosowania
Reliability Określa, czy system ma próbować dostarczyć każdą wiadomość, czy może zaakceptować utratę części danych. Dane sterujące mogą wymagać trybu Reliable, natomiast obraz z kamery może korzystać z Best Effort.
Durability Decyduje, czy nowy odbiorca może otrzymać także dane opublikowane przed jego uruchomieniem. Przydatne przy mapach, konfiguracji lub stanie systemu, który powinien być dostępny od razu po połączeniu.
History Określa sposób przechowywania wiadomości oczekujących na odebranie. Można zachowywać tylko określoną liczbę ostatnich komunikatów albo całą dostępną historię.
Depth Ustala maksymalną liczbę wiadomości przechowywanych w kolejce. Chroni system przed nadmiernym zużyciem pamięci, gdy odbiorca przetwarza dane wolniej niż wydawca je publikuje.
Deadline Określa oczekiwany maksymalny czas pomiędzy kolejnymi wiadomościami. Może służyć do wykrywania braku danych z czujnika lub przerwania komunikacji.
Lifespan Określa, jak długo wiadomość pozostaje ważna. Stare dane lokalizacyjne lub sterujące mogą zostać automatycznie uznane za nieaktualne.
Liveliness Pozwala sprawdzić, czy wydawca nadal działa i jest dostępny. Może być wykorzystywane do nadzorowania modułów sterowania i bezpieczeństwa.

Nie istnieje jeden uniwersalny profil QoS odpowiedni dla wszystkich danych. W praktyce ustawienia powinny być dobierane do częstotliwości transmisji, znaczenia wiadomości, jakości sieci oraz dopuszczalnych opóźnień. Niekompatybilne profile QoS mogą sprawić, że wydawca i odbiorca nie nawiążą komunikacji, mimo że działają w tej samej sieci ROS 2.

ROS 2 w praktycznych zastosowaniach robotycznych

ROS 2 może być wykorzystywany w wielu typach robotów, ponieważ pozwala łączyć czujniki, systemy sterowania, algorytmy nawigacyjne, manipulatory oraz aplikacje użytkownika w jedną modularną architekturę. Poszczególne funkcje mogą być uruchamiane na jednym komputerze pokładowym albo rozdzielone pomiędzy kilka urządzeń połączonych siecią.

W praktyce ROS 2 jest wykorzystywany zarówno w projektach badawczych i edukacyjnych, jak również w robotach mobilnych, humanoidalnych, przemysłowych, usługowych i inspekcyjnych. Gotowe projekty takie jak Navigation2, MoveIt oraz ros2_control ułatwiają budowę systemów nawigacji, manipulacji i sterowania robotami.

Przykłady zastosowania ROS 2

Rodzaj robota Przykładowe zastosowanie ROS 2 Obsługiwane funkcje
Robot mobilny AMR Autonomiczny transport materiałów w magazynie lub zakładzie produkcyjnym. Lokalizacja, mapowanie, planowanie trasy, omijanie przeszkód i zarządzanie zadaniami.
Robot humanoidalny Badania, edukacja, prezentacje, manipulacja przedmiotami i interakcja z otoczeniem. Sterowanie ruchem, przetwarzanie obrazu, obsługa manipulatorów, komunikacja głosowa i integracja AI.
Robot przemysłowy Obsługa maszyn, przenoszenie elementów, kontrola jakości i automatyzacja stanowisk. Planowanie ruchu, sterowanie osiami, systemy wizyjne, chwytaki oraz komunikacja z systemami nadrzędnymi.
Robot czworonożny Inspekcja obiektów, patrolowanie, zbieranie danych i praca w trudnym terenie. Nawigacja, analiza danych z LiDAR-u i kamer, budowa map oraz transmisja danych diagnostycznych.
Robot usługowy Dostarczanie przedmiotów, obsługa klientów, prezentacja informacji i praca w budynkach publicznych. Nawigacja wewnętrzna, interfejs użytkownika, zarządzanie zadaniami i integracja z systemami budynkowymi.
Robot edukacyjny Nauka programowania, automatyki, sztucznej inteligencji i systemów autonomicznych. Eksperymenty z czujnikami, komunikacją, ROS 2, Pythonem, systemami wizyjnymi i planowaniem ruchu.

Zakres wykorzystania ROS 2 zależy od tego, jakie interfejsy udostępnia producent danego robota. Nie każde urządzenie daje użytkownikowi dostęp do wszystkich funkcji sterowania, dlatego przed rozpoczęciem projektu należy sprawdzić dostępność SDK, dokumentacji, sterowników ROS 2 oraz możliwość komunikacji z czujnikami i napędami.

Jakie narzędzia współpracują z ROS 2?

ROS 2 jest rozwijany jako rozbudowany ekosystem narzędzi, bibliotek i projektów wspierających budowę systemów robotycznych. Poszczególne komponenty mogą odpowiadać za wizualizację danych, symulację, nawigację, sterowanie manipulatorami, rejestrowanie informacji diagnostycznych albo zarządzanie sprzętem.

Dobór narzędzi zależy od rodzaju robota i celu projektu. Inne elementy będą potrzebne przy autonomicznym robocie mobilnym, inne przy manipulatorze przemysłowym, a jeszcze inne podczas budowy systemu wizyjnego lub projektu edukacyjnego.

Najważniejsze narzędzia i projekty powiązane z ROS 2

Narzędzie Zastosowanie Przykład użycia
RViz Wizualizacja danych 3D pochodzących z robota i jego czujników. Podgląd mapy, pozycji robota, chmury punktów LiDAR, trajektorii oraz modelu robota.
Gazebo Symulacja robotów, czujników, napędów i środowiska z uwzględnieniem fizyki. Testowanie sterowania i zachowania robota przed uruchomieniem kodu na fizycznym urządzeniu.
Navigation2 Autonomiczna nawigacja robotów mobilnych. Planowanie trasy, omijanie przeszkód, lokalizacja i dojazd do wskazanego celu.
MoveIt 2 Planowanie ruchu manipulatorów i robotów wieloosiowych. Wyznaczanie trajektorii ramienia, unikanie kolizji i sterowanie chwytakiem.
ros2_control Warstwa sterowania sprzętem, napędami i kontrolerami robota. Obsługa silników, osi, manipulatorów, robotów mobilnych i urządzeń wykonawczych.
rosbag2 Nagrywanie i późniejsze odtwarzanie danych z systemu ROS 2. Rejestrowanie obrazu, danych z czujników, tematów i usług podczas testów.
RQt Zestaw graficznych narzędzi diagnostycznych i konfiguracyjnych. Podgląd tematów, parametrów, logów, wykresów i struktury komunikacji.
colcon Budowanie i organizowanie pakietów ROS 2. Kompilowanie przestrzeni roboczej i przygotowanie własnych pakietów programistycznych.

Narzędzia te mogą być używane niezależnie lub łączone w jeden system. Przykładowo robot mobilny może wykorzystywać Navigation2 do planowania trasy, RViz do wizualizacji mapy, rosbag2 do rejestrowania danych oraz ros2_control do komunikacji z napędami. ROS 2 zapewnia w takim układzie wspólną strukturę komunikacji pomiędzy poszczególnymi modułami.

RViz jest oficjalnym narzędziem do wizualizacji danych 3D, rosbag2 służy do rejestrowania i odtwarzania danych, natomiast Navigation2, MoveIt 2 i ros2_control są rozwijanymi projektami społeczności ROS 2 wspierającymi odpowiednio nawigację, manipulację i sterowanie sprzętem.

Jak zacząć pracę z ROS 2?

Rozpoczęcie pracy z ROS 2 wymaga przede wszystkim wyboru odpowiedniej dystrybucji, przygotowania systemu operacyjnego oraz poznania podstawowych narzędzi wiersza poleceń. ROS 2 może być instalowany z gotowych pakietów binarnych albo budowany ze źródeł. Dla początkujących najwygodniejsze jest korzystanie z oficjalnie wspieranej wersji systemu i gotowych pakietów instalacyjnych. Oficjalna dokumentacja ROS 2 zawiera osobne instrukcje dla poszczególnych dystrybucji i systemów operacyjnych.

Następnie warto przejść przez podstawowe tutoriale w zalecanej kolejności. Obejmują one tworzenie przestrzeni roboczej, budowę pakietów, uruchamianie węzłów oraz przygotowanie prostego wydawcy i odbiorcy w Pythonie lub C++. Takie podejście pozwala zrozumieć architekturę ROS 2 przed przejściem do bardziej złożonych projektów.

Proponowana kolejność nauki

Dobrym pierwszym projektem jest stworzenie dwóch prostych węzłów: jeden publikuje dane, a drugi je odbiera. Pozwala to poznać mechanizm komunikacji oraz sprawdzić działanie środowiska bez konieczności korzystania z fizycznego robota. Oficjalne tutoriale ROS 2 prowadzą użytkownika właśnie przez tworzenie pakietów, wydawców, odbiorców, usług i klientów.

Python czy C++ w ROS 2?

ROS 2 oficjalnie wspiera tworzenie pakietów zarówno w Pythonie, jak i w C++. Python jest często wybierany do nauki, szybkiego prototypowania, obsługi danych oraz integracji z algorytmami sztucznej inteligencji. C++ sprawdza się szczególnie tam, gdzie wymagane są większa wydajność, mniejsze opóźnienia i bardziej przewidywalne działanie systemu. W praktyce oba języki mogą być wykorzystywane w jednym projekcie.
Osoby rozpoczynające pracę z Pythonem mogą również przeczytać poradnik: Programowanie robotów w Pythonie – od czego zacząć?

Najczęstsze problemy podczas pracy z ROS 2

Problemy podczas pracy z ROS 2 często nie wynikają bezpośrednio z błędów w kodzie. Ich przyczyną mogą być również nieprawidłowo skonfigurowane środowisko, brak wymaganych zależności, niezgodne ustawienia QoS, problemy z siecią albo niewłaściwie zbudowana przestrzeń robocza. Dlatego diagnostykę warto rozpoczynać od sprawdzenia konfiguracji systemu, a dopiero później analizować działanie poszczególnych węzłów.

Typowe źródła problemów

Konfiguracja środowiska wymaga załadowania odpowiednich plików setup, a przestrzenie robocze ROS 2 są zwykle organizowane jako warstwa podstawowa i nakładka. Węzły odnajdują się automatycznie tylko wtedy, gdy działają w zgodnym środowisku sieciowym i domenie ROS.

Jak diagnozować błędy?

Diagnozowanie problemów najlepiej prowadzić etapami. Najpierw należy sprawdzić, czy środowisko ROS 2 zostało poprawnie załadowane, następnie zweryfikować dostępność węzłów, tematów i usług, a dopiero później analizować dane przesyłane pomiędzy komponentami. Przydatne są polecenia wiersza poleceń, narzędzia RQt, wizualizacja w RViz oraz rejestrowanie danych przy użyciu rosbag2.

Oficjalna dokumentacja potwierdza, że niezgodne ustawienia QoS mogą uniemożliwić połączenie między węzłami, natomiast problemy sieciowe mogą wynikać m.in. z konfiguracji multicastu i wykrywania DDS.

Bezpieczeństwo i ograniczenia ROS 2 w rzeczywistych wdrożeniach

ROS 2 zapewnia rozbudowane mechanizmy komunikacji i konfiguracji, jednak samo użycie tego środowiska nie gwarantuje bezpieczeństwa całego systemu robotycznego. Wdrożenie w rzeczywistym obiekcie wymaga uwzględnienia niezawodności sieci, kontroli dostępu, aktualizacji oprogramowania, zabezpieczenia połączeń oraz sposobu reagowania na błędy i utratę komunikacji.

W zastosowaniach przemysłowych, usługowych i mobilnych konieczne jest również oddzielenie warstwy wysokopoziomowego sterowania od funkcji bezpieczeństwa. Zatrzymanie awaryjne, ograniczenia prędkości, kontrola stref pracy i nadzór nad napędami powinny być realizowane przez rozwiązania zaprojektowane specjalnie do tego celu.

Najważniejsze obszary bezpieczeństwa

Ograniczenia, o których trzeba pamiętać

ROS 2 jest elastycznym środowiskiem, ale wymaga właściwej konfiguracji i doświadczenia. System może być rozbudowany, a liczba zależności szybko rośnie wraz z kolejnymi funkcjami robota. W praktyce konieczne jest zarządzanie wersjami pakietów, testowanie kompatybilności oraz dokumentowanie konfiguracji.

Trzeba również pamiętać, że nie każdy producent udostępnia pełny dostęp do napędów, czujników i funkcji sterowania. Dostępność sterowników ROS 2, SDK i dokumentacji technicznej powinna być sprawdzona jeszcze przed wyborem robota do projektu.

Podsumowanie

ROS 2 jest jednym z najważniejszych środowisk wykorzystywanych do budowy nowoczesnych systemów robotycznych. Umożliwia modularne projektowanie oprogramowania, komunikację pomiędzy wieloma komponentami oraz integrację czujników, napędów, systemów wizyjnych, algorytmów nawigacyjnych i narzędzi diagnostycznych.

Największą wartością ROS 2 jest możliwość rozwijania złożonych projektów etapami. Węzły mogą być testowane niezależnie, dane mogą być rejestrowane i analizowane, a cały system może działać na jednym lub wielu komputerach. Jednocześnie skuteczne wdrożenie wymaga prawidłowej konfiguracji sieci, QoS, bezpieczeństwa i kompatybilności oprogramowania.

Dla osób rozpoczynających naukę najlepszym podejściem jest rozpoczęcie od prostych przykładów komunikacji, a następnie stopniowe przechodzenie do symulacji, nawigacji, manipulacji i pracy z fizycznym robotem.

Najczęściej zadawane pytania o ROS 2

Czy ROS 2 jest systemem operacyjnym?

Nie. Pomimo nazwy Robot Operating System, ROS 2 nie jest klasycznym systemem operacyjnym. Jest środowiskiem programistycznym obejmującym biblioteki, narzędzia, mechanizmy komunikacji oraz standardy wykorzystywane do tworzenia oprogramowania dla robotów.

Nie. Podstawowe zagadnienia można poznawać na komputerze, korzystając z prostych węzłów, wizualizacji oraz symulatora. Fizyczny robot staje się potrzebny dopiero podczas testowania rzeczywistych napędów, czujników, opóźnień sieciowych i reakcji urządzenia na polecenia.

Nie. Współpraca zależy od tego, czy producent udostępnia odpowiednie sterowniki, SDK, API lub dokumentację. Przed zakupem robota warto sprawdzić, do jakich czujników, napędów i funkcji użytkownik otrzymuje dostęp.

ROS 2 może być wykorzystywany w projektach przemysłowych, jednak wdrożenie wymaga odpowiedniej architektury, testów, zabezpieczeń i integracji z systemami bezpieczeństwa. Nie powinien samodzielnie zastępować certyfikowanych funkcji zatrzymania awaryjnego i ochrony operatora.

Temat jest wykorzystywany do ciągłego przesyłania danych, usługa do krótkiego zapytania i odpowiedzi, natomiast akcja do dłuższego zadania, którego postęp może być monitorowany, a wykonanie przerwane.

Najlepiej wybrać stabilną dystrybucję z długim okresem wsparcia, zgodną z używanym systemem operacyjnym oraz sterownikami robota. Wybór powinien być sprawdzony w dokumentacji producenta urządzenia i bibliotek, które będą wykorzystywane w projekcie.

Potrzebujesz robota z dostępem do ROS 2 i otwartego SDK?

LEDIO Robotics wspiera firmy, szkoły, uczelnie i zespoły badawcze w doborze robotów wyposażonych w otwarte środowisko programistyczne, ROS 2, SDK oraz narzędzia umożliwiające tworzenie własnych aplikacji. Pomagamy również w wyborze konfiguracji, przygotowaniu stanowiska, szkoleniu użytkowników i planowaniu wdrożenia.