35 #include <gtest/gtest.h> 
   42 #include "fcl_resources/config.h" 
   53   const S radius_1 = 20;
 
   54   const S radius_2 = 10;
 
   71   distance(&s1, tf1, &s2, tf2, request, result);
 
   87   distance(&s1, tf1, &s2, tf2, request, result);
 
  102   distance(&s1, tf1, &s2, tf2, request, result);
 
  105       (tf1.translation() - tf2.translation()).norm() - radius_1 - radius_2;
 
  111     Vector3<S> dir = (tf2.translation() - tf1.translation()).normalized();
 
  114                                 distance_tolerance));
 
  115     Vector3<S> p1_expected = tf2.translation() - dir * radius_2;
 
  117                                 distance_tolerance));
 
  121 template <
typename S>
 
  140   distance(&s1, tf1, &s2, tf2, request, result);
 
  150   distance(&s1, tf1, &s2, tf2, request, result);
 
  157   ASSERT_NEAR(result.
min_distance, -5, distance_tolerance);
 
  162                                 distance_tolerance * 100));
 
  164                                 distance_tolerance * 100));
 
  169 template <
typename S>
 
  179   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometry<S>>;
 
  180   const S cylinder_radius = 0.03;
 
  181   const S cylinder_length = 0.65;
 
  182   CollisionGeometryPtr_t cylinder_geo(
 
  185   X_WC.translation() << 0.6, 0, 0.325;
 
  188   const S sphere_radius = 0.055;
 
  189   CollisionGeometryPtr_t sphere_geo(
new fcl::Sphere<S>(sphere_radius));
 
  192   X_WS.matrix() << -0.9954758066,  -0.0295866301,  0.0902914702,  0.5419794018,
 
  193                    -0.0851034786,  -0.1449450565, -0.9857729599, -0.0621175025,
 
  194                     0.0422530022,  -0.9889972506,  0.1417713719,  0.6016236576,
 
  205   ASSERT_NO_THROW(
fcl::distance(&cylinder, &sphere, request, result));
 
  212   EXPECT_LE(abs(p_CPc(2)), cylinder_length / 2);
 
  213   EXPECT_LE(p_CPc.template head<2>().norm(), cylinder_radius);
 
  217   EXPECT_LE(p_SPs.norm(), sphere_radius);
 
  220 template <
typename S>
 
  225   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  226   CollisionGeometryPtr_t cylinder_geo(
 
  230   CollisionGeometryPtr_t box_geo(
 
  231       new fcl::Box<S>(box_size(0), box_size(1), box_size(2)));
 
  240   ASSERT_NO_THROW(
fcl::distance(&cylinder, &box, request, result));
 
  248   EXPECT_LE(abs(p_CPc(2)), cylinder_length / 2 + tol);
 
  249   EXPECT_LE(p_CPc.template head<2>().norm(), cylinder_radius);
 
  253   EXPECT_TRUE((p_BPb.array().abs() <= box_size.array() / 2 + tol).all());
 
  256 template <
typename S>
 
  263   S cylinder_radius = 0.05;
 
  264   S cylinder_length = 0.06;
 
  267   X_WC.matrix() << -0.99999999997999022838, 6.2572835802045040178e-10,
 
  268       6.3260669852976095481e-06, 0.57500009756757608503,
 
  269       6.3260669851683709551e-06, -6.3943303429958554955e-10,
 
  270       0.99999999997999056145, -0.42711963046787942977,
 
  271       6.2573180158128459924e-10, 1, 6.3942912945996747041e-10,
 
  272       1.1867093358746836351, 0, 0, 0, 1;
 
  276   X_WB.matrix() << 0, -1, 0, 0.8,
 
  285   X_WC.matrix() << -0.97313010759279283679, -0.12202804064972551379,
 
  286       0.19526123781136842106, 0.87472781461138560122, 0.20950801135757171623,
 
  287       -0.11745920593569325607, 0.97072639199619581429, -0.4038687881347159947,
 
  288       -0.095520609678929752073, 0.98555187191549953329, 0.13986894183635001365,
 
  289       1.5871328698116491385, 0, 0, 0, 1;
 
  291   X_WB.matrix() << 0, -1, 0, 0.8,
 
  300 template <
typename S>
 
  306   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  307   CollisionGeometryPtr_t box1_geo(
 
  308       new fcl::Box<S>(box1_size(0), box1_size(1), box1_size(2)));
 
  311   CollisionGeometryPtr_t box2_geo(
 
  312       new fcl::Box<S>(box2_size(0), box2_size(1), box2_size(2)));
 
  321   ASSERT_NO_THROW(
fcl::distance(&box1, &box2, request, result));
 
  329   const double tol_1 = tol * 
std::max(S(1), (box1_size / 2).maxCoeff());
 
  331       (p_B1P1.array().abs() <= (box1_size / 2).array() + tol_1).all())
 
  332       << 
"\n  p_B1P1: " << p_B1P1.transpose()
 
  333       << 
"\n  box1_size / 2: " << (box1_size / 2).transpose()
 
  334       << 
"\n  tol: " << tol_1;
 
  337   const double tol_2 = tol * 
std::max(S(1), (box2_size / 2).maxCoeff());
 
  340       (p_B2P2.array().abs() <= (box2_size / 2).array() + tol_2).all())
 
  341       << 
"\n  p_B2P2: " << p_B2P2.transpose()
 
  342       << 
"\n  box2_size / 2: " << (box2_size / 2).transpose()
 
  343       << 
"\n  tol: " << tol_2;
 
  356 template <
typename S>
 
  358   SCOPED_TRACE(
"test_distance_box_box_regression1");
 
  361   X_WB1.matrix() << -3.0627937852578681533e-08, -0.99999999999999888978,
 
  362       -2.8893865161583314238e-08, 0.63499979627350811029, 0.9999999999999980016,
 
  363       -3.0627939739957803544e-08, 6.4729926918527511769e-08,
 
  364       -0.48500002215636439651, -6.4729927722963847085e-08,
 
  365       -2.8893863029448751323e-08, 0.99999999999999711342, 1.0778146458339641356,
 
  368   const Vector3<S> box2_size(0.025, 0.35, 1.845);
 
  371   X_WB2.matrix() << 0, -1, 0, 0.8,
 
  382 template <
typename S>
 
  384   SCOPED_TRACE(
"test_distance_box_box_regression2");
 
  387   X_WB1.matrix() <<  1,0,0, -0.72099999999999997424,
 
  388                       0,1,0, -0.77200000000000001954,
 
  389                       0,0,1,  0.81000000000000005329,
 
  392   const Vector3<S> box2_size(0.049521, 0.146, 0.0725);
 
  395   X_WB2.matrix() << 0.10758262492983036718,  -0.6624881850015212903, -0.74130653817877356637, -0.42677133002999478872,
 
  396  0.22682184885125472595,   -0.709614040775253474,   0.6670830248314786326, -0.76596851247746788882,
 
  397 -0.96797615037608542021, -0.23991106241273435495,  0.07392465377049164954,  0.80746731400091054098,
 
  406 template <
typename S>
 
  408   SCOPED_TRACE(
"test_distance_box_box_regression3");
 
  412   X_WB1.matrix() << 4.8966386501092529215e-12, -1,0,-0.43999999999999994671,
 
  413                        1, 4.8966386501092529215e-12,0,-0.61499999999858001587,
 
  414                        0,0,1,0.35499999999999998224,
 
  417   const Vector3<S> box2_size(0.035, 0.12, 0.03);
 
  420   X_WB2.matrix() << 0.83512153565236335595,    -0.55006546945762568868, -9.4542360608233572896e-16,    -0.40653441507331000704,
 
  421    0.55006546945762568868,     0.83512153565236313391,  1.1787444236552387666e-15,    -0.69166166923735727945,
 
  422 1.2902271444330665572e-16, -1.4878153530113264589e-15,                          1,     0.43057093858718892276,
 
  430 template <
typename S>
 
  432   SCOPED_TRACE(
"test_distance_box_box_regression4");
 
  435   X_WB1.translation() << -0.675, 0, 0.9115;
 
  436   const Vector3<S> box2_size(0.494, 0.552, 0.01);
 
  438   X_WB2.translation() << -0.692, 0, 0.935;
 
  444 template <
typename S>
 
  446   SCOPED_TRACE(
"test_distance_box_box_regression5");
 
  449   X_WB1.translation() << -0.071000000000000035305, -0.77200000000000001954, 0.79999999999999993339;
 
  452   X_WB2.translation() << 0.12099999999999999645, -0.78769605692727695523, 0.53422044196125151316;
 
  456 template <
typename S>
 
  458   SCOPED_TRACE(
"test_distance_box_box_regression6");
 
  459   const Vector3<S> box1_size(0.31650000000000000355, 0.22759999999999999676, 0.1768000000000000127);
 
  462   X_WB1.matrix() << 0.44540578475530234748,    0.89532881496493399442,   -8.8937407685638678971e-09, 1.2652949075960071568,
 
  463                    -0.89532881496493377238,    0.44540578475530190339,   -2.8948680226084145336e-08, 1.4551012423210101243,
 
  464                    -2.1957263975186326105e-08, 2.0856732016652919226e-08, 0.99999999999999955591,    0.49480006232932938204,
 
  467   const Vector3<S> box2_size(0.49430000000000001714, 0.35460000000000002629, 0.075200000000000002953);
 
  470   X_WB2.matrix() << 0.44171122913485860728,    0.8971572827861190591,    -1.622764514865468214e-09,  1.1304016226141906376,
 
  471                    -0.8971572827861190591,     0.44171122913485860728,   -5.1621053952306079594e-09, 1.8410802645284281009,
 
  472                    -3.9144271413829990148e-09, 3.7360349218094348098e-09, 1,                         0.44400006232932492933,
 
  480 template <
typename S>
 
  483   SCOPED_TRACE(
"test_distance_box_box_regression7");
 
  484   const Vector3<S> box1_size(0.050000000000000002776, 0.55000000000000004441, 0.2999999999999999889);
 
  487   X_WB1.matrix() << 0.00079632671073326442932, -0.99999968293183538748, 0, 0.75000000000000055511,
 
  488   0.99999968293183538748, 0.00079632671073326442932, 0, -2.4083553715553102684e-15,
 
  489   0, 0, 1, 0.14999999999999999445,
 
  492   const Vector3<S> box2_size(0.25, 0.2000000000000000111,
 
  493                              0.14999999999999999445);
 
  496   X_WB2.matrix() << 6.1232339957367660359e-17, 0, 1, 0.75,
 
  497   -1, 6.1232339957367660359e-17, 6.1232339957367660359e-17, 0,
 
  498   -6.1232339957367660359e-17, -1, 3.7493994566546440196e-33, 0.14999999999999999445,
 
  513 template <
typename S>
 
  515   SCOPED_TRACE(
"test_distance_box_box_regression_tilted_kissing_contact");
 
  521        0.94096063217417758029, 0.29296840037289501035, 0.16959541586174811667,
 
  522       -0.23569836841299879326, 0.92661523595848427348, -0.29296840037289506586,
 
  523       -0.2429801799032638987, 0.23569836841299884878, 0.94096063217417758029;
 
  525   for (
const S dim : {S(0.01), S(0.25), S(0.5), S(10), S(1000)}) {
 
  530     X_WA.linear() = R_WF;
 
  531     X_WA.translation() = p_WA;
 
  533     X_WB.linear() = R_WF;
 
  542     for (
const S 
distance : {S(-1e-15), S(-2.5e-16), S(-1e-16), S(0), S(1e-16),
 
  543                              S(2.5e-16), S(1e-15)}) {
 
  547       X_WB.translation() = p_WA + R_WF * p_AB_F;
 
  548       SCOPED_TRACE(
"dim: " + std::to_string(dim) +
 
  549                    ", distance: " + std::to_string(
distance));
 
  559 template <
typename S>
 
  561   SCOPED_TRACE(
"test_distance_sphere_box_regression1");
 
  562   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometry<S>>;
 
  563   const S sphere_radius = 0.06;
 
  564   CollisionGeometryPtr_t sphere_geo(
new fcl::Sphere<S>(sphere_radius));
 
  567   X_WS.matrix() << -0.99999999999999955591,     -4.4637642593504144998e-09,  0,                      1.7855056639081962376e-10,
 
  568                     4.4637642593504144998e-09,  -0.99999999999999955591,     0,                      0.039999999999999993894,
 
  569                     0,                           0,                          1.0000000000000008882,  0.33000000000000012657,
 
  574   CollisionGeometryPtr_t box_geo(
new fcl::Box<S>(0.1, 0.1, 0.1));
 
  577   X_WB.matrix() << 1, 0, 0, 0.05,
 
  589   ASSERT_NO_THROW(
fcl::distance(&sphere, &box, request, result));
 
  595 template <
typename S>
 
  600   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  602       std::make_shared<
const std::vector<
Vector3<S>>>(
 
  604               Vector3<S>(0.5, 0.70710700000000004106, -0.70710700000000004106),
 
  608               Vector3<S>(0.5, -0.70710700000000004106, -0.70710700000000004106),
 
  610               Vector3<S>(-0.5, -0.70710700000000004106, 0.70710700000000004106),
 
  611               Vector3<S>(-0.5, 0.70710700000000004106, 0.70710700000000004106),
 
  614               Vector3<S>(-0.5, 0.70710700000000004106, -0.70710700000000004106),
 
  617                          -0.70710700000000004106),
 
  619               Vector3<S>(0.5, 0.70710700000000004106, 0.70710700000000004106),
 
  620               Vector3<S>(0.5, -0.70710700000000004106, 0.70710700000000004106),
 
  623       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  624           4,  4,  12, 11, 1,  4,  13, 7,  14, 2,  4,  2, 0,  10, 13,
 
  625           4,  11, 10, 0,  1,  8,  2,  14, 8,  15, 3,  4, 1,  0,  4,
 
  626           3,  9,  12, 4,  4,  15, 6,  9,  3,  8,  12, 9, 6,  5,  7,
 
  627           13, 10, 11, 4,  14, 7,  5,  8,  4,  8,  5,  6, 15,
 
  632   X_WG1.matrix() << -2.0399676677885372849e-09, 0.77129744817973977522, -0.63647485922966484662, 11.477445682202462862,
 
  633   2.4720879917217940548e-09, 0.63647485922966484662, 0.77129744817973977522, 9.7785056920756936449,
 
  634   1, 0, -3.2051032938795742666e-09, 0,
 
  642               Vector3<S>(10.294759000000000881, 8.9321570000000001244, -0.5),
 
  643               Vector3<S>(11.618370999999999782, 9.4565629999999991639, -0.5),
 
  644               Vector3<S>(11.452372999999999692, 8.2276720000000000965, -0.5),
 
  645               Vector3<S>(10.294759000000000881, 8.9321570000000001244, 0.5),
 
  646               Vector3<S>(11.452372999999999692, 8.2276720000000000965, 0.5),
 
  647               Vector3<S>(11.618370999999999782, 9.4565629999999991639, 0.5),
 
  650       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  651           3, 3, 4, 5, 4, 4, 2, 1, 5, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
 
  661   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
  667 template <
typename S>
 
  671   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  673       std::make_shared<
const std::vector<
Vector3<S>>>(
 
  675               Vector3<S>(0.5, 0.5, -0.86602500000000004476),
 
  676               Vector3<S>(0.5, -0.5, -0.86602500000000004476),
 
  678               Vector3<S>(-0.5, -0.5, 0.86602500000000004476),
 
  679               Vector3<S>(-0.5, 0.5, 0.86602500000000004476),
 
  681               Vector3<S>(0.5, -0.5, 0.86602500000000004476),
 
  682               Vector3<S>(-0.5, 0.5, -0.86602500000000004476),
 
  683               Vector3<S>(-0.5, -0.5, -0.86602500000000004476),
 
  689       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  690           4, 10, 5, 8, 1, 6, 2, 11, 6,  10, 1, 0,  4, 0,  7,
 
  691           9, 2,  4, 1, 8, 7, 0, 4,  2,  9,  4, 11, 6, 8,  5,
 
  692           3, 4,  9, 7, 4, 6, 3, 5,  10, 4,  4, 3,  6, 11,
 
  698     -3.0140487242790098936e-09, 0.34009658459984087875, -0.94039051098122172778, 4.2864836941313040342,
 
  699     1.090044683538143324e-09, 0.94039051098122172778, 0.34009658459984087875, 7.3869576872253679412,
 
  700     1, 0, -3.2051032938795742666e-09, 0,
 
  708               Vector3<S>(4.1494020000000002568, 8.4937090000000008416, -0.5),
 
  709               Vector3<S>(5.1884509999999997021, 7.476263000000000325, -0.5),
 
  710               Vector3<S>(3.9316469999999998919, 7.3745029999999998083, -0.5),
 
  711               Vector3<S>(4.1494020000000002568, 8.4937090000000008416, 0.5),
 
  712               Vector3<S>(3.9316469999999998919, 7.3745029999999998083, 0.5),
 
  713               Vector3<S>(5.1884509999999997021, 7.476263000000000325, 0.5),
 
  716       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  717           3, 5, 3, 4, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
 
  727   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
  733 template <
typename S>
 
  737   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  739       std::make_shared<
const std::vector<
Vector3<S>>>(
 
  742               Vector3<S>(0.5, 0.62348999999999998867, -0.7818310000000000537),
 
  743               Vector3<S>(0.5, -0.22252099999999999658, -0.97492800000000001681),
 
  744               Vector3<S>(0.5, 0.62348999999999998867, 0.7818310000000000537),
 
  745               Vector3<S>(-0.5, -0.90096900000000001985, 0.4338839999999999919),
 
  746               Vector3<S>(-0.5, -0.22252099999999999658, 0.97492800000000001681),
 
  747               Vector3<S>(-0.5, -0.90096900000000001985, -0.4338839999999999919),
 
  748               Vector3<S>(0.5, -0.90096900000000001985, 0.4338839999999999919),
 
  749               Vector3<S>(-0.5, 0.62348999999999998867, -0.7818310000000000537),
 
  750               Vector3<S>(-0.5, 0.62348999999999998867, 0.7818310000000000537),
 
  752                          -0.97492800000000001681),
 
  754               Vector3<S>(0.5, -0.90096900000000001985, -0.4338839999999999919),
 
  755               Vector3<S>(0.5, -0.22252099999999999658, 0.97492800000000001681),
 
  758       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  759           4, 10, 2, 12, 6, 4,  1,  8, 11, 0, 4,  10, 8, 1,  2,  7, 2,
 
  760           1, 0,  3, 13, 7, 12, 4,  9, 3,  0, 11, 4,  9, 5,  13, 3, 7,
 
  761           8, 10, 6, 4,  5, 9,  11, 4, 12, 7, 4,  6,  4, 13, 5,  4, 7,
 
  767     -2.0479437360480804916e-09, -0.76923712747984118732, -0.63896341186844385351, 13.670417904867957049,
 
  768     -2.4654844510601008403e-09, 0.63896341186844385351, -0.76923712747984118732, 13.169816779836704512,
 
  769     1, 0, -3.2051032938795742666e-09, 0,
 
  777               Vector3<S>(14.835100999999999871, 13.060409999999999187, -0.5),
 
  778               Vector3<S>(13.785037000000000873, 12.890523999999999205, -0.5),
 
  779               Vector3<S>(14.767995000000000871, 13.150247999999999493, -0.5),
 
  780               Vector3<S>(14.835100999999999871, 13.060409999999999187, 0.5),
 
  781               Vector3<S>(14.767995000000000871, 13.150247999999999493, 0.5),
 
  782               Vector3<S>(13.785037000000000873, 12.890523999999999205, 0.5),
 
  785       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  786           3, 3, 4, 5, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 5, 1, 0, 3,
 
  796   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
  802 template <
typename S>
 
  806   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  808       std::make_shared<
const std::vector<
Vector3<S>>>(
 
  810               Vector3<S>(0.5, -0.92388000000000003453, 0.38268299999999999539),
 
  811               Vector3<S>(-0.5, 0.92388000000000003453, -0.38268299999999999539),
 
  812               Vector3<S>(0.5, 0.92388000000000003453, -0.38268299999999999539),
 
  813               Vector3<S>(-0.5, 0.92388000000000003453, 0.38268299999999999539),
 
  815                          -0.38268299999999999539),
 
  816               Vector3<S>(0.5, 0.92388000000000003453, 0.38268299999999999539),
 
  817               Vector3<S>(-0.5, -0.92388000000000003453, 0.38268299999999999539),
 
  818               Vector3<S>(0.5, -0.92388000000000003453, -0.38268299999999999539),
 
  821       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  822           4, 3, 6, 0, 5, 4, 7, 2, 5, 0, 4, 6, 4, 7, 0,
 
  823           4, 2, 1, 3, 5, 4, 3, 1, 4, 6, 4, 7, 4, 1, 2,
 
  829     -2.6487935924268804787e-09, -0.56303944378188575115, -0.82643002410717436579, 15.712812998638135298,
 
  830     -1.8045995758494454423e-09, 0.82643002410717436579, -0.56303944378188575115, 10.219809745800642276,
 
  831     1, 0, -3.2051032938795742666e-09, 0,
 
  839               Vector3<S>(15.417082000000000619, 9.6986209999999992704, -0.5),
 
  840               Vector3<S>(16.236605000000000842, 9.2332309999999999661, -0.5),
 
  841               Vector3<S>(16.224319999999998743, 8.9158489999999996911, -0.5),
 
  842               Vector3<S>(15.417082000000000619, 9.6986209999999992704, 0.5),
 
  843               Vector3<S>(16.224319999999998743, 8.9158489999999996911, 0.5),
 
  844               Vector3<S>(16.236605000000000842, 9.2332309999999999661, 0.5),
 
  847       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  848           3, 3, 4, 5, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 4, 3, 0, 2, 4, 5, 1, 0, 3,
 
  858   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
  864 template <
typename S>
 
  868   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  870       std::make_shared<
const std::vector<
Vector3<S>>>(
 
  872               Vector3<S>(0.5, 0.5, -0.86602500000000004476),
 
  873               Vector3<S>(0.5, -0.5, -0.86602500000000004476),
 
  875               Vector3<S>(-0.5, -0.5, 0.86602500000000004476),
 
  876               Vector3<S>(-0.5, 0.5, 0.86602500000000004476),
 
  878               Vector3<S>(0.5, -0.5, 0.86602500000000004476),
 
  879               Vector3<S>(-0.5, 0.5, -0.86602500000000004476),
 
  880               Vector3<S>(-0.5, -0.5, -0.86602500000000004476),
 
  886       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  887           4, 10, 5, 8, 1, 6, 2, 11, 6,  10, 1, 0,  4, 0,  7,
 
  888           9, 2,  4, 1, 8, 7, 0, 4,  2,  9,  4, 11, 6, 8,  5,
 
  889           3, 4,  9, 7, 4, 6, 3, 5,  10, 4,  4, 3,  6, 11,
 
  895     -2.2411796174427631456e-09, 0.7148738189791493669, -0.69925347545662319693, 6.3335747278141161232,
 
  896     2.2912444319183419853e-09, 0.69925347545662319693, 0.7148738189791493669, 8.4631576303276716544,
 
  897     1, 0, -3.2051032938795742666e-09, 0,
 
  905               Vector3<S>(5.2423630000000001061, 9.1228110000000004476, -0.5),
 
  906               Vector3<S>(6.3596640000000004278, 8.2852599999999991809, -0.5),
 
  907               Vector3<S>(5.6703770000000002227, 7.5985389999999997102, -0.5),
 
  908               Vector3<S>(5.2423630000000001061, 9.1228110000000004476, 0.5),
 
  909               Vector3<S>(5.6703770000000002227, 7.5985389999999997102, 0.5),
 
  910               Vector3<S>(6.3596640000000004278, 8.2852599999999991809, 0.5),
 
  913       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  914           3, 3, 4, 5, 4, 4, 2, 1, 5, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
 
  924   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
  930 template <
typename S>
 
  934   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
  936       std::make_shared<
const std::vector<
Vector3<S>>>(
 
  938               Vector3<S>(0.5, 0.30901699999999998614, -0.95105700000000004124),
 
  940               Vector3<S>(-0.5, -0.80901699999999998614, 0.58778500000000000192),
 
  941               Vector3<S>(-0.5, 0.30901699999999998614, 0.95105700000000004124),
 
  943                          -0.58778500000000000192),
 
  944               Vector3<S>(0.5, -0.80901699999999998614, 0.58778500000000000192),
 
  945               Vector3<S>(-0.5, 0.30901699999999998614, -0.95105700000000004124),
 
  947               Vector3<S>(0.5, -0.80901699999999998614, -0.58778500000000000192),
 
  948               Vector3<S>(0.5, 0.30901699999999998614, 0.95105700000000004124),
 
  951       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  952           4, 0, 6, 7, 1, 5, 9, 5, 8, 0, 1, 4, 0, 8, 4, 6, 4, 1, 7,
 
  953           3, 9, 5, 6, 4, 2, 3, 7, 4, 8, 5, 2, 4, 4, 3, 2, 5, 9,
 
  959     -3.1934130613594990691e-09, -0.085331461972016672823, -0.99635261910516315087, 11.261494468063983021,
 
  960     -2.7349614983807029573e-10, 0.99635261910516315087, -0.085331461972016672823, 5.7102314848013024928,
 
  961     1, 0, -3.2051032938795742666e-09, 0,
 
  969               Vector3<S>(10.924768999999999508, 5.6701019999999999754, -0.5),
 
  970               Vector3<S>(10.83925699999999992, 4.8329899999999996751, -0.5),
 
  971               Vector3<S>(11.452507000000000659, 5.5209809999999999164, -0.5),
 
  972               Vector3<S>(10.924768999999999508, 5.6701019999999999754, 0.5),
 
  973               Vector3<S>(11.452507000000000659, 5.5209809999999999164, 0.5),
 
  974               Vector3<S>(10.83925699999999992, 4.8329899999999996751, 0.5),
 
  977       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
  978           3, 4, 3, 5, 4, 5, 1, 2, 4, 3, 1, 0, 2, 4, 2, 0, 3, 4, 4, 5, 3, 0, 1,
 
  988   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
  994 template <
typename S>
 
  998   using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
 
 1000       std::make_shared<
const std::vector<
Vector3<S>>>(
 
 1002               Vector3<S>(-0.5, -0.5, -0.86602500000000004476),
 
 1003               Vector3<S>(-0.5, -0.5, 0.86602500000000004476),
 
 1005               Vector3<S>(0.5, -0.5, -0.86602500000000004476),
 
 1007               Vector3<S>(0.5, -0.5, 0.86602500000000004476),
 
 1010       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
 1011           3, 5, 3, 4, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
 
 1017     -3.155367699156126597e-09, -0.17548349096519452739, -0.98448237383849002136, 9.4277544959429171456,
 
 1018     -5.6244271491403150214e-10, 0.98448237383849002136, -0.17548349096519452739, 4.3549730982604870633,
 
 1019     1, 0, -3.2051032938795742666e-09, 0,
 
 1027               Vector3<S>(7.502455000000000318, 3.9926669999999999661, -0.5),
 
 1028               Vector3<S>(7.9127499999999999503, 2.7334600000000000009, -0.5),
 
 1029               Vector3<S>(8.6743819999999995929, 3.7108469999999997846, -0.5),
 
 1030               Vector3<S>(7.502455000000000318, 3.9926669999999999661, 0.5),
 
 1031               Vector3<S>(8.6743819999999995929, 3.7108469999999997846, 0.5),
 
 1032               Vector3<S>(7.9127499999999999503, 2.7334600000000000009, 0.5),
 
 1035       std::make_shared<std::vector<int>>(std::initializer_list<int>{
 
 1036           3, 3, 5, 4, 4, 5, 1, 2, 4, 3, 1, 0, 2, 4, 4, 2, 0, 3, 4, 3, 0, 1, 5,
 
 1046   ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
 
 1055   test_distance_spheresphere<double>(
GST_LIBCCD);
 
 1059   test_distance_spheresphere<double>(
GST_INDEP);
 
 1063   test_distance_spherecapsule<double>(
GST_LIBCCD);
 
 1067   test_distance_spherecapsule<double>(
GST_INDEP);
 
 1071   test_distance_cylinder_sphere1<double>();
 
 1075   test_distance_cylinder_box<double>();
 
 1082   test_distance_box_box_regression1<double>();
 
 1086   test_distance_box_box_regression2<double>();
 
 1090   test_distance_box_box_regression3<double>();
 
 1094   test_distance_box_box_regression4<double>();
 
 1098   test_distance_box_box_regression5<double>();
 
 1102   test_distance_box_box_regression6<double>();
 
 1106   test_distance_box_box_regression7<double>();
 
 1110   test_distance_box_box_regression_tilted_kissing_contact<double>();
 
 1114   test_distance_sphere_box_regression1<double>();
 
 1118   test_distance_convex_to_convex1<double>();
 
 1122   test_distance_convex_to_convex2<double>();
 
 1126   test_distance_convex_to_convex3<double>();
 
 1130   test_distance_convex_to_convex4<double>();
 
 1134   test_distance_convex_to_convex5<double>();
 
 1138   test_distance_convex_to_convex6<double>();
 
 1142   test_distance_convex_to_convex7<double>();
 
 1147   ::testing::InitGoogleTest(&argc, argv);
 
 1148   return RUN_ALL_TESTS();