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