Repository navigation
FusionLocalizer: GNSS fixes in east-north-up maps and from the antenna's mounting - #167
Conversation
The projection parameter chooses how fixes become map coordinates: utm (default, as before) or enu, east-north-up at the origin, as Gazebo's spherical_coordinates and most local maps define it. Through UTM, a map defined east-north-up was off by the grid's convergence: 1.9 m at 300 m from the origin at Sonoma Raceway. The first fix placed the robot at the antenna, and later fixes reached the filter with an identity orientation, so it removed the antenna's mounting as if the robot faced east. Now the first fix removes the mounting turned with the IMU's attitude, and every fix carries that attitude. Signed-off-by: Francisco Martín Rico <fmrico@gmail.com>
|
Two things I’d change before merging:
|
… NaN without orientation The IMU's orientation is its frame's: the robot's attitude now removes the IMU's mounting (TF). An IMU without orientation (covariance -1, null or non-finite quaternion) or without a known mounting gives no attitude instead of a NaN first fix; later fixes then use the estimated heading. Later fixes carry the antenna frame's orientation, which is what the filter expects. Signed-off-by: Francisco Martín Rico <fmrico@gmail.com>
|
Thanks, both were right.
d457a29, with 7 new tests (IMU and antenna mounted turned, no orientation, null/NaN quaternion, unknown mounting, no IMU, IMU appearing later). In the Prius playground with the IMU turned 90° and the antenna 1.5 m ahead, the error against ground truth was 4.4 m with a 90° heading error before, and is 0.16 m mean while driving now. |
Closes #166.
projectionparameter:utm(default, as before) orenu, east-north-up at the origin (GeographicLibLocalCartesian), for maps defined that way.base_link_frameto the fix's frame) is turned with the IMU's attitude and removed. Later fixes carry the IMU's attitude, so the filter removes the mounting in the right direction. Without IMU or without that TF, as before.