$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
1. Impostazione dell'ambiente software
Una workstation basata su Linux con Ubuntu 20.04 e il Robot Operating System (ROS) Noetic è stata utilizzata come principale piattaforma di sviluppo per implementare sistemi di autolocalizzazionesubacquea 17. Il sistema è stato inizializzato creando uno spazio di lavoro catkin con mkdir -p ~/catkin_ws/src e poi inizializzandolo con catkin_init_workspace. I pacchetti uuv_simulator e aruco_ros furono clonati nella directory sorgente e compilati usando il comando catkin_make per supportare la modellazione di intervento subacqueo.
La connettività tra il middleware ROS e il simulatore Gazebo 9 è stata verificata avviando un mondo subacqueo predefinito e confermando la comunicazione attiva tramite il comando rostopic list. I nodi di elaborazione delle immagini e stima della posa sono stati implementati usando Python 3.8 e librerie integrate di ArUco per calcolare la posa relativa tramite OpenCV. L'ambiente ROS era configurato per gestire le dipendenze e abilitare la comunicazione dati in tempo reale, consentendo al robot di localizzarsi rispetto a più marcatoriartificiali 18. Questa configurazione ha anche permesso la valutazione delle prestazioni di rilevamento dei marcatori in condizioni variabili. La Figura 1 illustra la comunicazione tra i nodi di simulazione, percezione e visualizzazione nell'ambiente ROS–Gazebo.
2. Modello UUV e parametrizzazione idrodinamica
Il modello RexRov2 è stato ottenuto dal pacchetto uuv_descriptions e lanciato in gazebo utilizzandoil suo file 5 Unified Robot Description Format (URDF). Il modello del veicolo era composto da maglie e giunti, con una massa a secco di 1.863 kg e uno spostamento volumetrico di 1,838m3, corrispondente a una galleggiabilità quasi neutra in acqua con una densità di 1.000 kg/m3.
Gli effetti idrodinamici sono stati modellati utilizzando il uuv_underwater_object_plugin, incluse forze di smorzamento lineari e quadratiche. Il coefficiente di sovrappeso di massa aggiunto è stato impostato a 779,79 e i parametri di smorzamento sono stati calibrati in base alle caratteristiche riportate del RexRov2 per simulare un movimento realisticodel veicolo 19. La Figura 2 mostra l'architettura complessiva della simulazione.

Figura 2: Architettura complessiva dell'ambiente di simulazione. La figura mostra l'integrazione del modello UUV, degli input dei sensori, della pipeline di percezione e dei moduli di controllo utilizzati per la stima della posa e la navigazione. Clicca qui per visualizzare una versione più grande di questa figura.
3. Configurazione della telecamera, del marcatore e dell'ambiente
Una fotocamera monocolo era montata al telaio rexrov2/camera_link. I parametri della fotocamera erano impostati a 1280 × 720 pixel e 30 Hz. I parametri intrinseci erano definiti nel file di configurazione della fotocamera con una lunghezza focale di 554,25 pixel e un punto principale a (640,5, 360,5).
Un marcatore ArUco verticale fisso con una lunghezza laterale di 0,5 m, selezionato dal dizionario 6×6_250 (ID: 582), era posizionato alle coordinate (20.0, 0.0, -10.0). L'ambiente simulato era configurato con una profondità dell'acqua di 10 m e una velocità di corrente costante di 0,1 m/s nella direzione X utilizzando il servizio ROS /uuv_simulation_app/set_current_velocity. Un'intensità luminosa di 0,8 è stata utilizzata per garantire la visibilità delmarcatore 9. La Figura 3 mostra l'ambiente subacqueo simulato.

Figura 3: Ambiente subacqueo simulato nel gazebo 9. L'ambiente include il UUV RexRov2, marcatori virtuali ArUco e condizioni ambientali controllate come profondità dell'acqua, illuminazione e corrente. Clicca qui per visualizzare una versione più grande di questa figura.
4. Stima della posa e controllo della navigazione
La pipeline di rilevamento dei marker è stata avviata utilizzando il nodo ROS ArUco, che si è abbonato all'argomento /rexrov2/forward_camera/image_raw. La posa del veicolo è stata stimata utilizzando il metodo Perspective-n-Point (PnP) per calcolare la matrice di rotazione (R) e il vettore di traslazione (t) rispetto alla geometria nota del marcatore 3D.
La posa stimata è stata trasformata dal fotogramma della telecamera al fotogramma di riferimento globale utilizzando un publisher di trasformazione statica. Un controller PID veniva utilizzato per regolare il movimento del veicolo inviando comandi di velocità all'argomento /rexrov2/thruster_manager/input. I guadagni proporzionali (Kp) per gli assi di onda e sollevamento sono stati fissati rispettivamente a 1500 e 2000, per garantire una performance di tracciamentostabile 20.
5. Valutazione e confronto della verità sul campo
L'accordo tra le stime della posa basate sulla visione e la traiettoria simulata è stato valutato utilizzando l'argomento /rexrov2/pose_gt fornito dal plugin uuv_gazebo_ros_p3d. La posa stimata della pipeline basata su ArUco è stata confrontata con i dati odometrici di base per valutare la stabilità e la coerenza del sistema.
La valutazione è stata effettuata tramite confronto di traiettoria e visualizzazione in tempo reale, dove posizione (X, Y, Z) e orientamento (rollio, beccheggio, imbardata) sono stati monitorati utilizzando Rviz e rqt_plot. Ciò permise l'osservazione delle deviazioni sia in condizioni nominali che indotte da disturbi.
Lo studio si concentra sulla valutazione qualitativa e comparativa. La valutazione quantitativa utilizzando l'Errore Quadratico Medio Radice (RMSE) è identificata come lavoro futuro, in cui verranno utilizzate più simulazioni per valutare l'errore di posizione e orientamento.
6. Generazione e visualizzazione dei risultati
Rviz è stato utilizzato come strumento di visualizzazione 3D per monitorare la traiettoria e l'assetto dell'UUV. I sistemi di coordinata /rexrov2/camera_link e /aruco_marker_frame sono stati visualizzati per valutare la relazione spaziale tra il veicolo e il marcatore2.
Lo strumento rqt_plot veniva utilizzato per generare grafici in tempo reale dell'assetto del veicolo (rollio, beccheggio, imbardata) utilizzando gli argomenti /rexrov2/pose_gt e /aruco_pose. Il comando rosbag record veniva utilizzato per catturare dati di simulazione, inclusi flussi video e input di controllo, per analisi qualitative.
La simulazione è stata condotta in condizioni visive ideali, assumendo buona illuminazione e bassa torbidità. Si presumeva che il marcatore ArUco rimanesse senza ostacoli. Gli effetti di smorzamento idrodinamico sono stati modellati usando coefficienti semplificati e il rumore del sensore non è stato incluso.