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