55 ControlBoxFunction ,
66 StateErrorResidual ,
77 manifolds ,
8+ has_pinocchio_features ,
89)
910import numpy as np
11+ import pytest
12+
13+ # Attempt importing Pinocchio at least. Then, check if the Python module
14+ # has Pinocchio features.
15+ try :
16+ import pinocchio as pin
17+
18+ HAS_PINOCCHIO = has_pinocchio_features ()
19+ except ImportError :
20+ HAS_PINOCCHIO = False
1021
1122
1223def test_compute_jac_vs ():
@@ -31,32 +42,28 @@ def test_compute_jac_vs():
3142 assert np .allclose (fdata1 .Jy , fdata1b .Jy , 1e-2 )
3243
3344
45+ @pytest .mark .skipif (not HAS_PINOCCHIO , reason = "Pinocchio bindings not present." )
3446def test_compute_jac_multibody ():
35- try :
36- import pinocchio as pin
37-
38- model = pin .buildSampleModelHumanoid ()
39- space = manifolds .MultibodyConfiguration (model )
40- nu = 3
41- x_tar = space .neutral ()
42- fun2 = StateErrorResidual (space , nu , x_tar )
43- fdata2 = fun2 .createData ()
44- fun2_fd = FiniteDifferenceHelper (space , fun2 , 1e-6 )
45- fdata2b = fun2_fd .createData ()
46- for i in range (1000 ):
47- x0 = pin .randomConfiguration (model , - np .ones (model .nq ), np .ones (model .nq ))
48- u0 = 0.6 * np .ones (nu )
49- fun2 .evaluate (x0 , u0 , x0 , fdata2 )
50- fun2_fd .evaluate (x0 , u0 , x0 , fdata2b )
51- assert np .allclose (fdata2 .value , fdata2b .value , 1e-2 )
52- fun2 .computeJacobians (x0 , u0 , x0 , fdata2 )
53- fun2_fd .computeJacobians (x0 , u0 , x0 , fdata2b )
54- assert np .allclose (fdata2 .Jx , fdata2b .Jx , 1e-2 )
55- assert np .allclose (fdata2 .Ju , fdata2b .Ju , 1e-2 )
56- assert np .allclose (fdata2 .Jy , fdata2b .Jy , 1e-2 )
57- return
58- except ImportError :
59- pass
47+ model = pin .buildSampleModelHumanoid ()
48+ space = manifolds .MultibodyConfiguration (model )
49+ nu = 3
50+ x_tar = space .neutral ()
51+ fun2 = StateErrorResidual (space , nu , x_tar )
52+ fdata2 = fun2 .createData ()
53+ fun2_fd = FiniteDifferenceHelper (space , fun2 , 1e-6 )
54+ fdata2b = fun2_fd .createData ()
55+ for i in range (1000 ):
56+ x0 = pin .randomConfiguration (model , - np .ones (model .nq ), np .ones (model .nq ))
57+ u0 = 0.6 * np .ones (nu )
58+ fun2 .evaluate (x0 , u0 , x0 , fdata2 )
59+ fun2_fd .evaluate (x0 , u0 , x0 , fdata2b )
60+ assert np .allclose (fdata2 .value , fdata2b .value , 1e-2 )
61+ fun2 .computeJacobians (x0 , u0 , x0 , fdata2 )
62+ fun2_fd .computeJacobians (x0 , u0 , x0 , fdata2b )
63+ assert np .allclose (fdata2 .Jx , fdata2b .Jx , 1e-2 )
64+ assert np .allclose (fdata2 .Ju , fdata2b .Ju , 1e-2 )
65+ assert np .allclose (fdata2 .Jy , fdata2b .Jy , 1e-2 )
66+ return
6067
6168
6269def test_compute_cost_se3 ():
0 commit comments