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();