// the find
MapIV/eagleye
Precise localization based on GNSS and IMU.
Eagleye is a ROS 2 package that fuses GNSS Doppler velocity, IMU rates and CAN wheel speed to estimate vehicle position and heading, aiming for lane-level accuracy in urban areas where raw GNSS fixes wander. It is for teams building localization on a car or research vehicle that already has an RTK receiver and an IMU and want a dead-reckoning layer on top.
- The core estimators live in eagleye_core as plain C++ (coordinate transforms, heading, slip angle, rolling, distance), separate from the ROS nodes in eagleye_rt, so the math can be read and tested without the middleware in the loop.
- It estimates sensor biases online rather than assuming them. Yaw-rate offset, angular velocity offset while stopped, and velocity scale factor are all tracked, and drift in those terms is where most dead-reckoning setups go wrong.
- Intermediate estimates are published as messages (Heading, SlipAngle, Rolling, Pitching, YawrateOffset, VelocityScaleFactor). When the fused output misbehaves, you can see which estimate went bad instead of staring at a single black-box position.
- The algorithms trace back to published papers from Meijo University dating to 2010, and the README lists them. That lineage is rarer in open-source localization than it should be.
- Setup is tied to the authors' hardware. The Mosaic receiver config is a Dropbox link, the IMU roll offset is hand-edited in sensors_tf.yaml, and CAN wheel speed is required. Expect real time spent on wiring and calibration before the first usable output.
- The dependency chain is fragile. Installation needs MapIV's forks of RTKLIB and nmea_ros_bridge on specific branches, and the README points at at least three different branch and tag names (main-ros2, ros2-galactic-v1.1.5, rtklib_ros_bridge_b34), so the docs and the code are not obviously in sync.
- It is labeled Alpha, and the README admits output appears about 100 seconds after startup while the estimators accumulate data. That is workable for logged data and a real problem for anything that needs a position immediately after boot.
- Sample bags, maps, and parameter references are mostly external links (Dropbox, Google Drive, a Galactic-era branch). The sample section lists ROS 1 bags while the run section plays a file with a ROS 2 command, so it is unclear which format is current. Expect link rot and some guesswork.