robot_localization is a ROS 2 package providing nonlinear state estimation for mobile robots using Extended (EKF) and Unscented Kalman Filters (UKF). It fuses multiple sensor inputs—including odometry, IMU, GPS, pose, and twist measurements—into a consistent, filtered pose estimate (position, orientation, velocities, accelerations) published as `/odometry/filtered` and broadcast as TF transforms following REP-105 conventions. The architecture is centered around a templated `RosFilter<T>` class that wraps the core `FilterBase` abstract class, handling measurement queuing, differential/relative modes, Mahalanobis outlier rejection, and diagnostic monitoring. Key entry points are `ekf_node`, `ukf_node`, and `navsat_transform_node` (for GPS-to-local Cartesian conversion), all instantiated from `ros_filter.cpp` and `navsat_transform.cpp`. The package also provides services like `SetPose`, `SetDatum`, `ToLL`, and `GetState`, and includes lifecycle node support for managed operation. The codebase is well-known for its extensive parameterization—each sensor input can be individually configured with update vectors, differential/relative flags, noise terms, and rejection thresholds—making it adaptable to diverse robot platforms. It depends on Eigen for linear algebra, GeographicLib for geodetic conversions, and standard ROS 2 infrastructure (tf2, diagnostic_updater). The core filter logic (`FilterBase`) and coordinate conversion utilities (`navsat_conversions.hpp`) are clean, isolated components that can be reused outside the ROS ecosystem. Despite its popularity and solid engineering, the repository shows signs of technical drift: incomplete ROS 1→ROS 2 migration, deprecated API usage (`rclcpp::Duration::from_seconds`), commented-out bag-based tests, and a monolithic `RosFilter` implementation that mixes configuration, callbacks, and filter logic. Issue templates explicitly state that the package will soon be deprecated and feature requests will not be addressed, indicating transition to a maintenance-only state.