Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
218 commits
Select commit Hold shift + click to select a range
c12b10f
init method
vegard-solum-4ss Mar 12, 2026
cc21eae
properties
vegard-solum-4ss Mar 12, 2026
f57c6ef
more methods
vegard-solum-4ss Mar 12, 2026
22271e3
more code
vegard-solum-4ss Mar 12, 2026
a70983c
project ahead
vegard-solum-4ss Mar 12, 2026
54a828a
rename to head
vegard-solum-4ss Mar 12, 2026
fa2a84a
more code
vegard-solum-4ss Mar 12, 2026
8a528a4
init and style
vegard-solum-4ss Mar 12, 2026
8d39d4e
remove obsolete import
vegard-solum-4ss Mar 12, 2026
a2962bd
delete obsolete function
vegard-solum-4ss Mar 12, 2026
553b2a2
euler method
vegard-solum-4ss Mar 12, 2026
45275d1
rename to AHRS
vegard-solum-4ss Mar 12, 2026
ffcbb23
gyro bias degrees flag
vegard-solum-4ss Mar 12, 2026
45f667b
degrees flag in angular rate
vegard-solum-4ss Mar 12, 2026
4cc61ff
v2b
vegard-solum-4ss Mar 13, 2026
49d98f7
reorder vel first
vegard-solum-4ss Mar 13, 2026
77e1cdd
some changes
vegard-solum-4ss Mar 13, 2026
ca6b57c
style
vegard-solum-4ss Mar 13, 2026
a23dd45
some fixces
vegard-solum-4ss Mar 13, 2026
b9f1fee
more fixes
vegard-solum-4ss Mar 13, 2026
784c23e
another fix
vegard-solum-4ss Mar 13, 2026
9adf6df
small fix
vegard-solum-4ss Mar 13, 2026
36df90a
bugfix
vegard-solum-4ss Mar 13, 2026
0bee53b
delete commented out code
vegard-solum-4ss Mar 13, 2026
347a3ae
common module
vegard-solum-4ss Mar 13, 2026
cf5b820
v2c
vegard-solum-4ss Mar 13, 2026
111e9ad
more changes to vc
vegard-solum-4ss Mar 13, 2026
b2104ce
style
vegard-solum-4ss Mar 13, 2026
a552467
move to v2 module
vegard-solum-4ss Mar 13, 2026
96f41d9
project ahead fix
vegard-solum-4ss Mar 13, 2026
3602c38
subtract gyro bias
vegard-solum-4ss Mar 13, 2026
f928c8f
v2d
vegard-solum-4ss Mar 13, 2026
1cf779f
init
vegard-solum-4ss Mar 13, 2026
96f6577
fix name
vegard-solum-4ss Mar 13, 2026
7318c5a
fix
vegard-solum-4ss Mar 13, 2026
e21c6dd
some fixes
vegard-solum-4ss Mar 13, 2026
52492e5
fix use correct timestamp dv dth v2c
vegard-solum-4ss Mar 13, 2026
8e6a4b1
keep only v2c
vegard-solum-4ss Mar 13, 2026
ce63486
delete obsolete functions
vegard-solum-4ss Mar 13, 2026
32e4dfa
docstring fix
vegard-solum-4ss Mar 13, 2026
137c215
precalculate dvel_g_corr
vegard-solum-4ss Mar 13, 2026
c853029
delete commented out method
vegard-solum-4ss Mar 13, 2026
9f116e9
fix correct quat with rotvec
vegard-solum-4ss Mar 13, 2026
9a9050a
black
vegard-solum-4ss Mar 13, 2026
9a6fee9
some changes
vegard-solum-4ss Mar 13, 2026
e63bdf8
small fix
vegard-solum-4ss Mar 13, 2026
122a884
delete old commented out code
vegard-solum-4ss Mar 14, 2026
6a900d3
few changes
vegard-solum-4ss Mar 14, 2026
2dc3856
style
vegard-solum-4ss Mar 14, 2026
82ece31
delete repeded code
vegard-solum-4ss Mar 14, 2026
144f59a
store dvel_prev
vegard-solum-4ss Mar 14, 2026
3cbbef6
some changes
vegard-solum-4ss Mar 14, 2026
f672efc
dvel and dtheta methods
vegard-solum-4ss Mar 14, 2026
4c9ade0
renaming
vegard-solum-4ss Mar 14, 2026
bfe3d18
small fix
vegard-solum-4ss Mar 16, 2026
3fdbb0a
some changes
vegard-solum-4ss Mar 16, 2026
ecb87ff
small fix
vegard-solum-4ss Mar 16, 2026
42a3169
remove idx slices
vegard-solum-4ss Mar 16, 2026
b5d96e8
docstring fix
vegard-solum-4ss Mar 16, 2026
ba368d1
small change
vegard-solum-4ss Mar 16, 2026
8f3ff97
psi xyz
vegard-solum-4ss Mar 17, 2026
ea457c6
velocity method
vegard-solum-4ss Mar 19, 2026
4618eb6
test v2
vegard-solum-4ss Mar 19, 2026
4eab3e0
adjust tolerance test
vegard-solum-4ss Mar 19, 2026
53ef2d1
test fix head aiding
vegard-solum-4ss Mar 19, 2026
6471514
docstring
vegard-solum-4ss Mar 19, 2026
f8ec4fb
rename module to ins v2
vegard-solum-4ss Mar 19, 2026
35da437
remove eye prealloc
vegard-solum-4ss Mar 19, 2026
63ec7cf
docstring fix
vegard-solum-4ss Mar 19, 2026
f246bd9
docstring
vegard-solum-4ss Mar 19, 2026
f27053b
small fix
vegard-solum-4ss Mar 20, 2026
edcdc01
check if aid is None
vegard-solum-4ss Mar 25, 2026
3bc96d7
remove dhdx methods
vegard-solum-4ss Mar 26, 2026
40473d7
hide v2
vegard-solum-4ss Mar 26, 2026
d531b5b
delete commented out code in test
vegard-solum-4ss Mar 26, 2026
a137e18
raise fix
vegard-solum-4ss Mar 27, 2026
838988c
refactor project ahead
vegard-solum-4ss Mar 27, 2026
3c50e8b
refactor reset
vegard-solum-4ss Mar 27, 2026
5fb27c7
small fix
vegard-solum-4ss Mar 27, 2026
e0d68b0
some changes
vegard-solum-4ss Mar 27, 2026
98570e8
rename functions
vegard-solum-4ss Mar 27, 2026
1497842
comment
vegard-solum-4ss Mar 27, 2026
c27890e
docstring fixes
vegard-solum-4ss Mar 27, 2026
c297bb1
docstring fix
vegard-solum-4ss Mar 27, 2026
9b4d080
remove need for dvel and dtheta attributes
vegard-solum-4ss Mar 28, 2026
7f17d48
small fix
vegard-solum-4ss Mar 28, 2026
f9dbdc6
small fix
vegard-solum-4ss Mar 30, 2026
95900d8
remove obsolete rot m,atrix attribute
vegard-solum-4ss Mar 31, 2026
70fc149
immutable default P0
vegard-solum-4ss Apr 1, 2026
fca3026
delete volocity project ahead function
vegard-solum-4ss Apr 1, 2026
541a006
innovation cov
vegard-solum-4ss Apr 1, 2026
719e326
add vruv2
ali-cetin-4ss Apr 30, 2026
4e94a9d
fix vru
ali-cetin-4ss May 7, 2026
cabdba7
refactor
ali-cetin-4ss May 8, 2026
56cf986
uncomment
ali-cetin-4ss May 8, 2026
4d36095
refactoring
ali-cetin-4ss May 12, 2026
dc5ee66
fix euler_acc
ali-cetin-4ss May 12, 2026
32fff5e
adding VRU + fixes + tests
ali-cetin-4ss Jun 12, 2026
eeb4ab1
skip test if tqdm installed
ali-cetin-4ss Jun 12, 2026
a9be028
docstring fix
ali-cetin-4ss Jun 12, 2026
c977ecd
add more vru tests
ali-cetin-4ss Jun 12, 2026
bd5d5cb
fix test
ali-cetin-4ss Jun 12, 2026
2924787
Merge branch 'main' into mekf-version2
ali-cetin-4ss Jun 12, 2026
986e313
tests
ali-cetin-4ss Jun 18, 2026
09cec81
fix tests
ali-cetin-4ss Jul 2, 2026
5e840c8
ains
ali-cetin-4ss Jul 3, 2026
c89a943
fix ahrs test
vegard-solum-4ss Aug 24, 2026
fb800ef
add ains v2 to init
vegard-solum-4ss Aug 24, 2026
f15aa13
fix test aind state transition init
vegard-solum-4ss Aug 24, 2026
1e43d99
small fix
vegard-solum-4ss Aug 24, 2026
8daa857
fix test state transition update
vegard-solum-4ss Aug 24, 2026
70dc931
fix test ains meas matrix
vegard-solum-4ss Aug 24, 2026
982f90b
black + isort
vegard-solum-4ss Aug 24, 2026
5abc5ba
fix ains process noise cov matrix
vegard-solum-4ss Aug 24, 2026
776b2fd
fix test process noise cov matrix
vegard-solum-4ss Aug 24, 2026
1455727
fix test ains reset
vegard-solum-4ss Aug 24, 2026
40631ba
fix test ains init
vegard-solum-4ss Aug 24, 2026
a041b19
fix test ains merthods
vegard-solum-4ss Aug 24, 2026
84a756f
fix tests ains bench no head
vegard-solum-4ss Aug 24, 2026
00d363b
add ains to init
vegard-solum-4ss Aug 24, 2026
29fcb59
start on new bench test
vegard-solum-4ss Aug 24, 2026
9294a73
test ains bench
vegard-solum-4ss Aug 24, 2026
16f189e
test fix
vegard-solum-4ss Aug 24, 2026
03936a7
bugfix pos update
vegard-solum-4ss Aug 24, 2026
f069c13
bugfix head aiding
vegard-solum-4ss Aug 24, 2026
2f59669
test bench fix
vegard-solum-4ss Aug 24, 2026
1e806d0
reduce head aid uncertainty
vegard-solum-4ss Aug 24, 2026
e980980
test fixes
vegard-solum-4ss Aug 24, 2026
1040c9b
use rmse in bench test
vegard-solum-4ss Aug 24, 2026
3d256e7
reduce pos error threshold
vegard-solum-4ss Aug 24, 2026
2aafee6
docstring fix
vegard-solum-4ss Aug 24, 2026
af92417
delete old commented out tests
vegard-solum-4ss Aug 24, 2026
ea423dd
delete obsolete imports
vegard-solum-4ss Aug 24, 2026
358378f
black python version to pyproject
vegard-solum-4ss Aug 24, 2026
a45d8df
small docstring fix
vegard-solum-4ss Aug 24, 2026
aae912f
dont return arrays from reset
vegard-solum-4ss Aug 24, 2026
5d6cdbd
in place methods dont return
vegard-solum-4ss Aug 24, 2026
9024426
dont return array if inplace update
vegard-solum-4ss Aug 24, 2026
7352a0a
small fix
vegard-solum-4ss Aug 24, 2026
275eb98
comments
vegard-solum-4ss Aug 24, 2026
744daf6
small fix
vegard-solum-4ss Aug 24, 2026
3604bfe
move raise exceptions out of aiding functions
vegard-solum-4ss Aug 24, 2026
102b193
rename initial value parameters
vegard-solum-4ss Aug 24, 2026
642b6f8
few fixes
vegard-solum-4ss Aug 24, 2026
ab8a43e
docstring
vegard-solum-4ss Aug 24, 2026
dd52764
delete obsolete imports
vegard-solum-4ss Aug 24, 2026
ae32f0c
small fix
vegard-solum-4ss Aug 24, 2026
28923c5
lever arm docstring fix
vegard-solum-4ss Aug 25, 2026
b698adc
docstring fixes
vegard-solum-4ss Aug 25, 2026
80b7d5f
remove default aiding variances AINS
vegard-solum-4ss Aug 25, 2026
5b6436a
comments adjustment
vegard-solum-4ss Aug 25, 2026
e13a470
docstring init
vegard-solum-4ss Aug 25, 2026
c72a41f
docstring fix lever arm
vegard-solum-4ss Aug 25, 2026
54123d4
black
vegard-solum-4ss Aug 25, 2026
98d9aaf
extend test mekf init default
vegard-solum-4ss Aug 25, 2026
6bd0b3c
test ains init
vegard-solum-4ss Aug 25, 2026
76b942a
test fix
vegard-solum-4ss Aug 25, 2026
7ee01ed
extend test
vegard-solum-4ss Aug 25, 2026
1374dcc
docstring fixes
vegard-solum-4ss Aug 25, 2026
fa41761
small fix
vegard-solum-4ss Aug 25, 2026
9ce9a59
fix gref_b_from_quat
vegard-solum-4ss Aug 25, 2026
d44a2a7
test ains bench gz bias
vegard-solum-4ss Aug 25, 2026
7030dc9
revert gz bias
vegard-solum-4ss Aug 25, 2026
b4e9fb5
test aind bench add gz bias
vegard-solum-4ss Aug 25, 2026
34591e0
collect ains tests in class
vegard-solum-4ss Aug 25, 2026
c1dfadf
delete old obsolete test
vegard-solum-4ss Aug 25, 2026
bdb9238
check that initial values are copied
vegard-solum-4ss Aug 25, 2026
1f71962
private ains P0
vegard-solum-4ss Aug 25, 2026
43ce94d
add gref aiding to ains
vegard-solum-4ss Aug 25, 2026
ea1cb6a
improve position integration
vegard-solum-4ss Aug 25, 2026
7ac6389
njit project state ahead
vegard-solum-4ss Aug 25, 2026
b9aea7e
refactor AHRS and update tests
vegard-solum-4ss Aug 25, 2026
f861d4b
delete obsolete code
vegard-solum-4ss Aug 25, 2026
7bd1d43
small fixes
vegard-solum-4ss Aug 25, 2026
869e85b
rename bench gref aid tests
vegard-solum-4ss Aug 25, 2026
cf623dd
small fix
vegard-solum-4ss Aug 25, 2026
3162e74
refactore VRU
vegard-solum-4ss Aug 25, 2026
587b8fe
delete old vru tests
vegard-solum-4ss Aug 25, 2026
ea61668
delete obsolete vrw param VRU
vegard-solum-4ss Aug 25, 2026
a2da7c1
docstring fix P shape
vegard-solum-4ss Aug 25, 2026
4e7dee3
njit gref aiding
vegard-solum-4ss Aug 26, 2026
77341a9
aiding in place functions dont return arrays
vegard-solum-4ss Aug 26, 2026
44e188f
in place kalman functions dont return
vegard-solum-4ss Aug 26, 2026
af13ba4
inplace operations dont return values
vegard-solum-4ss Aug 26, 2026
7df1427
comments fix
vegard-solum-4ss Aug 26, 2026
f803d69
rename ains old module
vegard-solum-4ss Aug 26, 2026
da0f831
rename old ains module to legacy
vegard-solum-4ss Aug 26, 2026
5101e3f
delete old obsolete tests of version 2
vegard-solum-4ss Aug 26, 2026
1332c47
clean up legacy module, delete duplicate code
vegard-solum-4ss Aug 26, 2026
f849757
remove trailing underscore from ins test folder name
vegard-solum-4ss Aug 26, 2026
171f591
comment fix
vegard-solum-4ss Aug 26, 2026
62a586f
test kalman update sequential
vegard-solum-4ss Aug 26, 2026
4639aaa
test kalman update scalar
vegard-solum-4ss Aug 26, 2026
8d5f596
test project covariance ahead
vegard-solum-4ss Aug 26, 2026
64255a4
test rename meas params
vegard-solum-4ss Aug 26, 2026
e220ca6
delete commented out test vru
vegard-solum-4ss Aug 26, 2026
6a5e70e
add default aiding to VRU
vegard-solum-4ss Aug 26, 2026
cf8e98e
default aiding test fix
vegard-solum-4ss Aug 26, 2026
16a1a96
test fix
vegard-solum-4ss Aug 26, 2026
771ec3d
add default aiding to AHRS
vegard-solum-4ss Aug 26, 2026
25c0abe
add default values to ains
vegard-solum-4ss Aug 26, 2026
21e884f
delete test aind bench gref
vegard-solum-4ss Aug 26, 2026
7c8b92d
delete test ahrs bench gref
vegard-solum-4ss Aug 26, 2026
4815e25
comment fix update phi
vegard-solum-4ss Aug 26, 2026
4796611
rename yaw methods + set default radians in signed smalles angle
vegard-solum-4ss Aug 26, 2026
1abdb2b
adjust angle thresholds bench tests
vegard-solum-4ss Aug 26, 2026
c18a7fa
move gref aiding vru
vegard-solum-4ss Aug 27, 2026
6ab22cb
move gref aiding for ahrs and ains
vegard-solum-4ss Aug 27, 2026
fb43887
fix half-sample shift in VRU
vegard-solum-4ss Aug 27, 2026
123f348
test vru bench check yaw also
vegard-solum-4ss Aug 27, 2026
2ad40c0
fix half sample shift ahrs bench test
vegard-solum-4ss Aug 27, 2026
c093ea9
fix half sample shift ains bench tests
vegard-solum-4ss Aug 27, 2026
a4ae09d
black
vegard-solum-4ss Aug 27, 2026
89c9a1e
small fix
vegard-solum-4ss Aug 27, 2026
dde75de
dvel dtheta simple approximation docstring
vegard-solum-4ss Aug 27, 2026
216707d
move gravity nav to common module
vegard-solum-4ss Aug 27, 2026
9e6bc86
rename version 2 filters to PVAMEKF, VAMEKF and AMEKF
vegard-solum-4ss Aug 27, 2026
132dea7
rename mekf modules based on the new names
vegard-solum-4ss Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,6 @@ directory = "coverage_html_report"
files = ["src/smsfusion"]
strict = true
ignore_missing_imports = true

[tool.black]
target-version = ["py312"]
29 changes: 21 additions & 8 deletions src/smsfusion/__init__.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,35 @@
from . import benchmark, calibrate, constants, noise
from ._coning_sculling import ConingScullingAlg, ConingScullingAlgCalibrated
from ._ins import AHRS, VRU, AidedINS, FixedNED, StrapdownINS, gravity
from ._ins import (
AHRS,
AMEKF,
PVAMEKF,
VAMEKF,
VRU,
AidedINS,
FixedNED,
StrapdownINS,
gravity,
)
from ._smoothing import FixedIntervalSmoother
from ._transforms import quaternion_from_euler

__all__ = [
"AHRS",
"AMEKF",
"PVAMEKF",
"VAMEKF",
"VRU",
"AidedINS",
"benchmark",
"constants",
"calibrate",
"ConingScullingAlg",
"ConingScullingAlgCalibrated",
"FixedIntervalSmoother",
"FixedNED",
"StrapdownINS",
"benchmark",
"calibrate",
"constants",
"gravity",
"noise",
"StrapdownINS",
"VRU",
"quaternion_from_euler",
"ConingScullingAlg",
"ConingScullingAlgCalibrated",
]
18 changes: 18 additions & 0 deletions src/smsfusion/_ins/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from ._ains_legacy import AHRS, VRU, AidedINS, StrapdownINS
from ._amekf import AMEKF
from ._pvamekf import PVAMEKF
from ._utils import FixedNED, euler_from_acc, gravity
from ._vamekf import VAMEKF

__all__ = [
"AHRS",
"AMEKF",
"PVAMEKF",
"VAMEKF",
"VRU",
"AidedINS",
"FixedNED",
"StrapdownINS",
"euler_from_acc",
"gravity",
]
93 changes: 93 additions & 0 deletions src/smsfusion/_ins/_aiding.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import numpy as np
from numba import njit
from numpy.typing import NDArray

from smsfusion._vectorops import _normalize

from ._common import (
_kalman_update_scalar,
_kalman_update_sequential,
_signed_smallest_angle,
_yaw_from_quaternion,
)


@njit # type: ignore[misc]
def _aiding_update_pos(
dx: NDArray[np.float64],
P: NDArray[np.float64],
H: NDArray[np.float64],
pos_n: NDArray[np.float64],
pos_meas: NDArray[np.float64],
pos_var: NDArray[np.float64],
R_nb: NDArray[np.float64],
lever_arm: NDArray[np.float64],
) -> None:
"""
Update (in place) the error state (dx) and the error covariance (P) with position
aiding measurement.
"""

if lever_arm.any():
dz = pos_meas - (pos_n + R_nb @ lever_arm)
else:
dz = pos_meas - pos_n

_kalman_update_sequential(dx, P, dz, pos_var, H) # -> update dx and P (in place)


@njit # type: ignore[misc]
def _aiding_update_vel(
dx: NDArray[np.float64],
P: NDArray[np.float64],
H: NDArray[np.float64],
vel_n: NDArray[np.float64],
vel_meas: NDArray[np.float64],
vel_var: NDArray[np.float64],
) -> None:
"""
Update (in place) the error state (dx) and the error covariance (P) with velocity
aiding measurement.
"""
dz = vel_meas - vel_n
_kalman_update_sequential(dx, P, dz, vel_var, H)


@njit # type: ignore[misc]
def _aiding_update_head(
dx: NDArray[np.float64],
P: NDArray[np.float64],
H: NDArray[np.float64],
q_nb: NDArray[np.float64],
head_meas: float,
head_var: float,
head_degrees: bool,
) -> None:
"""
Update (in place) the error state (dx) and the error covariance (P) with heading
aiding measurement.
"""

if head_degrees:
head_meas = (np.pi / 180.0) * head_meas
head_var = (np.pi / 180.0) ** 2 * head_var

dz = _signed_smallest_angle(head_meas - _yaw_from_quaternion(q_nb))
_kalman_update_scalar(dx, P, dz, head_var, H) # -> update dx and P (in place)


@njit # type: ignore[misc]
def _aiding_update_gref(
dx: NDArray[np.float64],
P: NDArray[np.float64],
H: NDArray[np.float64],
vg_b: NDArray[np.float64],
dvel: NDArray[np.float64],
gref_var: NDArray[np.float64],
) -> None:
"""
Update (in place) the error state (dx) and the error covariance (P) with gravity
reference vector aiding measurement.
"""
dz = -_normalize(dvel) - vg_b
_kalman_update_sequential(dx, P, dz, gref_var, H) # -> update dx and P (in place)
Loading
Loading