From 8ef2d1ab85874a6b07746b3ab46a815d1c277a9a Mon Sep 17 00:00:00 2001 From: bresch Date: Fri, 21 Nov 2025 09:35:23 +0100 Subject: [PATCH] gz_bridge: project local position instead of using navsat global pos The issue is that the global position produced by gz is inconsistent with the velocity, leading to navigation issues when moving away from the origin. --- src/modules/simulation/gz_bridge/GZBridge.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/modules/simulation/gz_bridge/GZBridge.cpp b/src/modules/simulation/gz_bridge/GZBridge.cpp index 3ef65e186f..11d1c1138d 100644 --- a/src/modules/simulation/gz_bridge/GZBridge.cpp +++ b/src/modules/simulation/gz_bridge/GZBridge.cpp @@ -721,9 +721,10 @@ void GZBridge::navSatCallback(const gz::msgs::NavSat &msg) return; } - double latitude = msg.latitude_deg(); - double longitude = msg.longitude_deg(); - double altitude = msg.altitude(); + double latitude; + double longitude; + _pos_ref.reproject(_position_prev(0), _position_prev(1), latitude, longitude); + double altitude = _alt_ref + (-_position_prev(2)); float vel_north = msg.velocity_north(); float vel_east = msg.velocity_east(); float vel_down = -msg.velocity_up();