3 #include <benchmark/benchmark.h> 
   23   std::string path = 
"package://tesseract_support/urdf/lbr_iiwa_14_r820.urdf";
 
   29   std::string path = 
"package://tesseract_support/urdf/lbr_iiwa_14_r820.srdf";
 
   31   auto srdf = std::make_shared<SRDFModel>();
 
   32   srdf->initFile(scene_graph, locator.
locateResource(path)->getFilePath(), locator);
 
   46     for (Eigen::Index i = 0; i < traj.rows(); i++)
 
   48       benchmark::DoNotOptimize(transform_map = fn(traj.row(i)));
 
   60     for (Eigen::Index i = 0; i < traj.rows(); i++)
 
   62       benchmark::DoNotOptimize(transform_map = fn(traj.row(i)));
 
   69                                                         std::vector<std::string> joint_names,
 
   71                                                         std::string link_name)
 
   73   Eigen::MatrixXd jacobian;
 
   76     for (Eigen::Index i = 0; i < traj.rows(); i++)
 
   78       benchmark::DoNotOptimize(jacobian = state_solver->getJacobian(joint_names, traj.row(i), link_name));
 
   88     for (Eigen::Index i = 0; i < traj.rows(); i++)
 
   90       benchmark::DoNotOptimize(transforms = fn(traj.row(i)));
 
   98                                   std::string link_name)
 
  100   Eigen::MatrixXd jacobian;
 
  103     for (Eigen::Index i = 0; i < traj.rows(); i++)
 
  105       benchmark::DoNotOptimize(jacobian = manip->calcJacobian(traj.row(i), link_name));
 
  110 int main(
int argc, 
char** argv)
 
  113   auto env = std::make_shared<Environment>();
 
  116   env->init(*scene_graph, srdf);
 
  117   env->setResourceLocator(std::make_shared<tesseract_common::GeneralResourceLocator>());
 
  120   std::vector<std::string> joint_names;
 
  121   joint_names.emplace_back(
"joint_a1");
 
  122   joint_names.emplace_back(
"joint_a2");
 
  123   joint_names.emplace_back(
"joint_a3");
 
  124   joint_names.emplace_back(
"joint_a4");
 
  125   joint_names.emplace_back(
"joint_a5");
 
  126   joint_names.emplace_back(
"joint_a6");
 
  127   joint_names.emplace_back(
"joint_a7");
 
  129   Eigen::VectorXd joint_start_pos(7);
 
  130   joint_start_pos(0) = -0.4;
 
  131   joint_start_pos(1) = 0.2762;
 
  132   joint_start_pos(2) = 0.0;
 
  133   joint_start_pos(3) = -1.3348;
 
  134   joint_start_pos(4) = 0.0;
 
  135   joint_start_pos(5) = 1.4959;
 
  136   joint_start_pos(6) = 0.0;
 
  138   Eigen::VectorXd joint_end_pos(7);
 
  139   joint_end_pos(0) = 0.4;
 
  140   joint_end_pos(1) = 0.2762;
 
  141   joint_end_pos(2) = 0.0;
 
  142   joint_end_pos(3) = -1.3348;
 
  143   joint_end_pos(4) = 0.0;
 
  144   joint_end_pos(5) = 1.4959;
 
  145   joint_end_pos(6) = 0.0;
 
  147   Eigen::VectorXd joint_pos_collision(7);
 
  148   joint_pos_collision(0) = 0.0;
 
  149   joint_pos_collision(1) = 0.2762;
 
  150   joint_pos_collision(2) = 0.0;
 
  151   joint_pos_collision(3) = -1.3348;
 
  152   joint_pos_collision(4) = 0.0;
 
  153   joint_pos_collision(5) = 1.4959;
 
  154   joint_pos_collision(6) = 0.0;
 
  157   for (
int i = 0; i < joint_start_pos.size(); ++i)
 
  158     traj.col(i) = Eigen::VectorXd::LinSpaced(5, joint_start_pos(i), joint_end_pos(i));
 
  162   std::string tip_link{ 
"tool0" };
 
  172       return local_ss->getState(joint_names, state).link_transforms;
 
  177     std::string 
name = 
"BM_GET_STATE_JOINT_NAMES_JOINT_VALUES_SS";
 
  178     benchmark::RegisterBenchmark(
name.c_str(), BM_GET_STATE_JN_JV_SS, fn, traj)
 
  180         ->Unit(benchmark::TimeUnit::kMicrosecond);
 
  186       local_ss->setState(joint_names, state);
 
  187       return local_ss->getState().link_transforms;
 
  192     std::string 
name = 
"BM_SET_AND_GET_STATE_JOINT_NAMES_JOINT_VALUES_SS";
 
  193     benchmark::RegisterBenchmark(
name.c_str(), BM_SET_AND_GET_STATE_JN_JV_SS, fn, traj)
 
  195         ->Unit(benchmark::TimeUnit::kMicrosecond);
 
  198     std::function<void(benchmark::State&,
 
  200                        std::vector<std::string>,
 
  204     std::string 
name = 
"BM_GET_JACOBIAN_JOINT_NAMES_JOINT_VALUES_SS";
 
  205     benchmark::RegisterBenchmark(
name.c_str(), BM_GET_JACOBIAN_JN_JV_SS, state_solver, joint_names, traj, tip_link)
 
  207         ->Unit(benchmark::TimeUnit::kMicrosecond);
 
  211       return joint_group->calcFwdKin(state);
 
  216     std::string 
name = 
"BM_CALC_FWD_KIN_MANIP";
 
  217     benchmark::RegisterBenchmark(
name.c_str(), BM_CFK_MANIP, fn, traj)
 
  219         ->Unit(benchmark::TimeUnit::kMicrosecond);
 
  225     std::string 
name = 
"BM_GET_JACOBIAN_MANIP";
 
  226     benchmark::RegisterBenchmark(
name.c_str(), BM_CJ_MANIP, joint_group, traj, tip_link)
 
  228         ->Unit(benchmark::TimeUnit::kMicrosecond);
 
  231   benchmark::Initialize(&argc, argv);
 
  232   benchmark::RunSpecifiedBenchmarks();