gnatss.ops.kalman module#
- gnatss.ops.kalman.ecef2geodetic(x: float, y: float, z: float, semimajor_axis: float = 6378137.0, semiminor_axis: float = 6356752.31424518, eps=np.float32(1.1920929e-07)) tuple#
convert ECEF (meters) to geodetic coordinates
rewrite of pymap3d.ecef2geodetic to use numba for speedup… not as robust
- gnatss.ops.kalman.kalman_init(row, cov_err=0.25, gnss_pos_psd=3.125e-05, vel_psd=0.0025, start_dt=0.05)#
- gnatss.ops.kalman.predict(dt, X, P, Q, F, gnss_pos_psd=3.125e-05, vel_psd=0.0025)#
- gnatss.ops.kalman.rot_vel(row, lat, lon)#
- ——————- Rotate ENU velocity into ECEF velocity ——————————–
dX = | -sg -sa*cg ca*cg | | de | de = | -sg cg 0 | | dX | dY = | cg -sa*sg ca*sg | | dn | and dn = |-sa*cg -sa*sg ca | | dY | dZ = | 0 ca sa | | du | du = | ca*cg ca*sg sa | | dZ |
- gnatss.ops.kalman.rts_smoother(Ts, Xs, Ps, F, Q, start_dt=0.05)#
- gnatss.ops.kalman.run_filter_simulation(records: NDArray, start_dt=0.05, gnss_pos_psd=3.125e-05, vel_psd=0.0025, cov_err=0.25) NDArray#
Performs Kalman filtering of the GPS_GEOCENTRIC and GPS_COV_DIAG fields
- Parameters:
- recordsNumpy Array
Numpy Array containing the fields # TODO -> Fill field names after verification of algorithm
- Returns:
- DataFrame
Pandas Dataframe containing Time and Kalman filtered GPS_GEOCENTRIC and GPS_COV_DIAG columns
- gnatss.ops.kalman.updateQ(Q, gnss_pos_psd=3.125e-05, vel_psd=0.0025)#
- gnatss.ops.kalman.update_position(row, Nx, X, P, R_position)#
- gnatss.ops.kalman.update_rpos(row, R_position)#
- gnatss.ops.kalman.update_vel_cov(row, R_velocity, rot)#
- gnatss.ops.kalman.update_velocity(Nx, X, P, R_velocity, v_xyz)#