@@ -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