An inertial measurement system for a spinning projectile comprising: a first, roll gyro with an axis oriented substantially parallel to the spin axis of the projectile; a second gyro and a third gyro with axes arranged with respect to the roll gyro such that they define a three dimensional coordinate system; a controller, arranged to: compute a current projectile attitude from the outputs of the first, second and third gyros (210, 211, 212), the computed attitude comprising a roll angle, a pitch angle and a yaw angle; operate a Kalman filter that receives a plurality of measurement inputs including at least the roll angle, pitch angle and yaw angle and that outputs at least a roll angle error; initialise the Kalman filter with a roll angle error uncertainty representative of a substantially unknown roll angle; generate at least one pseudo-measurement from stored expected flight data, the or each pseudo-measurement corresponding to an expected measurement input of the Kalman filter; provide said pseudo-measurement(s) to the corresponding measurement input of the Kalman filter; and apply the roll angle error from the Kalman filter as a correction to the roll angle; wherein the Kalman filter is arranged to calculate the roll angle error as a function of the pseudo-measurement(s). a first, roll gyro with an axis oriented substantially parallel to the spin axis of the projectile; a second gyro and a third gyro with axes arranged with respect to the roll gyro such that they define a three dimensional coordinate system; a controller, arranged to: compute a current projectile attitude from the outputs of the first, second and third gyros (210, 211, 212), the computed attitude comprising a roll angle, a pitch angle and a yaw angle; operate a Kalman filter that receives a plurality of measurement inputs including at least the roll angle, pitch angle and yaw angle and that outputs at least a roll angle error; initialise the Kalman filter with a roll angle error uncertainty representative of a substantially unknown roll angle; generate at least one pseudo-measurement from stored expected flight data, the or each pseudo-measurement corresponding to an expected measurement input of the Kalman filter; provide said pseudo-measurement(s) to the corresponding measurement input of the Kalman filter; and apply the roll angle error from the Kalman filter as a correction to the roll angle; compute a current projectile attitude from the outputs of the first, second and third gyros (210, 211, 212), the computed attitude comprising a roll angle, a pitch angle and a yaw angle; operate a Kalman filter that receives a plurality of measurement inputs including at least the roll angle, pitch angle and yaw angle and that outputs at least a roll angle error; initialise the Kalman filter with a roll angle error uncertainty representative of a substantially unknown roll angle; generate at least one pseudo-measurement from stored expected flight data, the or each pseudo-measurement corresponding to an expected measurement input of the Kalman filter; provide said pseudo-measurement(s) to the corresponding measurement input of the Kalman filter; and apply the roll angle error from the Kalman filter as a correction to the roll angle; wherein the Kalman filter is arranged to calculate the roll angle error as a function of the pseudo-measurement(s).