Jak programować roboty Unitree w Python

Wstęp do programowania robotów Unitree w ROS z użyciem Pythona
Programowanie robotów Unitree (Go2 EDU, G1 EDU, H1/H2, Z1) w środowisku ROS2 przy użyciu Pythona to obecnie jeden z najszybszych sposobów na wprowadzenie ich w świat zaawansowanej robotyki, takiej jak autonomiczna nawigacja czy interakcja z otoczeniem Robot Operating System (ROS) to framework open-source do programowania robotów, który ułatwia zarządzanie komunikacją między komponentami, takimi jak sensory, aktuatory i algorytmy sterowania. Roboty Unitree (np. Go2 EDU, A1 EDU, Go2 EDU, G1 EDU) to popularne platformy, które wspierają integrację z ROS. Programowanie w Pythonie jest wygodne dzięki bibliotece rospy (dla ROS1) lub rclpy (dla ROS2), co pozwala na łatwe pisanie nodów, subskrybowanie tematów i publikowanie komunikatów.
Roboty Unitree Go2 EDU i G1 EDU to zaawansowane platformy: Go2 EDU to czworonożny robot z opcją onboard computing (np. Jetson Orin), a G1 EDU to humanoid z do 43 stopniami swobody. Oba wspierają integrację z ROS2 Humble poprzez CycloneDDS. Programowanie w Pythonie odbywa się za pomocą biblioteki rclpy, umożliwiając pisanie nodów, subskrybowanie tematów i publikowanie komunikatów.
Zakładane jest podstawowa wiedza o Linuxie i Pythonie. Skupiamy się na ROS2 – Humble.
Poradnik: Programowanie Unitree Go2 EDU / G1 EDU w środowisku ROS2 z bardzo prostymi przykładami w Python-ie

Fundamenty: Dlaczego ROS2 i jak się do tego zabrać?
Zanim przejdziemy do szczegółów technicznych, musisz zrozumieć, po co w ogóle używać ROS2. ROS2 (Robot Operating System 2) to nie jest system operacyjny w sensie Windows czy Linux, ale framework do komunikacji międzyprocesowej. Wyobraź sobie, że Twój robot to ciało, a ROS2 to układ nerwowy: przesyła informacje między mózgiem (algorytmy) a kończynami (silniki) i zmysłami (czujniki).
Dlaczego ROS2 Humble?
Wersja Humble Hawksbill jest wersją LTS (Long Term Support) dla Ubuntu 22.04. (wersja na luty 2026) To oznacza stabilność i wsparcie do maja 2027 roku. W świecie robotyki stabilność jest ważniejsza niż „świeżość” – nie chcesz, aby aktualizacja systemu zepsuła działającego robota w laboratorium.
Architektura komunikacji: DDS – Klej spajający Unitree z ROS2
Kluczową rzeczą, którą musisz zrozumieć, jest to, że nowe roboty Unitree (Go2, G1, H1, H2) komunikują się wewnętrznie za pomocą protokołu DDS (Data Distribution Service) . ROS2 również używa DDS jako swojego domyślnego transportu.
Co to dla Ciebie oznacza?
Nie musisz pisać skomplikowanych mostów (bridges) czy adapterów. SDK Unitree (unitree_sdk2_python) w dużej mierze „podłącza się” bezpośrednio do tego samego szyny DDS, po której jeździ ROS2. Dzięki temu:
- Węzły ROS2 mogą bezpośrednio subskrybować tematy publikowane przez oprogramowanie pokładowe robota (np. stan czujników).
- Węzły ROS2 mogą publikować komendy, które robot odbiera tak, jakby pochodziły od jego własnego kontrolera.
Twoim zadaniem jako programisty nie jest więc „podłączanie się do robota”, ale raczej „dołączenie do jego sieci wymiany danych”.
1. Przygotowanie środowiska pracy
Krok 1: Instalacja ROS2 Humble
Jest to proces czysto mechaniczny. Pamiętaj, aby zainstalować wersję ros-humble-desktop, która zawiera narzędzia wizualizacyjne (RViz2) i symulacyjne, a nie tylko wersję base.
Dlaczego? Desktopy wersja da Ci możliwość wizualizacji danych z Lidaru czy kamery od razu po instalacji.
Krok 2: Instalacja SDK Unitree
Tutaj zamiast podawać konkretną komendę git clone (która może być nieaktualna), podam Ci sposób myślenia:
- Wejdź na oficjalne konto GitHub firmy Unitree (
unitreerobotics). - Znajdź repozytorium
unitree_sdk2_python. - Sklonuj je i zainstaluj używając
pip.
Dlaczego? To SDK jest warstwą abstrakcji. Nawet jeśli w przyszłości zmienią się nazwy tematów w robocie, SDK prawdopodobnie dostanie aktualizację, która zachowa kompatybilność wsteczną, oszczędzając Ci modyfikacji kodu.
Krok 3: Przestrzeń robocza (Workspace)
Struktura folderów w ROS2 (~/ros2_ws/src, build, install, log) nie jest kaprysem. To standard, który pozwala na kompilację wielu pakietów naraz i zarządzanie zależnościami. Zawsze trzymaj się tej struktury.
2. Pierwsze kroki: Diagnostyka i zrozumienie interfejsu
Zamiast pisać kod, który szybko się zestarzeje, nauczę Cię, jak odkrywać możliwości robota.
2.1. Połączenie z siecią robota
Roboty Unitree często tworzą własną sieć Wi-Fi lub wymagają połączenia kablem ethernetowym.
- Opis: Musisz skonfigurować swój komputer tak, aby należał do tej samej podsieci co robot. Zazwyczaj robot ma adres
192.168.123.161, a Ty ustawiasz swój na np.192.168.123.50. - Diagnostyka: Użyj polecenia
ping 192.168.123.161. Jeśli nie ma odpowiedzi, problem leży po stronie sieci, a nie robota. To najczęstszy błąd początkujących.
2.2. Eksploracja tematów (Topics)
Po udanym połączeniu, nie piszemy jeszcze kodu. Uruchamiamy narzędzia ROS2, aby zobaczyć, co robot „mówi”.
bash
ros2 topic list
To polecenie zwróci listę wszystkich strumieni danych dostępnych w robocie. Zobaczysz nazwy takie jak /lowstate, /imu, /odom, /cmd_vel.
- Co to jest
/lowstate? To temat, na którym robot publikuje szczegółowe informacje o swoich silnikach (pozycja, prąd, temperatura). - Co to jest
/odom? To szacowana pozycja robota w przestrzeni (odometria).
Zadanie dla Ciebie: Aby sprawdzić, co dokładnie kryje się pod danym tematem, użyj:
bash
ros2 topic echo /imu --once
lub
bash
ros2 interface show $(ros2 topic list -t | grep /imu | cut -d' ' -f2)
Dzięki temu zobaczysz strukturę danych (pola, typy), którą musisz obsłużyć w swoim przyszłym programie.
2.3. Pierwsza komenda: Sterowanie prędkością
Zamiast pisać skrypt w Pythonie, który może być nieaktualny, naucz się wysyłać komendy z linii poleceń.
bash
ros2 topic pub /cmd_vel geometry_msgs/Twist "{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {z: 0.1}}" --once
- Dlaczego to działa? Niezależnie od modelu robota, standardem w ROS dla mobilnych platform jeżdżących (nawet tych z nogami) jest używanie tematu
/cmd_velz typem wiadomościgeometry_msgs/Twistdo zadawania prędkości. - Koncepcja: Nawet jeśli Unitree zmieni swoje wewnętrzne API, mostek (SDK) prawdopodobnie nadal będzie tłumaczył wiadomości z
/cmd_velna komendy zrozumiałe dla robota. To jest gwarancja stabilności interfejsu.
3. Symulacja – poligon doświadczalny
Symulacja to nie tylko „zabawa”. To sposób na testowanie algorytmów bez ryzyka uszkodzenia drogiego sprzętu.
Jak działa symulator?
Dobre symulatory (jak MuJoCo czy Isaac Sim) nie tylko imitują wygląd robota, ale także jego fizykę i, co najważniejsze, interfejs komunikacyjny.
- Mechanizm: Symulator uruchamia własne węzły ROS2, które publikują dokładnie te same tematy (
/imu,/odom,/joint_states), co prawdziwy robot. - Zaleta: Twój kod sterujący (np. ten, który publikuje na
/cmd_vel) nie wie, czy rozmawia z symulatorem, czy z prawdziwym robotem. Przełącznikiem jest po prostu to, czy uruchomisz symulator, czy połączysz się z fizycznym robotem.
Dlatego zamiast podawać konkretne komendy do symulatora G1, radzę:
- Poszukać w repozytoriach Unitree lub społeczności hasła „mujoco” lub „isaac sim”.
- Uruchomić symulator.
- W drugim terminalu uruchomić
ros2 topic listi upewnić się, że widzisz te same tematy, co przy prawdziwym robocie.
4. Zaawansowane zastosowania: Praca z sensorami
W tej sekcji skupimy się na tym, jak myśleć o danych z sensorów, a nie na tym, jak je dokładnie skonfigurować.
4.1. Integracja z Lidarem 3D
Lidar to czujnik, który dostarcza chmurę punktów (sensor_msgs/PointCloud2).
- Opis: Niezależnie od producenta (RoboSense, Ouster, Velodyne), sterowniki dla tych lidarów w ROS2 zostały zaprojektowane tak, aby publikować dane w tym samym, standardowym formacie.
- Jak to wykorzystać?: Jeśli chcesz, aby robot omijał przeszkody, Twój algorytm nie musi wiedzieć, że to lidar od RoboSense. On po prostu subskrybuje temat
/scanlub/pointsi analizuje odległości. - Fuzja danych: Możesz łączyć dane z lidaru z danymi z kamery, aby lepiej rozpoznawać przeszkody (np. lidar mówi „coś tam jest”, kamera mówi „to jest człowiek”).
4.2. Integracja z kamerą Intel RealSense
Kamery RGB-D, takie jak Intel RealSense, dostarczają dwóch strumieni: obrazu kolorowego (sensor_msgs/Image) i mapy głębi (sensor_msgs/Image).
- Opis: Sterownik
realsense2_camerajest oficjalny i doskonale zintegrowany z ROS2. Publikuje on obrazy na znanych tematach (/camera/color/image_raw). - Praktyczne wykorzystanie: Wyobraź sobie, że chcesz, aby robot podszedł do Ciebie.
- Węzeł AI (np. używający YOLO) subskrybuje temat
/camera/color/image_rawi wykrywa na obrazie sylwetkę człowieka. - Publikuje on pozycję człowieka w ramce obrazu.
- Drugi węzeł (kontroler) subskrybuje tę pozycję oraz temat
/camera/depth/image_raw, aby sprawdzić, jak daleko jest człowiek. - Na podstawie tych danych publikuje odpowiednią prędkość na
/cmd_vel.
- Węzeł AI (np. używający YOLO) subskrybuje temat
4.3. SLAM i Nawigacja autonomiczna (Nav2)
To szczytowe osiągnięcie w programowaniu robotów mobilnych.
- SLAM (Simultaneous Localization and Mapping): To technika, w której robot, przemieszczając się, buduje mapę otoczenia i jednocześnie określa na niej swoją pozycję. W ROS2 robi się to za pomocą pakietów takich jak
slam_toolboxlubrtabmap_ros. One przyjmują dane z lidaru (chmury punktów) i odometrii, a zwracają mapę i pozycję robota. - Nav2 (Navigation2): To stos oprogramowania, który odpowiada za planowanie trasy. Dostajesz mapę, cel i aktualną pozycję robota, a Nav2 wyznacza ścieżkę i wysyła odpowiednie komendy na
/cmd_vel, aby robot dotarł do celu, omijając przeszkody.
Jak to ugryźć?
Nie pisz własnego SLAM-u od zera. To zajęłoby zbyt dużo czasu. Zamiast tego:
- Uruchom sterownik lidaru.
- Uruchom
slam_toolboxi pozwól robotowi jeździć (ręcznie lub automatycznie), aby zbudować mapę. - Zapisz mapę.
- Uruchom
nav2_bringupz wczytaną mapą i wskaż cel w RViz2.
5. Podsumowanie i mapa drogowa
Oto jak powinna wyglądać Twoja ścieżka nauki, skoncentrowana na koncepcjach, a nie na detalach implementacji:
- Faza 0: Środowisko – Zainstaluj ROS2 Humble i Python. Naucz się poruszać po systemie plików i zarządzać pakietami.
- Faza 1: Eksploracja – Połącz się z robotem (lub symulatorem). Używaj
ros2 topic list,echo,interface showdo zrozumienia, jakie dane są dostępne. - Faza 2: Sterowanie – Naucz się ręcznie publikować na
/cmd_vel. Zobacz, jak robot reaguje. - Faza 3: Prosty węzeł w Pythonie – Napisz węzeł, który np. zapisuje dane z IMU do pliku lub publikuje stałą prędkość. Skup się na strukturze węzła (
rclpy), a nie na logice. - Faza 4: Percepcja – Uruchom sterownik kamery/lidaru. Uruchom RViz2 i zobacz te dane na żywo. To wizualne potwierdzenie, że wszystko działa, jest bezcenne.
- Faza 5: Gotowe komponenty – Uruchom gotowe pakiety do SLAM i nawigacji. Modyfikuj ich parametry, aby dopasować je do swojego robota.
Bezpieczeństwo przede wszystkim – przeczytaj, zanim uruchomisz robota
Praca z robotami mobilnymi, zwłaszcza humanoidalnymi (Unitree G1 EDU) czy czworonożnymi (Unitree Go2 EDU), niesie ze sobą ryzyko – zarówno dla sprzętu, jak i dla osób w otoczeniu. Poniższe zasady pomogą Ci uniknąć najczęstszych błędów i pracować odpowiedzialnie.
1. Symulacja to Twój poligon doświadczalny
Zanim uruchomisz jakikolwiek kod na fizycznym robocie, przetestuj go w symulacji.
W poradniku wspomnieliśmy o symulatorach takich jak MuJoCo i NVIDIA Isaac Sim. Dzięki nim możesz bezpiecznie sprawdzić, czy Twój skrypt w Pythonie poprawnie publikuje komendy na /cmd_vel (tak jak w przykładzie w sekcji 2.3), zanim robot wykona gwałtowny ruch w rzeczywistości. Pamiętaj, że Python jest językiem interpretowanym – błąd w logice może ujawnić się dopiero w trakcie działania. Symulacja pozwala go wychwycić bez ryzyka.
2. Zawsze rozumiesz kod, który uruchamiasz
Python zachęca do szybkiego prototypowania, ale nie kopiuj fragmentów kodu (w tym z tego poradnika) bez zrozumienia, co robią. Przeanalizuj każdą linijkę:
- Do jakiego tematu ROS2 się odwołujesz? (np.
/cmd_vel,/joint_states,/lowstatez sekcji 2.2) - Jakie wartości wysyłasz? Zbyt gwałtowna komenda prędkości (np.
linear.x = 1.0) może przewrócić robota. - Czy Twój kod uwzględnia ograniczenia sprzętowe (maksymalne prędkości, zakresy ruchu)?
3. Fizyczne środki bezpieczeństwa
- Dla robota Go2 EDU (czworonożny): Upewnij się, że podłoże jest równe, a w zasięgu robota nie ma przeszkód ani osób. Zawsze miej robota w polu widzenia.
- Dla robota G1 EDU (humanoidalny): Bezwzględnie stosuj uprząż lub podwieszenie podczas pierwszych testów. Upadek humanoida z wysokości może go trwale uszkodzić i stanowić zagrożenie dla otoczenia.
- Awaryjne zatrzymanie: Zawsze miej pod ręką fizyczny przycisk STOP (emergency stop) i wiedz, jak go użyć. W przypadku robota Go2 możesz też użyć aplikacji mobilnej do natychmiastowego zatrzymania.
4. Uwaga na połączenie sieciowe i WebRTC
- W trybie bezprzewodowym (WebRTC) tylko jeden klient może być połączony z robotem w danej chwili. Przed uruchomieniem swojego programu upewnij się, że aplikacja mobilna i fizyczny kontroler są rozłączone.
- Zawsze sprawdzaj połączenie komendą
ping 192.168.123.161(jak w sekcji 2.1) przed wysłaniem pierwszej komendy.
5. Testuj w izolacji – warstwa po warstwie
W Pythonie błędy mogą ujawnić się w trakcie działania, dlatego testuj stopniowo:
- Składnia – upewnij się, że kod uruchamia się bez błędów składniowych.
- Uruchomienie bez robota – obserwuj logi w konsoli, sprawdź czy węzeł poprawnie publikuje/subskrybuje (możesz użyć
ros2 topic echodo weryfikacji). - Symulacja – przetestuj logikę sterowania w MuJoCo lub Isaac Sim.
- Testy na fizycznym robocie – zacznij od małych, bezpiecznych wartości (np. prędkość liniowa 0,1 m/s jak w przykładzie
ros2 topic pub), trzymając palec na przycisku STOP.
6. Bądź na bieżąco z dokumentacją
Środowisko ROS2 i SDK Unitree ewoluują. To, co działa dziś, może być niekompatybilne z jutrzejszą aktualizacją oprogramowania robota. Zawsze sprawdzaj oficjalne repozytoria GitHub Unitree (unitreerobotics) i daty publikacji przykładów. W przypadku Pythona kluczowe jest repozytorium unitree_sdk2_python (wspomniane w sekcji 1, krok 2).
7. Szczególne wyzwania języka Python
- Wydajność: Python jest wolniejszy od C++. Upewnij się, że Twoje pętle sterowania nie mają zbyt dużych opóźnień (sprawdź częstotliwość publikowania komend).
- Zarządzanie zasobami: Python sam zarządza pamięcią, ale pamiętaj o zamykaniu wątków i węzłów po zakończeniu pracy.
- Wyjątki: Nie pozwól, by nieobsłużony wyjątek zakończył węzeł w krytycznym momencie – stosuj bloki
try-except. - Wątki: Węzły ROS2 w Pythonie domyślnie działają w jednym wątku – jeśli potrzebujesz współbieżności, korzystaj z
MultiThreadedExecutor.
Pamiętaj: W robotyce nie ma miejsca na pochopne eksperymenty. Każda komenda wysłana do robota ma fizyczne konsekwencje. Bezpieczeństwo zależy od Ciebie.
FAQ – Programowanie robotów Unitree w Pythonie (ROS2 Humble)
1. Podstawy i pierwsze kroki
P: Czy muszę mieć fizycznego robota, aby rozpocząć naukę?
O: Absolutnie nie! Zdecydowanie zalecamy rozpoczęcie od symulacji. Możesz użyć MuJoCo lub NVIDIA Isaac Sim, które doskonale odwzorowują interfejsy ROS2. Twój kod w Pythonie będzie działał tak samo z symulatorem, jak i z prawdziwym robotem. To najbezpieczniejsza i najtańsza metoda nauki.
P: Jaka jest różnica między ROS2 Humble a innymi dystrybucjami (np. Galactic, Rolling)?
O: ROS2 Humble jest wersją LTS (Long Term Support) dla Ubuntu 22.04, wspieraną do maja 2027 roku. Zapewnia stabilność i długoterminowe wsparcie, co jest kluczowe w projektach badawczych i przemysłowych. Inne dystrybucje mają krótszy cykl życia lub są wersjami rolling (ciągle aktualizowanymi), co może prowadzić do niekompatybilności w trakcie trwania projektu.
P: Gdzie znajdę oficjalne SDK Unitree dla Pythona?
O: Oficjalne repozytorium znajduje się na GitHubie pod adresem: https://github.com/unitreerobotics/unitree_sdk2_python. Zawsze korzystaj z tej lokalizacji, aby mieć pewność, że pobierasz aktualną i bezpieczną wersję. Unikaj forków i nieoficjalnych źródeł.
2. Instalacja i konfiguracja
P: Podczas instalacji unitree_sdk2_python pojawia się błąd. Co robić?
O: Najczęstsze problemy to:
- Brak zależności: Upewnij się, że masz zainstalowane
python3-piporazpython3-venv. - Konflikt wersji: Zainstaluj SDK w czystym środowisku wirtualnym Pythona.
- Niewłaściwa wersja ROS2: Potwierdź, że używasz ROS2 Humble (sprawdź komendą
printenv | grep ROS).
Jeśli problem nie ustępuje, sprawdź „Issues” w oficjalnym repozytorium GitHub – społeczność często raportuje i rozwiązuje typowe problemy.
P: Mój komputer nie widzi robota po podłączeniu kablem Ethernet.
O: Wykonaj kolejno:
- Sprawdź połączenie:
ping 192.168.123.161. - Jeśli brak odpowiedzi, skonfiguruj statyczne IP w swoim komputerze na adres z tej samej podsieci, np.
192.168.123.50, maska255.255.255.0. - Wyłącz zapory sieciowe (firewall), które mogą blokować komunikację.
- Upewnij się, że kabel jest sprawny (test na innym urządzeniu).
P: Jak połączyć się z robotem przez Wi-Fi/WebRTC?
O: Roboty Unitree (zwłaszcza Go2) tworzą własną sieć Wi-Fi. Połącz się z nią jak z każdą inną siecią bezprzewodową. Pamiętaj jednak, że w trybie WebRTC może być podłączony tylko jeden klient naraz. Przed uruchomieniem swojego skryptu rozłącz aplikację mobilną i wyłącz fizyczny kontroler.
3. Programowanie i debugowanie
P: Mój węzeł publikuje na /cmd_vel, ale robot nie reaguje. Dlaczego?
O: Sprawdź kolejno:
- Czy robot jest w trybie gotowości (często wymaga przytrzymania przycisku zasilania)?
- Czy temat istnieje? Użyj
ros2 topic list | grep cmd_vel. - Czy Twoje wiadomości są prawidłowe? Podejrzyj je komendą
ros2 topic echo /cmd_velw innym terminalu. - Czy nie ma konfliktu DDS? Spróbuj
export ROS_DOMAIN_ID=42przed uruchomieniem węzła.
P: Jak sprawdzić, jakie dane publikuje robot?
O: Użyj potężnych narzędzi ROS2:
ros2 topic list– pokazuje wszystkie dostępne tematy.ros2 topic echo /nazwa_tematu– wyświetla dane na żywo.ros2 topic info /nazwa_tematu– pokazuje typ wiadomości i liczbę prenumeratorów/wydawców.ros2 interface show typ/wiadomosci– pokazuje strukturę wiadomości (np.ros2 interface show geometry_msgs/msg/Twist).
P: Dlaczego mój skrypt w Pythonie działa wolno i robot szarpie?
O: Python nie jest językiem czasu rzeczywistego. Przyczyny:
- Zbyt wolna pętla sterowania: Upewnij się, że Twój timer jest ustawiony na odpowiednią częstotliwość (np. 10-50 Hz, nie 1000 Hz).
- Blokujące operacje: Unikaj wewnątrz callbacków czasochłonnych operacji (np. zapis do pliku, złożone obliczenia). Jeśli są niezbędne, rozważ użycie
MultiThreadedExecutordo uruchomienia ich w osobnym wątku. - Problem z wydajnością komputera: Sprawdź obciążenie CPU – onboard computing (np. Jetson Orin) ma ograniczone zasoby.
4. Sensory i zaawansowane funkcje
P: Jak odebrać dane z lidaru w Pythonie?
O: Po uruchomieniu sterownika lidaru (zgodnie z jego dokumentacją), dane są publikowane na standardowym temacie, najczęściej /scan (dla danych 2D) lub /points (dla chmury punktów 3D). W swoim węźle zasubskrybuj ten temat używając odpowiedniego typu wiadomości:
- Dla skanów laserowych:
sensor_msgs.msg.LaserScan. - Dla chmur punktów:
sensor_msgs.msg.PointCloud2(przetwarzanie wymaga bibliotekisensor_msgs_py.point_cloud2).
P: Czy mogę użyć OpenCV do przetwarzania obrazu z kamery RealSense?
O: Tak, to standardowe podejście. Zainstaluj cv_bridge (sudo apt install ros-humble-cv-bridge) i w callbacku obrazu:
python
from cv_bridge import CvBridge self.bridge = CvBridge() # w callbacku: cv_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8') # Teraz cv_image to obiekt numpy, który możesz przetwarzać OpenCV
P: Gdzie znajdę gotowe przykłady SLAM i Nawigacji dla Go2 w Pythonie?
O: Polecamy repozytoria społeczności, ale zawsze z ostrożnością. Szukaj haseł „unitree go2 slam nav2 python” na GitHubie. Zwracaj uwagę na datę ostatniego commita i sekcję „Issues” – to powie Ci, czy kod jest aktualny i działa. Przykładowo, repozytorium snt-arg/unitree_ros może zawierać przydatne pakiety startowe.
5. Bezpieczeństwo i dobre praktyki
P: Co zrobić, gdy robot zachowuje się nieprzewidywalnie?
O: Przede wszystkim zachowaj spokój.
- Natychmiast naciśnij fizyczny przycisk STOP (emergency stop).
- Jeśli to niemożliwe, w aplikacji mobilnej (dla Go2) jest wirtualny przycisk awaryjnego zatrzymania.
- Przeanalizuj logi – uruchom ponownie swój węzeł z poziomem debugowania:
ros2 run ... --ros-args --log-level debug. - Sprawdź, czy nie doszło do konfliktu DDS (patrz punkt 3).
P: Czy kod z tego poradnika jest bezpieczny do skopiowania i uruchomienia?
O: Przedstawione fragmenty kodu mają charakter edukacyjny i poglądowy. Zawsze przed uruchomieniem:
- Przeanalizuj każdą linijkę i zrozum jej działanie.
- Dostosuj nazwy tematów i typy wiadomości do swojej wersji SDK.
- Przetestuj najpierw w symulacji.
- Zacznij od bardzo małych, bezpiecznych wartości (np. prędkość 0.1 m/s).
Pamiętaj, że odpowiedzialność za działanie kodu na fizycznym robocie spoczywa na Tobie.
P: Gdzie szukać pomocy, gdy utknę?
O: Oto najlepsze źródła:
- Oficjalna dokumentacja Unitree: https://support.unitree.com/ – zawsze punkt wyjścia.
- Repozytoria GitHub Unitree: https://github.com/unitreerobotics – sprawdzaj README i Issues.
- Forum ROS2: https://discourse.ros.org/ – społeczność ROS jest ogromna i pomocna.
- GitHub – szukanie po hasłach: „unitree ros2 python”, „go2 slam”, itp.
