A method for determining a heading for a hybrid navigation system with magnetometer aiding, the method comprising: receiving signals from a plurality of global navigation satellite system (GNSS) satellites at a location corresponding to an object; obtaining three-dimensional inertial measurements from one or more inertial sensors corresponding to the object; obtaining three-dimensional magnetic measurements from one or more magnetometers corresponding to the object; estimating states for position, velocity, roll, pitch, and heading of the object with a magnetic calibration filter; estimating states for calibration of the three-dimensional inertial measurements with the magnetic calibration filter; estimating states for drift and bias of a GNSS clock with the magnetic calibration filter; and estimating states for pseudorange biases for the signals from the GNSS satellites with the magnetic calibration filter; estimating nine soft iron bias states and three hard iron bias states for biases of the three-dimensional magnetic measurements with the magnetic calibration filter using the three-dimensional inertial measurements, data from the signals from the plurality of GNSS satellites, and the three-dimensional magnetic measurements; calculating a calibrated heading estimate for the object as ψ ma = atan − m cal Bz sin φ + m cal By cos φ m cal Bx cos θ + m cal By sin θ sin φ + m cal Bz sin θ cos φ − ψ dec where φ is the roll estimate from the main navigation filter, θ is the pitch estimate from the main navigation filter, ψ dec is the magnetic declination, and m cal Bx, m cal By, and m cal Bz are calibrated magnetic measurements with components x, y, and z in the body frame, respectively, wherein m cal B is calculated as m cal B = D mag − 1 m ̃ B − b mag B, where D mag is the magnetic bias state matrix corresponding to soft iron biases, b mag B is the magnetic bias state vector corresponding to hard iron biases, and m̃ B is the three-dimensional magnetic measurements; estimating a main navigation solution for the object with a main navigation filter using the three-dimensional inertial measurements, data from the signals from a plurality of GNSS satellites, and the calibrated heading estimate. receiving signals from a plurality of global navigation satellite system (GNSS) satellites at a location corresponding to an object; obtaining three-dimensional inertial measurements from one or more inertial sensors corresponding to the object; obtaining three-dimensional magnetic measurements from one or more magnetometers corresponding to the object; estimating states for position, velocity, roll, pitch, and heading of the object with a magnetic calibration filter; estimating states for calibration of the three-dimensional inertial measurements with the magnetic calibration filter; estimating states for drift and bias of a GNSS clock with the magnetic calibration filter; and estimating states for pseudorange biases for the signals from the GNSS satellites with the magnetic calibration filter; estimating nine soft iron bias states and three hard iron bias states for biases of the three-dimensional magnetic measurements with the magnetic calibration filter using the three-dimensional inertial measurements, data from the signals from the plurality of GNSS satellites, and the three-dimensional magnetic measurements; calculating a calibrated heading estimate for the object as ψ ma = atan − m cal Bz sin φ + m cal By cos φ m cal Bx cos θ + m cal By sin θ sin φ + m cal Bz sin θ cos φ − ψ dec where φ is the roll estimate from the main navigation filter, θ is the pitch estimate from the main navigation filter, ψ dec is the magnetic declination, and m cal Bx, m cal By, and m cal Bz are calibrated magnetic measurements with components x, y, and z in the body frame, respectively, wherein m cal B is calculated as m cal B = D mag − 1 m ̃ B − b mag B, where D mag is the magnetic bias state matrix corresponding to soft iron biases, b mag B is the magnetic bias state vector corresponding to hard iron biases, and m̃ B is the three-dimensional magnetic measurements; estimating a main navigation solution for the object with a main navigation filter using the three-dimensional inertial measurements, data from the signals from a plurality of GNSS satellites, and the calibrated heading estimate.