hello,

I am using Pyros built-in classes from the Extended Kalman Filter 'EKFState" and “EKFDistribution”,

also used in the tutorial https://pyro.ai/examples/ekf.html to implement a version of the EKF with a nonlinear function h(x), that transforms the (x,y) coordinates of an object into measurements from 4 different cameras.

```
# The matrix C are the coordinates of the 4 cameras and xvalue are the real x,y coordinates of the object
def hpyro(xvalue):
[x,y] = np.zeros(shape=(2,4))
xvalue = xvalue.detach().numpy()
y[[0,2]] = xvalue[1]-C[[0,2],1] # Camera 1 and 3
x[[0,2]] = xvalue[0]-C[[0,2],0]
y[[1,3]] = xvalue[0]-C[[1,3],0] # Camera 2 and 4
x[[1,3]] = xvalue[1]-C[[1,3],1]
p = d*(y/x) # Camera observations
return x,y,p
```

I want to use this function as the function h(x) in the Extended Kalman Filter equations from the tutorial. I also noted that inside the class “EKFDistribution” the function “PositionMeasurement” is used. Looking at the source code of PositionMeasurement : http://docs.pyro.ai/en/1.5.1/_modules/pyro/contrib/tracking/measurements.html,

this one seems to use some measurement map h(). However, it uses its own function h(.) but I want to change that to my own function. I however don’t see where this PositionMeasurement obtains this h(.) function and how I can change it.

My question is:

#### How can I use my own nonlinear function h(x) inside the built in Extended Kalman Filter classes? More specifically how can I use it within the PositionMeasurement / Measurement functions?

For more information the Jacobian H for function h(x) would look like this:

```
[xtemp,ytemp,hpred] = hpyro(x_pv)
vpar = 4
H = np.zeros(shape=(4,vpar))
H[0,0:2] = np.array([-ytemp[0]/((xtemp[0])**2), 1/xtemp[0]]) # Camera 1
H[2,0:2] = np.array([-ytemp[2]/((xtemp[2])**2), 1/xtemp[2]]) # Camera 3
H[1,0:2] = np.array([1/xtemp[1],-ytemp[1]/((xtemp[1])**2)]) # Camera 2
H[3,0:2] = np.array([1/xtemp[3],-ytemp[3]/((xtemp[3])**2)]) # Camera 4
H =torch.from_numpy(H)
z_predicted = hpred
```

Thanks in advance if anyone can help