39 #include <boost/property_tree/xml_parser.hpp>
40 #include <boost/algorithm/string.hpp>
41 #include <boost/optional.hpp>
47 namespace pt = boost::property_tree;
118 template <
class CmdType>
122 using FuncType = std::function<CmdType(
const std::string&)>;
141 pt::read_xml(path_filename_, tree_, pt::xml_parser::no_comments);
143 using std::placeholders::_1;
144 cmd_getter_funcs_[
"ptp"] = AbstractCmdGetterUPtr(
146 cmd_getter_funcs_[
"ptp_joint_cart"] = AbstractCmdGetterUPtr(
148 cmd_getter_funcs_[
"ptp_cart_cart"] =
149 AbstractCmdGetterUPtr(
new CmdGetterAdapter<PtpCart>([
this](
const std::string& cmd) {
return getPtpCart(cmd); }));
151 cmd_getter_funcs_[
"lin"] = AbstractCmdGetterUPtr(
153 cmd_getter_funcs_[
"lin_cart"] =
156 cmd_getter_funcs_[
"circ_center_cart"] = AbstractCmdGetterUPtr(
158 cmd_getter_funcs_[
"circ_interim_cart"] = AbstractCmdGetterUPtr(
160 cmd_getter_funcs_[
"circ_joint_interim_cart"] = AbstractCmdGetterUPtr(
new CmdGetterAdapter<CircJointInterimCart>(
161 [
this](
const std::string& cmd) {
return getCircJointInterimCart(
cmd); }));
163 cmd_getter_funcs_[
"gripper"] =
168 const moveit::core::RobotModelConstPtr& robot_model)
171 setRobotModel(robot_model);
179 const std::string& name,
const std::string& key,
180 const std::string& path)
const
182 std::string path_str{ (path.empty() ?
NAME_PATH_STR : path) };
185 for (
const pt::ptree::value_type& val : tree)
193 if (
val.first != key)
203 if (node.data() ==
name)
210 msg.append(
"Node of type \"")
229 throw TestDataLoaderReadingException(
"No poses found.");
235 const std::string& group_name)
const
240 throw TestDataLoaderReadingException(
"No joints found.");
244 std::vector<std::string> strs;
245 boost::split(strs, joint_node.second.data(), boost::is_any_of(
" "));
254 throw TestDataLoaderReadingException(
"No poses found.");
261 throw TestDataLoaderReadingException(
"No link name found.");
265 std::string
data{ xyz_quat_tree.data() };
268 std::vector<std::string> pos_ori_str;
269 boost::split(pos_ori_str, data, boost::is_any_of(
" "));
284 std::string planning_group{ cmd_reader.getPlanningGroup() };
287 cmd.setPlanningGroup(planning_group);
288 cmd.setVelocityScale(cmd_reader.getVelocityScale());
289 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
291 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
292 cmd.setGoalConfiguration(
getJoints(cmd_reader.getEndPoseName(), planning_group));
300 std::string planning_group{ cmd_reader.getPlanningGroup() };
303 cmd.setPlanningGroup(planning_group);
304 cmd.setVelocityScale(cmd_reader.getVelocityScale());
305 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
307 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
308 cmd.setGoalConfiguration(
getPose(cmd_reader.getEndPoseName(), planning_group));
316 std::string planning_group{ cmd_reader.getPlanningGroup() };
319 cmd.setPlanningGroup(planning_group);
320 cmd.setVelocityScale(cmd_reader.getVelocityScale());
321 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
323 cmd.setStartConfiguration(
getPose(cmd_reader.getStartPoseName(), planning_group));
324 cmd.setGoalConfiguration(
getPose(cmd_reader.getEndPoseName(), planning_group));
332 std::string planning_group{ cmd_reader.getPlanningGroup() };
335 cmd.setPlanningGroup(planning_group);
336 cmd.setVelocityScale(cmd_reader.getVelocityScale());
337 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
339 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
340 cmd.setGoalConfiguration(
getJoints(cmd_reader.getEndPoseName(), planning_group));
348 std::string planning_group{ cmd_reader.getPlanningGroup() };
351 cmd.setPlanningGroup(planning_group);
352 cmd.setVelocityScale(cmd_reader.getVelocityScale());
353 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
355 cmd.setStartConfiguration(
getPose(cmd_reader.getStartPoseName(), planning_group));
356 cmd.setGoalConfiguration(
getPose(cmd_reader.getEndPoseName(), planning_group));
364 std::string planning_group{ cmd_reader.getPlanningGroup() };
367 cmd.setPlanningGroup(planning_group);
368 cmd.setVelocityScale(cmd_reader.getVelocityScale());
369 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
371 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
372 cmd.setGoalConfiguration(
getPose(cmd_reader.getEndPoseName(), planning_group));
378 const std::string& cmd_key)
const
381 const boost::property_tree::ptree& cmds_tree{
tree_.get_child(cmd_path,
empty_tree_) };
391 const std::string& planning_group)
const
394 std::string aux_pos_name;
401 throw TestDataLoaderReadingException(
"Did not find center of circ");
405 aux.setConfiguration(
getPose(aux_pos_name, planning_group));
410 const std::string& planning_group)
const
413 std::string aux_pos_name;
431 std::string planning_group{ cmd_reader.getPlanningGroup() };
434 cmd.setPlanningGroup(planning_group);
435 cmd.setVelocityScale(cmd_reader.getVelocityScale());
436 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
438 cmd.setStartConfiguration(
getPose(cmd_reader.getStartPoseName(), planning_group));
440 cmd.setGoalConfiguration(
getPose(cmd_reader.getEndPoseName(), planning_group));
448 std::string planning_group{ cmd_reader.getPlanningGroup() };
451 cmd.setPlanningGroup(planning_group);
452 cmd.setVelocityScale(cmd_reader.getVelocityScale());
453 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
455 cmd.setStartConfiguration(
getPose(cmd_reader.getStartPoseName(), planning_group));
457 cmd.setGoalConfiguration(
getPose(cmd_reader.getEndPoseName(), planning_group));
465 std::string planning_group{ cmd_reader.getPlanningGroup() };
468 cmd.setPlanningGroup(planning_group);
469 cmd.setVelocityScale(cmd_reader.getVelocityScale());
470 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
472 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
474 cmd.setGoalConfiguration(
getJoints(cmd_reader.getEndPoseName(), planning_group));
482 std::string planning_group{ cmd_reader.getPlanningGroup() };
485 cmd.setPlanningGroup(planning_group);
486 cmd.setVelocityScale(cmd_reader.getVelocityScale());
487 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
489 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
491 cmd.setGoalConfiguration(
getJoints(cmd_reader.getEndPoseName(), planning_group));
502 for (
const pt::ptree::value_type& seq_cmd : sequence_cmd_tree)
517 const std::string& cmd_name{ cmd_name_attr.data() };
523 throw TestDataLoaderReadingException(
"Did not find type of sequence cmd \"" + cmd_name +
"\"");
525 const std::string& cmd_type{ type_name_attr.data() };
542 std::string planning_group{ cmd_reader.getPlanningGroup() };
545 cmd.setPlanningGroup(planning_group);
546 cmd.setVelocityScale(cmd_reader.getVelocityScale());
547 cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
549 cmd.setStartConfiguration(
getJoints(cmd_reader.getStartPoseName(), planning_group));
550 cmd.setGoalConfiguration(
getJoints(cmd_reader.getEndPoseName(), planning_group));