Use local NED coordinate system in fusegps (insfilterMARG - Sensor Fusion and tracking toolbox)

4 views (last 30 days)
Hello,
I am doing sensor fusion with the Sensor Fusion and Tracking Toolbox. In particular, I want to estimate the pose (orientation and position) with the filter insfilterMARG. This filter estimates the pose from accelerometer, gyroscope, magnetometer and GPS readings. The GPS readings are provided to the filter with the fusegps function, which takes the values in the lla format (latitude, longitude, altitude).
I need to use the local NED format to provide the position measurement to the fusegps function. I know that it is of course possible to convert these NED values to lla (with the local2latlon function). However, to do this we naturally need to provide the geographic coordinates of the origin, which in this particular case is something that I do not have access to.
Is there any way to only use local coordinates for the filter "GPS" updates, without the need for the geographic coordinates of the local reference point?

Accepted Answer

Ryan Salvo
Ryan Salvo on 3 Aug 2021
Hi Pere,
There are two options to use local coordinates for the filter "GPS" updates. You can either use the correct object function on insfilterMARG, or use the default reference location of [0 0 0].
filt = insfilterMARG;
stateIdx = stateinfo(filt);
gpsPos = [1 2 3]; % GPS position measurement in local coordinates (m)
Rpos = 1; % Covariance of GPS position (m^2)
correct(filt, stateIdx.Position, gpsPos, Rpos)
OR
lla0 = [0 0 0];
filt = insfilterMARG;
filt.ReferenceLocation = lla0;
gpsPos = [1 2 3]; % GPS position measurement in local coordinates (m)
Rpos = 1; % Covariance of GPS position (m^2)
gpsLLA = ned2lla(gpsPos, lla0, "ellipsoid");
fusegps(filt, gpsPos, Rpos);
Thanks,
Ryan

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!