def predictAisMeasurements(self, scanTime, aisMeasurements):
import pymht.models.pv as model
import pymht.utils.kalman as kalman
assert len(aisMeasurements) > 0
aisPredictions = AisMessageList(scanTime)
scanTimeString = datetime.datetime.fromtimestamp(scanTime).strftime("%H:%M:%S.%f")
for measurement in aisMeasurements:
aisTimeString = datetime.datetime.fromtimestamp(measurement.time).strftime("%H:%M:%S.%f")
log.debug("Predicting AIS (" + str(measurement.mmsi) + ") from " + aisTimeString + " to " + scanTimeString)
dT = scanTime - measurement.time
assert dT >= 0
state = measurement.state
A = model.Phi(dT)
Q = model.Q(dT)
x_bar, P_bar = kalman.predict(A, Q, np.array(state, ndmin=2),
np.array(measurement.covariance, ndmin=3))
aisPredictions.measurements.append(
AIS_prediction(model.C_RADAR.dot(x_bar[0]),
model.C_RADAR.dot(P_bar[0]).dot(model.C_RADAR.T), measurement.mmsi))
log.debug(np.array_str(state) + "=>" + np.array_str(x_bar[0]))
aisPredictions.aisMessages.append(measurement)
assert len(aisPredictions.measurements) == len(aisMeasurements)
return aisPredictions
评论列表
文章目录