Hi @powski
First, welcome to the Orekit forum 
Using estimator.addMeasurement(...)
is the good way.
You probably have an error when initializing the PV
measurement. I see two possible errors. First, I don’t see the ObservableSatellite
in the error message. You maybe forget it. Secondly, I think you use arrays instead of Vector3D
to provide the position and velocity data to the PV
object.
For the first problem, the ObservableSatellite
object is used to represent the satellite for which the orbit is estimated and from which the measurement comes from. If you have only one satellite, you will only have one instance of ObservableSatellite
. You can initialize it only once like that:
observableSatellite = ObservableSatellite(0)
Now, I show you an example on how initializing a PV
object based on your data.
date = AbsoluteDate(2022, 4, 16, 11, 52, 00.000, TimeScalesFactory.getUTC())
position = Vector3D(-2768386.5930000003, 5275182.704, 3672200.745)
velocity = Vector3D(-759.6318531000001, 4028.2763631999997, -6338.7818408)
pv = PV(date, position, velocity, 1.0, 0.01, 1.0, observableSatellite)
A last remark, I saw you used a sigma of 1.0 meter for position data and 1.0 meter per second for velocity data. I recommend you to reduce the sigma for velocity data compared to the one for position data. Having 2-3 orders of magnitude less for velocity is more realistic. Therefore a value of 1 cm per second (i.e., 0.01) is more relevant.
If you want an example of a full Python-based orbit determination using Orekit, you can have a look on Clément Jonglez’s tutorial on his GitHub repository. He uses PV data stored in a CSV file to perform the orbit determination.
Best regards,
Bryan