Skip to content

Eagleye pose estimation jumps and drifts a lot... #368

@toffanetto

Description

@toffanetto

Hi there!

I am trying to use Eagleye in a V2X project. The V2X device on the vehicle estimates its position using Eagleye, based on NMEA messages from a GNSS receiver and an IMU. This setup does not use RTK.

Problem description

After initialization, the Eagleye latitude/longitude output shows noticeable error. Over time, the position begins to drift and occasionally exhibits sudden jumps.

After debugging, I identified two likely causes:

  1. NMEA conversion issue (hemisphere handling)

Since I am operating in Brazil, I noticed that the conversion from NMEA GGP to latitude/longitude does not correctly account for hemispheres (S/W).

I have implemented a fix locally and will submit a PR.

  1. Irregular publishing of enu_absolute_pos

The enu_absolute_pos topic sometimes stops publishing for extended periods (up to ~15 seconds). During these gaps, the position interpolation node accumulates significant drift. When a new message finally arrives, the output position “jumps” to the corrected value.

Additional observations

  • My GNSS (u-blox M9N) is not high-precision, but when visualized on a map, the raw measurements appear reasonably stable (It is collected in the OBU through gpsd, then I receive the NMEA at my laptop through TCP). I expected Eagleye to improve the trajectory slightly using IMU data (Xsens MTi-3), but instead the output degrades over time.

I am unsure whether the issue is due to GNSS quality, configuration, or a problem in the processing pipeline.

Reproduction data

I recorded a video demonstrating the issue and provided a ROS bag with the collected data: https://drive.google.com/drive/folders/1eyJCYip92aSTOBz34YeXIAzTBFyX06ll?usp=sharing.

Code

I am using my fork of Eagleye on the Autoware branch: https://github.com/LMA-FEM-UNICAMP/eagleye/tree/autoware-main.

Steps to reproduce

# Terminal 1
ros2 launch eagleye_can_velocity_converter can_velocity_converter.xml

# Terminal 2
ros2 launch eagleye_rt eagleye_obu.launch.py

Note:
It seems more stable to start the rosbag in a paused state first (-p flag), then launch Eagleye. If Eagleye is started before playback, the GPGGA subscriber sometimes stops working unexpectedly.

Questions

  • Is the intermittent publishing of enu_absolute_pos expected behavior?
  • Are there recommended configurations or filters for lower-quality GNSS (non-RTK) setups?
  • Could this issue be related to timing/synchronization between GNSS and IMU?

Thank you very much for your time!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions