Use local NED coordinate system in fusegps (insfilterMARG - Sensor Fusion and tracking toolbox)
3 views (last 30 days)
Show older comments
Pere Garau Burguera
on 3 Aug 2021
Commented: Pere Garau Burguera
on 4 Aug 2021
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?
0 Comments
Accepted Answer
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)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!