def test_target_position_VI(self): """Yet another real-world problem case.""" solver = TrajectorySolver(32, 1., 2.5, -5.0, -5.0, -2.5) try: spline = solver.target_position(Knot(0.0, 10.160758018493652, -5.0, 28.024999999999999), Knot(67.214868918397073, 0, 0, None)) ## self.plot_it(spline, solver, "test_target_position_VI") ## self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], 67.214868918397073, 5) self.assertAlmostEqual(spline.v[-1], 0, 5) self.assertAlmostEqual(spline.a[-1], 0, 5) self.assertTrue(spline.t[-1] - spline.t[0] < 60) except OptimizationError, err: import random while True: try: new_durations = [random.random() for h in err.durations] print "initial hs:", new_durations solver.target_position_none(Knot(0.0, 10.160758018493652, -5.0, 28.024999999999999), Knot(67.214868918397073, 0, 0, None), new_durations) except OptimizationError as err: print "Soln hs:", solver._soln_spline.h self.plot_it(solver._soln_spline, solver, "test_remix...") else: print "Soln hs:", solver._soln_spline.h self.plot_it(solver._soln_spline, solver, "test_remix...") break
def test_target_position_none_III(self): """Travelling in reverse.""" solver = TrajectorySolver(30, 5, 2.5, -30, -5, -2.5) spline = solver.target_position_none(Knot(0,0,0,0), Knot(-10,0,0,0)) ## self.plot_it(spline, solver, "test_target_position_none_III") self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], -10, 5) self.assertAlmostEqual(spline.v[-1], 0, 5) self.assertAlmostEqual(spline.a[-1], 0, 5) self.assertTrue(spline.t[-1] < 6)
def test_target_position_none_I(self): """Zero endpoints""" solver = TrajectorySolver(30, 5, 2.5) spline = solver.target_position_none(Knot(0,0,0,0), Knot(10,0,0,0)) # self.plot_it(spline, solver) self.validate_spline(spline, solver) self.assertAlmostEqual(spline.q[-1], 10, 5) self.assertAlmostEqual(spline.v[-1], 0, 5) self.assertAlmostEqual(spline.a[-1], 0, 5) self.assertTrue(spline.t[-1] < 6)