def test_target_position_amax_I(self): """Doesn't reach v_max, but does reach a_max""" solver = TrajectorySolver(60, 5, 2.5) # zero endpoints spline = solver.target_position_amax(Knot(0,0,0,0), Knot(200,0,0,0)) ## self.plot_it(spline, solver) self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], 200, self.PLACES) self.assertAlmostEqual(spline.v[-1], 0, self.PLACES) self.assertAlmostEqual(spline.a[-1], 0, self.PLACES) self.assertAlmostEqual(spline.t[-1], 14.8062484748, self.PLACES) # non-zero endpoints spline = solver.target_position_amax(Knot(0,1,-1,0), Knot(200,2,1,0)) # self.plot_it(spline, solver) self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], 200, self.PLACES) self.assertAlmostEqual(spline.v[-1], 2, self.PLACES) self.assertAlmostEqual(spline.a[-1], 1, self.PLACES) self.assertAlmostEqual(spline.t[-1], 14.98258766288, self.PLACES)
def test_target_position_amax_II(self): """Travelling in reverse""" solver = TrajectorySolver(60, 5, 2.5, -60, -5, -2.5) # zero endpoints spline = solver.target_position_amax(Knot(200,0,0,0), Knot(0,0,0,0)) ## self.plot_it(spline, solver) self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], 0, self.PLACES) self.assertAlmostEqual(spline.v[-1], 0, self.PLACES) self.assertAlmostEqual(spline.a[-1], 0, self.PLACES) self.assertAlmostEqual(spline.t[-1], 14.8062484748, self.PLACES) solver = TrajectorySolver(60, 5, 2.5) # non-zero endpoints spline = solver.target_position_amax(Knot(200,2,1,0), Knot(0,1,-1,0)) # self.plot_it(spline, solver) self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], 0, self.PLACES) self.assertAlmostEqual(spline.v[-1], 1, self.PLACES) self.assertAlmostEqual(spline.a[-1], -1, self.PLACES) self.assertAlmostEqual(spline.t[-1], 16.451805322, self.PLACES)