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,
AttGPS co-ordinates toXYZco-ordinate usingGeoconverterlibrary. (Resetting origin same as SLAM co-ordinate's origin) - Therefore, calculate rotation matrix between
XYZGPS co-ordinates and SLAM co-ordinates usingrodriguesrotation formula for the first vector after origin. - Then, for each
XYZGPS 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