$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
1. Konfiguracja środowiska oprogramowania
Jako główna platforma deweloperska do implementacji systemów samolokalizacji podwodnych zastosowano stację roboczą opartą na Linuksie z systemem Ubuntu 20.04 i systemem operacyjnym dla robotów (ROS) Noetic17. System został zainicjowany przez utworzenie obszaru roboczego catkin z poleceniem mkdir -p ~/catkin_ws/src, a następnie zainicjowanie go poleceniem catkin_init_workspace. Pakiety uuv_simulator i aruco_ros zostały skopiowane do katalogu źródłowego i skompilowane za pomocą polecenia catkin_make w celu wsparcia modelowania interwencji podwodnych.
Połączenie między środowiskiem ROS a symulatorem Gazebo 9 zostało zweryfikowane poprzez uruchomienie domyślnego świata podwodnego i potwierdzenie aktywnej komunikacji za pomocą polecenia rostopic list. Węzły przetwarzania obrazów i estymacji położenia zostały zaimplementowane przy użyciu Pythona 3.8 i zintegrowanych bibliotek ArUco w celu obliczenia położenia względnego za pomocą OpenCV. Środowisko ROS zostało skonfigurowane w celu zarządzania zależnościami i umożliwienia komunikacji danych w czasie rzeczywistym, umożliwiając robotowi lokalizację siebie względem wielu sztucznych znaczników18. To ustawienie umożliwiło również ocenę wydajności wykrywania znaczników w różnych warunkach. Rysunek 1 przedstawia komunikację między węzłami symulacji, percepcji i wizualizacji w środowisku ROS-Gazebo.
2. Model UUV i parametryzacja hydrodynamiczna
Model pojazdu RexRov2 został uzyskany z pakietu uuv_descriptions i uruchomiony w Gazebo za pomocą pliku w formacie Unified Robot Description Format (URDF)5. Model pojazdu składał się z łączy i przegubów, o masie suchej 1863 kg i objętości wyporu 1,838 m3, co odpowiadało prawie neutralnej wyporności w wodzie o gęstości 1000 kg/m3.
Efekty hydrodynamiczne zostały zmodyfikowane za pomocą uuv_underwater_object_plugin, w tym sił tłumiących liniowych i kwadratowych. Współczynnik dodatkowej masy prądu został ustawiony na 779,79, a parametry tłumienia zostały skalibrowane na podstawie zgłoszonych cech RexRov2 w celu symulacji realistycznego ruchu pojazdu19. Rysunek 2 przedstawia ogólną architekturę symulacji.

Rysunek 2: Ogólna architektura środowiska symulacyjnego. Rysunek przedstawia integrację modelu UUV, wejść sensorycznych, potoku percepcji i modułów sterowania używanych do estymacji położenia i nawigacji. Proszę kliknąć tutaj, aby zobaczyć większą wersję tego rysunku.
3. Konfiguracja kamery, znacznika i środowiska
Monokularną kamerę zamontowano na ramie rexrov2/camera_link. Parametry kamery zostały ustawione na 1280 × 720 pikseli i 30 Hz. Parametry wewnętrzne zostały zdefiniowane w pliku konfiguracyjnym kamery z ogniskową 554,25 pikseli i punktem głównym na (640,5, 360,5).
Stały pionowy znacznik ArUco o długości boku 0,5 m, wybrany z słownika 6×6_250 (ID: 582), został umieszczony na współrzędnych (20,0, 0,0, -10,0). Zsymulowane środowisko zostało skonfigurowane z głębokością wody 10 m i stałą prędkością prądu 0,1 m/s w kierunku X za pomocą usługi ROS /uuv_simulation_app/set_current_velocity. Intensywność światła 0,8 została użyta, aby zapewnić widoczność znacznika9. Rysunek 3 przedstawia symulowane środowisko podwodne.

Rysunek 3: Symulowane środowisko podwodne w Gazebo 9. Środowisko obejmuje UUV RexRov2, wirtualne znaczniki ArUco i kontrolowane warunki środowiskowe, takie jak głębokość wody, oświetlenie i prąd. Proszę kliknąć tutaj, aby zobaczyć większą wersję tego rysunku.
4. Estymacja położenia i sterowanie nawigacją
Potok wykrywania znaczników został uruchomiony za pomocą węzła ROS ArUco, który subskrybował temat /rexrov2/forward_camera/image_raw. Położenie pojazdu zostało oszacowane za pomocą metody Perspektywa-n-Punkt (PnP), aby obliczyć macierz rotacji (R) i wektor translacji (t) względem znanej geometrii znacznika 3D.
Oszacowane położenie zostało przekształcone z ramki kamery do globalnego układu odniesienia za pomocą statycznego publikatora transformacji. Do regulacji ruchu pojazdu za pomocą wysyłania poleceń prędkości do