Skip to content

Commit 0b57894

Browse files
committed
(PyKDL) also test with ChainIkSolverVel_pinv_givens
1 parent 6859c52 commit 0b57894

File tree

1 file changed

+28
-11
lines changed

1 file changed

+28
-11
lines changed

python_orocos_kdl/tests/kinfamtest.py

Lines changed: 28 additions & 11 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,13 +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):
224-
eps_j = 5e-6
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):
225232
q = JntArray(self.chain.getNrOfJoints())
226233
for i in range(q.rows()):
227234
q[i] = random.uniform(-3.14, 3.14)
@@ -235,12 +242,20 @@ def testFkPosAndIkPos(self):
235242
F1 = Frame.Identity()
236243
F2 = Frame.Identity()
237244

238-
self.assertTrue(0 == self.fksolverpos.JntToCart(q, F1))
239-
self.assertTrue(0 == self.iksolverpos.CartToJnt(q_init, F1, q_solved))
240-
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))
241248

242249
self.assertEqual(F1, F2)
243-
self.assertTrue(Equal(q, q_solved, eps_j), "{} != {}".format(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)
244259

245260
def compare_Jdot_Diff_vs_Solver(self, dt, representation):
246261
NrOfJoints = self.chain.getNrOfJoints()
@@ -339,7 +354,9 @@ def suite():
339354
suite.addTest(KinfamTestFunctions('testFkPosAndJac'))
340355
suite.addTest(KinfamTestFunctions('testFkVelAndJac'))
341356
suite.addTest(KinfamTestFunctions('testFkVelAndIkVel'))
357+
suite.addTest(KinfamTestFunctions('testFkVelAndIkVelGivens'))
342358
suite.addTest(KinfamTestFunctions('testFkPosAndIkPos'))
359+
suite.addTest(KinfamTestFunctions('testFkPosAndIkPosGivens'))
343360
suite.addTest(KinfamTestFunctions('testJacDot'))
344361
suite.addTest(KinfamTestTree('testTreeGetChainMemLeak'))
345362
return suite

0 commit comments

Comments
 (0)