예제 #1
0
    def test_1waypoints(self):
        "The case where there is only one waypoint."
        pi = SplineInterpolator([0], [[1, 2, 3]])
        assert pi.dof == 3
        npt.assert_allclose(pi.get_path_interval(), np.r_[0, 0])
        npt.assert_allclose(pi.eval(0), np.r_[1, 2, 3])
        npt.assert_allclose(pi.evald(0), np.r_[0, 0, 0])

        npt.assert_allclose(pi.eval([0, 0]), [[1, 2, 3], [1, 2, 3]])
        npt.assert_allclose(pi.evald([0, 0]), [[0, 0, 0], [0, 0, 0]])
예제 #2
0
    def test_scalar(self, sswp, wp, ss, path_interval):
        "A scalar (dof=1) trajectory."
        pi = SplineInterpolator(sswp, wp)  # 1 + 2s + 3s^2
        assert pi.dof == 1

        assert pi.eval(ss).shape == (len(ss), )
        assert pi.evald(ss).shape == (len(ss), )
        assert pi.evaldd(ss).shape == (len(ss), )
        assert pi.eval(0).shape == ()
        npt.assert_allclose(pi.get_path_interval(), path_interval)
예제 #3
0
    def test_5_dof(self):
        pi = SplineInterpolator([0, 1], np.random.rand(2, 5))
        # [1 + 2s + 3s^2]
        # [-2 + 3s + 4s^2 + 5s^3]

        ss = np.linspace(0, 1, 10)
        assert pi.dof == 5
        assert pi.eval(ss).shape == (10, 5)
        assert pi.evald(ss).shape == (10, 5)
        assert pi.evaldd(ss).shape == (10, 5)
        npt.assert_allclose(pi.get_path_interval(), np.r_[0, 1])
예제 #4
0
 def test_2waypoints(self, xs, ys, yd):
     "There is only two waypoints. Linear interpolation is done between them."
     pi = SplineInterpolator(xs, ys, bc_type='natural')
     npt.assert_allclose(pi.get_path_interval(), xs)
     npt.assert_allclose(pi.evald((xs[0] + xs[1]) / 2), yd)
     npt.assert_allclose(pi.evaldd(0), np.zeros_like(ys[0]))