From ab5f4e011b7d65865366c07cb43211eef9c82358 Mon Sep 17 00:00:00 2001 From: Florian Pfaff Date: Sun, 17 Sep 2023 21:39:56 +0200 Subject: [PATCH] Added SE2StateSpaceSubdivisionGaussianDistribution --- ...space_subdivision_gaussian_distribution.py | 5 ++++ ...space_subdivision_gaussian_distribution.py | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 pyrecest/distributions/cart_prod/se2_state_space_subdivision_gaussian_distribution.py create mode 100644 pyrecest/tests/distributions/test_se2_state_space_subdivision_gaussian_distribution.py diff --git a/pyrecest/distributions/cart_prod/se2_state_space_subdivision_gaussian_distribution.py b/pyrecest/distributions/cart_prod/se2_state_space_subdivision_gaussian_distribution.py new file mode 100644 index 000000000..4c8800ddd --- /dev/null +++ b/pyrecest/distributions/cart_prod/se2_state_space_subdivision_gaussian_distribution.py @@ -0,0 +1,5 @@ +from pyrecest.distributions.cart_prod.hypercylindrical_state_space_subdivision_gaussian_distribution import HypercylindricalStateSpaceSubdivisionGaussianDistribution +from pyrecest.distributions.abstract_se2_distribution import AbstractSE2Distribution + +class SE2StateSpaceSubdivisionGaussianDistribution(HypercylindricalStateSpaceSubdivisionGaussianDistribution, AbstractSE2Distribution): + pass diff --git a/pyrecest/tests/distributions/test_se2_state_space_subdivision_gaussian_distribution.py b/pyrecest/tests/distributions/test_se2_state_space_subdivision_gaussian_distribution.py new file mode 100644 index 000000000..e8a092025 --- /dev/null +++ b/pyrecest/tests/distributions/test_se2_state_space_subdivision_gaussian_distribution.py @@ -0,0 +1,26 @@ +import unittest +import numpy as np +from pyrecest.distributions.se2_state_space_subdivision_gaussian_distribution import SE2StateSpaceSubdivisionGaussianDistribution +from pyrecest.distributions import VonMisesDistribution, GaussianDistribution +from pyrecest.distributions.circle.circular_grid_distribution import CircularGridDistribution + +class TestSE2StateSpaceSubdivisionGaussianDistribution(unittest.TestCase): + + def test_constructor(self): + n = 100 + vm = VonMisesDistribution(0, 1) + fig = CircularGridDistribution.from_distribution(vm, n) + gaussians = np.array([GaussianDistribution(np.array([0, 0]), np.eye(2)) for _ in range(n)]) + SE2StateSpaceSubdivisionGaussianDistribution(fig, gaussians) + + def test_plotting(self): + n = 100 + vm = VonMisesDistribution(0, 1) + fig = CircularGridDistribution.from_distribution(vm, n) + gaussians = np.array([GaussianDistribution(np.array([0, 0]), np.eye(2)) for _ in range(n)]) + apd = SE2StateSpaceSubdivisionGaussianDistribution(fig, gaussians) + apd.plot_state() # No assertion is needed, as we only check if the plotting function runs without errors + + +if __name__ == "__main__": + unittest.main()