In our SLAM algorithm, we want to rotate GPS co-ordinates to SLAM co-ordinate system so that those GPS positions can be used for bundle adjustment in monocular SLAM (Scale correction).
We have used following procedure for rotation.
- Convert Lat, Long,
Att
GPS co-ordinates toXYZ
co-ordinate usingGeoconverter
library. (Resetting origin same as SLAM co-ordinate's origin) - Therefore, calculate rotation matrix between
XYZ
GPS co-ordinates and SLAM co-ordinates usingrodrigues
rotation formula for the first vector after origin. - Then, for each
XYZ
GPS position use the rotation matrix to calculate the GPS co-ordinates in SLAM co-ordinate system.
However, the results are not as expected, the GPS co-ordinate plane does not align with SLAM co-ordinates, hence bundle adjustment fails.
To check the actual position of the GPS co-ordinates after rotation, we plotted them (as shown below).
Front view (GPS(olive), SLAM(blue), MapPoints
(black))
Without MapPoints
Side view to understand GPS and SLAM are in different plane
Side view with MapPoints
Side view different angle
Can you point out the mistake in the process or suggest an alternate process to align GPS data.
Thanks
Saurabh Kumar