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]])
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)
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])
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]))