@@ -17,61 +17,50 @@ BOOST_AUTO_TEST_CASE(interpolate)
1717
1818 pinocchio::urdf::buildModel (urdf_path, JointModelFreeFlyer (), model);
1919 double timestep = 0.01 ;
20- StateInterpolator interpolator = StateInterpolator (model);
20+ Interpolator interpolator = Interpolator (model);
2121
22- std::vector<Eigen::VectorXd> xs;
22+ // Test configuration interpolation method
23+ std::vector<Eigen::VectorXd> qs;
2324 for (std::size_t i = 0 ; i < 4 ; i++)
2425 {
25- Eigen::VectorXd x0 (model.nq + model. nv );
26- x0. tail (model.nv ). setRandom ( );
27- x0. head (model. nq ) = pinocchio::neutral (model);
26+ Eigen::VectorXd q0 (model.nq );
27+ Eigen::VectorXd q1 (model.nq );
28+ q0 = pinocchio::neutral (model);
2829 Eigen::VectorXd dq (model.nv );
2930 dq.setRandom ();
30- pinocchio::integrate (model, x0. head (model. nq ) , dq, x0. head (model. nq ) );
31+ pinocchio::integrate (model, q0 , dq, q1 );
3132
32- xs .push_back (x0 );
33+ qs .push_back (q1 );
3334 }
3435 double delay = 0.02 ;
3536
36- Eigen::VectorXd x_interp (model.nq + model. nv );
37- interpolator.interpolate (delay, timestep, xs, x_interp );
37+ Eigen::VectorXd q_interp (model.nq );
38+ interpolator.interpolateConfiguration (delay, timestep, qs, q_interp );
3839
39- BOOST_CHECK (xs [2 ].isApprox (x_interp ));
40+ BOOST_CHECK (qs [2 ].isApprox (q_interp ));
4041
4142 delay = 0.5 ;
42- interpolator.interpolate (delay, timestep, xs, x_interp );
43- BOOST_CHECK (xs .back ().isApprox (x_interp ));
43+ interpolator.interpolateConfiguration (delay, timestep, qs, q_interp );
44+ BOOST_CHECK (qs .back ().isApprox (q_interp ));
4445
4546 delay = 0.005 ;
46- interpolator.interpolate (delay, timestep, xs, x_interp );
47- Eigen::VectorXd x_interp2 (model.nq + model. nv );
47+ interpolator.interpolateConfiguration (delay, timestep, qs, q_interp );
48+ Eigen::VectorXd q_interp2 (model.nq );
4849 Eigen::VectorXd dq (model.nv );
49- pinocchio::difference (model, xs[0 ].head (model.nq ), xs[1 ].head (model.nq ), dq);
50- pinocchio::integrate (model, xs[0 ].head (model.nq ), dq * 0.5 , x_interp2.head (model.nq ));
51- x_interp2.tail (model.nv ) = (xs[0 ].tail (model.nv ) + xs[1 ].tail (model.nv )) * 0.5 ;
50+ pinocchio::difference (model, qs[0 ], qs[1 ], dq);
51+ pinocchio::integrate (model, qs[0 ], dq * 0.5 , q_interp2);
5252
53- BOOST_CHECK (x_interp2 .isApprox (x_interp ));
53+ BOOST_CHECK (q_interp2 .isApprox (q_interp ));
5454
55- std::vector<Eigen::VectorXd> xs2 ;
55+ std::vector<Eigen::VectorXd> qs2 ;
5656 for (std::size_t i = 0 ; i < 2 ; i++)
5757 {
58- xs2 .push_back (xs [0 ]);
58+ qs2 .push_back (qs [0 ]);
5959 }
60- interpolator.interpolate (delay, timestep, xs2, x_interp);
61- BOOST_CHECK (xs2[0 ].isApprox (x_interp));
62- }
63-
64- BOOST_AUTO_TEST_CASE (linear_interpolate)
65- {
66- Model model;
67- // Load pinocchio model from example robot data
68- const std::string urdf_path = EXAMPLE_ROBOT_DATA_MODEL_DIR " /solo_description/robots/solo12.urdf" ;
69- const std::string srdf_path = EXAMPLE_ROBOT_DATA_MODEL_DIR " /solo_description/srdf/solo.srdf" ;
70-
71- pinocchio::urdf::buildModel (urdf_path, JointModelFreeFlyer (), model);
72- double timestep = 0.01 ;
73- LinearInterpolator interpolator = LinearInterpolator ((size_t )model.nv );
60+ interpolator.interpolateConfiguration (delay, timestep, qs2, q_interp);
61+ BOOST_CHECK (qs2[0 ].isApprox (q_interp));
7462
63+ // Test linear interpolation method
7564 std::vector<Eigen::VectorXd> vs;
7665 for (std::size_t i = 0 ; i < 4 ; i++)
7766 {
@@ -80,18 +69,17 @@ BOOST_AUTO_TEST_CASE(linear_interpolate)
8069
8170 vs.push_back (v0);
8271 }
83- double delay = 0.02 ;
84-
72+ delay = 0.02 ;
8573 Eigen::VectorXd v_interp (model.nv );
86- interpolator.interpolate (delay, timestep, vs, v_interp);
74+ interpolator.interpolateLinear (delay, timestep, vs, v_interp);
8775 BOOST_CHECK (vs[2 ].isApprox (v_interp));
8876
8977 delay = 0.5 ;
90- interpolator.interpolate (delay, timestep, vs, v_interp);
78+ interpolator.interpolateLinear (delay, timestep, vs, v_interp);
9179 BOOST_CHECK (vs.back ().isApprox (v_interp));
9280
9381 delay = 0.005 ;
94- interpolator.interpolate (delay, timestep, vs, v_interp);
82+ interpolator.interpolateLinear (delay, timestep, vs, v_interp);
9583 Eigen::VectorXd v_interp2 (model.nv );
9684 v_interp2 = (vs[0 ] + vs[1 ]) * 0.5 ;
9785
@@ -102,7 +90,7 @@ BOOST_AUTO_TEST_CASE(linear_interpolate)
10290 {
10391 vs2.push_back (vs[0 ]);
10492 }
105- interpolator.interpolate (delay, timestep, vs2, v_interp);
93+ interpolator.interpolateLinear (delay, timestep, vs2, v_interp);
10694 BOOST_CHECK (vs2[0 ].isApprox (v_interp));
10795}
10896
0 commit comments