@@ -2198,16 +2198,16 @@ void runCalcJacobianTransformErrorDiffTest(double anlge)
21982198 }
21992199}
22002200
2201- void runCalcJacobianTransformErrorDiffDynamicTargetTest (double anlge )
2201+ void runCalcJacobianTransformErrorDiffDynamicTargetTest (double angle )
22022202{
22032203 Eigen::Isometry3d identity = Eigen::Isometry3d::Identity ();
22042204 const double eps = 0.001 ;
22052205 { // X-Axis positive
22062206 Eigen::Isometry3d target_tf{ identity };
22072207 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2208- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (-eps, Eigen::Vector3d::UnitX ());
2209- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitX ());
2210- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge + eps, Eigen::Vector3d::UnitX ());
2208+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (-eps, Eigen::Vector3d::UnitX ()) * target_tf ;
2209+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitX ());
2210+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle + eps, Eigen::Vector3d::UnitX ());
22112211 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22122212 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
22132213 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2217,9 +2217,9 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
22172217 { // X-Axis negative
22182218 Eigen::Isometry3d target_tf{ identity };
22192219 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2220- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitX ());
2221- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitX ());
2222- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitX ());
2220+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitX ()) * target_tf ;
2221+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitX ());
2222+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitX ());
22232223 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22242224 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
22252225 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2229,9 +2229,9 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
22292229 { // X-Axis positive and negative
22302230 Eigen::Isometry3d target_tf{ identity };
22312231 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2232- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitX ());
2233- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge + eps, Eigen::Vector3d::UnitX ());
2234- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitX ());
2232+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitX ()) * target_tf ;
2233+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle + eps, Eigen::Vector3d::UnitX ());
2234+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitX ());
22352235 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22362236 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
22372237 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2241,22 +2241,23 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
22412241 { // X-Axis translation
22422242 Eigen::Isometry3d target_tf{ identity };
22432243 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2244- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitX ());
2245- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge, Eigen::Vector3d::UnitX ());
2246- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitX ());
2247- source_tf_perturbed.translation () += Eigen::Vector3d (eps, -eps, eps);
2244+ Eigen::Isometry3d target_tf_perturbed =
2245+ Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitX ()) * target_tf * Eigen::Translation3d (eps, -eps, eps);
2246+ ;
2247+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle, Eigen::Vector3d::UnitX ());
2248+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitX ());
22482249 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22492250 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
2250- EXPECT_TRUE (diff.head (3 ).isApprox (Eigen::Vector3d (eps, - eps, eps)));
2251+ EXPECT_TRUE (diff.head (3 ).isApprox (Eigen::Vector3d (- eps, eps, - eps)));
22512252 EXPECT_TRUE (diff.tail (3 ).isApprox (Eigen::Vector3d (-2 * eps, 0 , 0 )));
22522253 }
22532254
22542255 { // Y-Axis positive
22552256 Eigen::Isometry3d target_tf{ identity };
22562257 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2257- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (-eps, Eigen::Vector3d::UnitY ());
2258- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitY ());
2259- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge + eps, Eigen::Vector3d::UnitY ());
2258+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (-eps, Eigen::Vector3d::UnitY ()) * target_tf ;
2259+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitY ());
2260+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle + eps, Eigen::Vector3d::UnitY ());
22602261 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22612262 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
22622263 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2266,9 +2267,9 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
22662267 { // Y-Axis negative
22672268 Eigen::Isometry3d target_tf{ identity };
22682269 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2269- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitY ());
2270- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitY ());
2271- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitY ());
2270+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitY ()) * target_tf ;
2271+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitY ());
2272+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitY ());
22722273 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22732274 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
22742275 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2278,9 +2279,9 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
22782279 { // Y-Axis positive and negative
22792280 Eigen::Isometry3d target_tf{ identity };
22802281 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2281- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitY ());
2282- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge + eps, Eigen::Vector3d::UnitY ());
2283- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitY ());
2282+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitY ()) * target_tf ;
2283+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle + eps, Eigen::Vector3d::UnitY ());
2284+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitY ());
22842285 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22852286 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
22862287 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2290,22 +2291,22 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
22902291 { // Y-Axis translation
22912292 Eigen::Isometry3d target_tf{ identity };
22922293 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2293- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitY ());
2294- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitY ());
2295- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps , Eigen::Vector3d::UnitY ());
2296- source_tf_perturbed. translation () += Eigen::Vector3d (-eps, eps, -eps );
2294+ Eigen::Isometry3d target_tf_perturbed =
2295+ Eigen::AngleAxisd (eps , Eigen::Vector3d::UnitY ()) * target_tf * Eigen::Translation3d (-eps, eps, -eps );
2296+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitY ());
2297+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitY () );
22972298 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
22982299 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
2299- EXPECT_TRUE (diff.head (3 ).isApprox (Eigen::Vector3d (- eps, eps, - eps)));
2300+ EXPECT_TRUE (diff.head (3 ).isApprox (Eigen::Vector3d (eps, - eps, eps)));
23002301 EXPECT_TRUE (diff.tail (3 ).isApprox (Eigen::Vector3d (0 , -2 * eps, 0 )));
23012302 }
23022303
23032304 { // Z-Axis positive
23042305 Eigen::Isometry3d target_tf{ identity };
23052306 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2306- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (-eps, Eigen::Vector3d::UnitZ ());
2307- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitZ ());
2308- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge + eps, Eigen::Vector3d::UnitZ ());
2307+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (-eps, Eigen::Vector3d::UnitZ ()) * target_tf ;
2308+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitZ ());
2309+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle + eps, Eigen::Vector3d::UnitZ ());
23092310 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
23102311 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
23112312 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2315,9 +2316,9 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
23152316 { // Z-Axis negative
23162317 Eigen::Isometry3d target_tf{ identity };
23172318 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2318- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitZ ());
2319- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitZ ());
2320- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitZ ());
2319+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitZ ()) * target_tf ;
2320+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitZ ());
2321+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitZ ());
23212322 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
23222323 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
23232324 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2327,9 +2328,9 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
23272328 { // Z-Axis positive and negative
23282329 Eigen::Isometry3d target_tf{ identity };
23292330 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2330- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitZ ());
2331- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge + eps, Eigen::Vector3d::UnitZ ());
2332- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps, Eigen::Vector3d::UnitZ ());
2331+ Eigen::Isometry3d target_tf_perturbed = Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitZ ()) * target_tf ;
2332+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle + eps, Eigen::Vector3d::UnitZ ());
2333+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitZ ());
23332334 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
23342335 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
23352336 EXPECT_TRUE (tesseract_common::almostEqualRelativeAndAbs (diff.head (3 ), Eigen::Vector3d::Zero ()));
@@ -2339,13 +2340,13 @@ void runCalcJacobianTransformErrorDiffDynamicTargetTest(double anlge)
23392340 { // Z-Axis translation
23402341 Eigen::Isometry3d target_tf{ identity };
23412342 target_tf.translation () = Eigen::Vector3d (1 , 2 , 3 );
2342- Eigen::Isometry3d target_tf_perturbed = target_tf * Eigen::AngleAxisd (eps, Eigen::Vector3d::UnitZ ());
2343- Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (anlge , Eigen::Vector3d::UnitZ ());
2344- Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (anlge - eps , Eigen::Vector3d::UnitZ ());
2345- source_tf_perturbed. translation () += Eigen::Vector3d (-eps, - eps, eps );
2343+ Eigen::Isometry3d target_tf_perturbed =
2344+ Eigen::AngleAxisd (eps , Eigen::Vector3d::UnitZ ()) * target_tf * Eigen::Translation3d (-eps, -eps, eps );
2345+ Eigen::Isometry3d source_tf = identity * Eigen::AngleAxisd (angle , Eigen::Vector3d::UnitZ ());
2346+ Eigen::Isometry3d source_tf_perturbed = identity * Eigen::AngleAxisd (angle - eps, Eigen::Vector3d::UnitZ () );
23462347 Eigen::VectorXd diff = tesseract_common::calcJacobianTransformErrorDiff (
23472348 target_tf, target_tf_perturbed, source_tf, source_tf_perturbed);
2348- EXPECT_TRUE (diff.head (3 ).isApprox (Eigen::Vector3d (- eps, - eps, eps)));
2349+ EXPECT_TRUE (diff.head (3 ).isApprox (Eigen::Vector3d (eps, eps, - eps)));
23492350 EXPECT_TRUE (diff.tail (3 ).isApprox (Eigen::Vector3d (0 , 0 , -2 * eps)));
23502351 }
23512352}
0 commit comments