Skip to content

Commit 29f2329

Browse files
Merge pull request #281 from orocos/fix/tests
First step into fixing inconsistent test results
2 parents 546d04d + 0b57894 commit 29f2329

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

python_orocos_kdl/tests/PyKDLtest.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939
import jointtypetest
4040
suite.addTest(jointtypetest.suite())
4141

42-
result = unittest.TextTestRunner(verbosity=3).run(suite)
42+
if __name__ == "__main__":
43+
result = unittest.TextTestRunner(verbosity=3).run(suite)
4344

44-
if result.wasSuccessful():
45-
sys.exit(0)
46-
else:
47-
sys.exit(1)
45+
if result.wasSuccessful():
46+
sys.exit(0)
47+
else:
48+
sys.exit(1)

python_orocos_kdl/tests/kinfamtest.py

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ def setUp(self):
7575
self.fksolverpos = ChainFkSolverPos_recursive(self.chain)
7676
self.fksolvervel = ChainFkSolverVel_recursive(self.chain)
7777
self.iksolvervel = ChainIkSolverVel_pinv(self.chain)
78+
self.iksolvervel_givens = ChainIkSolverVel_pinv_givens(self.chain)
7879
self.iksolverpos = ChainIkSolverPos_NR(self.chain, self.fksolverpos, self.iksolvervel)
80+
self.iksolverpos_givens = ChainIkSolverPos_NR(self.chain, self.fksolverpos, self.iksolvervel_givens)
7981

8082
def testRotationalInertia(self):
8183
ri = RotationalInertia(1, 2, 3, 4, 7, 5)
@@ -201,9 +203,7 @@ def testFkVelAndJac(self):
201203
MultiplyJacobian(jac, qvel.qdot, t)
202204
self.assertEqual(cart.deriv(), t)
203205

204-
def testFkVelAndIkVel(self):
205-
epsJ = 1E-7
206-
206+
def testFkVelAndIkVelImpl(self, fksolvervel, iksolvervel, epsJ):
207207
q = JntArray(self.chain.getNrOfJoints())
208208
qdot = JntArray(self.chain.getNrOfJoints())
209209
for i in range(q.rows()):
@@ -215,12 +215,20 @@ def testFkVelAndIkVel(self):
215215

216216
cart = FrameVel()
217217

218-
self.assertTrue(0 == self.fksolvervel.JntToCart(qvel, cart))
219-
self.assertTrue(0 == self.iksolvervel.CartToJnt(qvel.q, cart.deriv(), qdot_solved))
218+
self.assertTrue(0 == fksolvervel.JntToCart(qvel, cart))
219+
self.assertTrue(0 == iksolvervel.CartToJnt(qvel.q, cart.deriv(), qdot_solved))
220220

221221
self.assertEqual(qvel.qdot, qdot_solved)
222222

223-
def testFkPosAndIkPos(self):
223+
def testFkVelAndIkVel(self):
224+
epsJ = 1e-7
225+
self.testFkVelAndIkVelImpl(self.fksolvervel, self.iksolvervel, epsJ)
226+
227+
def testFkVelAndIkVelGivens(self):
228+
epsJ = 1e-7
229+
self.testFkVelAndIkVelImpl(self.fksolvervel, self.iksolvervel_givens, epsJ)
230+
231+
def testFkPosAndIkPosImpl(self, fksolverpos, iksolverpos, epsJ):
224232
q = JntArray(self.chain.getNrOfJoints())
225233
for i in range(q.rows()):
226234
q[i] = random.uniform(-3.14, 3.14)
@@ -234,12 +242,20 @@ def testFkPosAndIkPos(self):
234242
F1 = Frame.Identity()
235243
F2 = Frame.Identity()
236244

237-
self.assertTrue(0 == self.fksolverpos.JntToCart(q, F1))
238-
self.assertTrue(0 == self.iksolverpos.CartToJnt(q_init, F1, q_solved))
239-
self.assertTrue(0 == self.fksolverpos.JntToCart(q_solved, F2))
245+
self.assertTrue(0 == fksolverpos.JntToCart(q, F1))
246+
self.assertTrue(0 == iksolverpos.CartToJnt(q_init, F1, q_solved))
247+
self.assertTrue(0 == fksolverpos.JntToCart(q_solved, F2))
240248

241249
self.assertEqual(F1, F2)
242-
self.assertEqual(q, q_solved)
250+
self.assertTrue(Equal(q, q_solved, epsJ), "{} != {}".format(q, q_solved))
251+
252+
def testFkPosAndIkPos(self):
253+
epsJ = 1e-3
254+
self.testFkPosAndIkPosImpl(self.fksolverpos, self.iksolverpos, epsJ)
255+
256+
def testFkPosAndIkPosGivens(self):
257+
epsJ = 1e-3
258+
self.testFkPosAndIkPosImpl(self.fksolverpos, self.iksolverpos_givens, epsJ)
243259

244260
def compare_Jdot_Diff_vs_Solver(self, dt, representation):
245261
NrOfJoints = self.chain.getNrOfJoints()
@@ -338,7 +354,9 @@ def suite():
338354
suite.addTest(KinfamTestFunctions('testFkPosAndJac'))
339355
suite.addTest(KinfamTestFunctions('testFkVelAndJac'))
340356
suite.addTest(KinfamTestFunctions('testFkVelAndIkVel'))
357+
suite.addTest(KinfamTestFunctions('testFkVelAndIkVelGivens'))
341358
suite.addTest(KinfamTestFunctions('testFkPosAndIkPos'))
359+
suite.addTest(KinfamTestFunctions('testFkPosAndIkPosGivens'))
342360
suite.addTest(KinfamTestFunctions('testJacDot'))
343361
suite.addTest(KinfamTestTree('testTreeGetChainMemLeak'))
344362
return suite

0 commit comments

Comments
 (0)