Hello, I’m trying to estimate orbit using KalmanEstimator, but when trying to add measurement i get error like this
---------------------------------------------------------------------------
JavaError Traceback (most recent call last)
Cell In[1], line 54
47 measurements = [
48 Position(initial_date.shiftedBy(300.0), Vector3D(7100000.0, 10000.0, 20000.0), position_error, 1.0, None),
49 Position(initial_date.shiftedBy(600.0), Vector3D(7200000.0, 20000.0, 30000.0), position_error, 1.0, None),
50 Position(initial_date.shiftedBy(900.0), Vector3D(7300000.0, 30000.0, 40000.0), position_error, 1.0, None),
51 ]
53 for measurement in measurements:
---> 54 kalman_estimator.estimationStep(measurement)
56 estimated_orbit = kalman_estimator.getEstimatedPropagator().getInitialState().getOrbit()
58 print(estimated_orbit.getA())
JavaError: <super: <class 'JavaError'>, <JavaError object>>
Java stacktrace:
java.lang.NullPointerException
at org.orekit.estimation.sequential.KalmanEstimatorUtil.filterRelevant(KalmanEstimatorUtil.java:199)
at org.orekit.estimation.sequential.KalmanModel.getEvolution(KalmanModel.java:713)
at org.orekit.estimation.sequential.KalmanModel.getEvolution(KalmanModel.java:51)
at org.hipparchus.filtering.kalman.extended.ExtendedKalmanFilter.estimationStep(ExtendedKalmanFilter.java:56)
at org.orekit.estimation.sequential.KalmanEstimator.estimationStep(KalmanEstimator.java:142)
Could you help me with it?
import orekit
from orekit.pyhelpers import setup_orekit_curdir
from org.orekit.propagation.conversion import DormandPrince853IntegratorBuilder, NumericalPropagatorBuilder
from org.orekit.estimation.sequential import KalmanEstimatorBuilder, ConstantProcessNoise
from org.orekit.orbits import KeplerianOrbit, PositionAngleType
from org.orekit.utils import Constants, PVCoordinates
from org.orekit.time import AbsoluteDate, TimeScalesFactory
from org.orekit.frames import FramesFactory
from org.hipparchus.linear import QRDecomposer, BlockRealMatrix
from org.orekit.estimation.measurements import Position
from org.hipparchus.geometry.euclidean.threed import Vector3D
orekit.initVM()
setup_orekit_curdir()
mu = Constants.WGS84_EARTH_MU
frame = FramesFactory.getEME2000()
# Kontekst czasu
utc = TimeScalesFactory.getUTC()
initial_date = AbsoluteDate(2024, 4, 25, 20, 52, 0.0, utc)
position = Vector3D(-5915780.397691450, -966818.290504886, -3206121.242323730)
velocity = Vector3D(-1651.90009192014, -5738.13475197905, 4790.80932769098)
pv_coordinates = PVCoordinates(position, velocity)
k_orbit = KeplerianOrbit(pv_coordinates, frame, initial_date, mu)
min_step = 0.01
max_step = 600.0
position_error = 0.001
integrator_builder = DormandPrince853IntegratorBuilder(min_step, max_step, position_error)
propagator_builder = NumericalPropagatorBuilder(k_orbit, integrator_builder, PositionAngleType.TRUE, 1.0)
covariance_matrix = BlockRealMatrix(6, 6)
constant_process_noise = ConstantProcessNoise(covariance_matrix, covariance_matrix)
kalman_builder = KalmanEstimatorBuilder()
kalman_builder.addPropagationConfiguration(propagator_builder, constant_process_noise)
kalman_builder.decomposer(QRDecomposer(1.0e-15))
kalman_estimator = kalman_builder.build()
measurements = [
Position(initial_date.shiftedBy(300.0), Vector3D(7100000.0, 10000.0, 20000.0), position_error, 1.0, None),
Position(initial_date.shiftedBy(600.0), Vector3D(7200000.0, 20000.0, 30000.0), position_error, 1.0, None),
Position(initial_date.shiftedBy(900.0), Vector3D(7300000.0, 30000.0, 40000.0), position_error, 1.0, None),
]
for measurement in measurements:
kalman_estimator.estimationStep(measurement)
estimated_orbit = kalman_estimator.getEstimatedPropagator().getInitialState().getOrbit()
print(estimated_orbit.getA())