xml_testdata_loader.cpp
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2018 Pilz GmbH & Co. KG
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of Pilz GmbH & Co. KG nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
36 
37 #include <iostream>
38 
39 #include <boost/property_tree/xml_parser.hpp>
40 #include <boost/algorithm/string.hpp>
41 #include <boost/optional.hpp>
42 
46 
47 namespace pt = boost::property_tree;
49 {
50 class CmdReader
51 {
52 public:
53  CmdReader(const pt::ptree::value_type& node) : cmd_node_(node)
54  {
55  }
56 
57 public:
58  std::string getPlanningGroup() const;
59  std::string getTargetLink() const;
60  std::string getStartPoseName() const;
61  std::string getEndPoseName() const;
62 
63  double getVelocityScale() const;
64  double getAccelerationScale() const;
65 
66  CmdReader& setDefaultVelocityScale(double scale);
68 
69 private:
70  const pt::ptree::value_type& cmd_node_;
71 
74 };
75 
76 inline std::string CmdReader::getPlanningGroup() const
77 {
78  return cmd_node_.second.get<std::string>(PLANNING_GROUP_STR);
79 }
80 
81 inline std::string CmdReader::getTargetLink() const
82 {
83  return cmd_node_.second.get<std::string>(TARGET_LINK_STR);
84 }
85 
86 inline std::string CmdReader::getStartPoseName() const
87 {
88  return cmd_node_.second.get<std::string>(START_POS_STR);
89 }
90 
91 inline std::string CmdReader::getEndPoseName() const
92 {
93  return cmd_node_.second.get<std::string>(END_POS_STR);
94 }
95 
96 inline double CmdReader::getVelocityScale() const
97 {
98  return cmd_node_.second.get<double>(VEL_STR, default_velocity_scale_);
99 }
100 
101 inline double CmdReader::getAccelerationScale() const
102 {
103  return cmd_node_.second.get<double>(ACC_STR, default_acceleration_scale_);
104 }
105 
106 inline CmdReader& CmdReader::setDefaultVelocityScale(double scale)
107 {
109  return *this;
110 }
111 
113 {
115  return *this;
116 }
117 
118 template <class CmdType>
120 {
121 public:
122  using FuncType = std::function<CmdType(const std::string&)>;
123 
124  CmdGetterAdapter(FuncType func) : AbstractCmdGetterAdapter(), func_(func)
125  {
126  }
127 
128 public:
129  CmdVariant getCmd(const std::string& cmd_name) const override
130  {
131  return CmdVariant(func_(cmd_name));
132  }
133 
134 private:
135  FuncType func_;
136 };
137 
138 XmlTestdataLoader::XmlTestdataLoader(const std::string& path_filename) : TestdataLoader(), path_filename_(path_filename)
139 {
140  // Parse the XML into the property tree.
141  pt::read_xml(path_filename_, tree_, pt::xml_parser::no_comments);
142 
143  using std::placeholders::_1;
144  cmd_getter_funcs_["ptp"] = AbstractCmdGetterUPtr(
145  new CmdGetterAdapter<PtpJoint>([this](const std::string& cmd) { return getPtpJoint(cmd); }));
146  cmd_getter_funcs_["ptp_joint_cart"] = AbstractCmdGetterUPtr(
147  new CmdGetterAdapter<PtpJointCart>([this](const std::string& cmd) { return getPtpJointCart(cmd); }));
148  cmd_getter_funcs_["ptp_cart_cart"] =
149  AbstractCmdGetterUPtr(new CmdGetterAdapter<PtpCart>([this](const std::string& cmd) { return getPtpCart(cmd); }));
150 
151  cmd_getter_funcs_["lin"] = AbstractCmdGetterUPtr(
152  new CmdGetterAdapter<LinJoint>([this](const std::string& cmd) { return getLinJoint(cmd); }));
153  cmd_getter_funcs_["lin_cart"] =
154  AbstractCmdGetterUPtr(new CmdGetterAdapter<LinCart>([this](const std::string& cmd) { return getLinCart(cmd); }));
155 
156  cmd_getter_funcs_["circ_center_cart"] = AbstractCmdGetterUPtr(
157  new CmdGetterAdapter<CircCenterCart>([this](const std::string& cmd) { return getCircCartCenterCart(cmd); }));
158  cmd_getter_funcs_["circ_interim_cart"] = AbstractCmdGetterUPtr(
159  new CmdGetterAdapter<CircInterimCart>([this](const std::string& cmd) { return getCircCartInterimCart(cmd); }));
160  cmd_getter_funcs_["circ_joint_interim_cart"] = AbstractCmdGetterUPtr(new CmdGetterAdapter<CircJointInterimCart>(
161  [this](const std::string& cmd) { return getCircJointInterimCart(cmd); }));
162 
163  cmd_getter_funcs_["gripper"] =
164  AbstractCmdGetterUPtr(new CmdGetterAdapter<Gripper>([this](const std::string& cmd) { return getGripper(cmd); }));
165 }
166 
167 XmlTestdataLoader::XmlTestdataLoader(const std::string& path_filename,
168  const moveit::core::RobotModelConstPtr& robot_model)
169  : XmlTestdataLoader(path_filename)
170 {
171  setRobotModel(robot_model);
172 }
173 
175 {
176 }
177 
178 const pt::ptree::value_type& XmlTestdataLoader::findNodeWithName(const boost::property_tree::ptree& tree,
179  const std::string& name, const std::string& key,
180  const std::string& path) const
181 {
182  std::string path_str{ (path.empty() ? NAME_PATH_STR : path) };
183 
184  // Search for node with given name.
185  for (const pt::ptree::value_type& val : tree)
186  {
187  // Ignore attributes which are always the first element of a tree.
188  if (val.first == XML_ATTR_STR)
189  {
190  continue;
191  }
192 
193  if (val.first != key)
194  {
195  continue;
196  }
197 
198  const auto& node{ val.second.get_child(path_str, empty_tree_) };
199  if (node == empty_tree_)
200  {
201  break;
202  }
203  if (node.data() == name)
204  {
205  return val;
206  }
207  }
208 
209  std::string msg;
210  msg.append("Node of type \"")
211  .append(key)
212  .append("\" with ")
213  .append(path_str)
214  .append("=\"")
215  .append(name)
216  .append("\" "
217  "not "
218  "foun"
219  "d.");
221 }
222 
223 JointConfiguration XmlTestdataLoader::getJoints(const std::string& pos_name, const std::string& group_name) const
224 {
225  // Search for node with given name.
226  const auto& poses_tree{ tree_.get_child(POSES_PATH_STR, empty_tree_) };
227  if (poses_tree == empty_tree_)
228  {
229  throw TestDataLoaderReadingException("No poses found.");
230  }
231  return getJoints(findNodeWithName(poses_tree, pos_name, POSE_STR).second, group_name);
232 }
233 
234 JointConfiguration XmlTestdataLoader::getJoints(const boost::property_tree::ptree& joints_tree,
235  const std::string& group_name) const
236 {
237  // Search joints node with given group_name.
238  if (joints_tree == empty_tree_)
239  {
240  throw TestDataLoaderReadingException("No joints found.");
241  }
242  const auto& joint_node{ findNodeWithName(joints_tree, group_name, JOINT_STR, GROUP_NAME_PATH_STR) };
243 
244  std::vector<std::string> strs;
245  boost::split(strs, joint_node.second.data(), boost::is_any_of(" "));
246  return JointConfiguration(group_name, strVec2doubleVec(strs), robot_model_);
247 }
248 
249 CartesianConfiguration XmlTestdataLoader::getPose(const std::string& pos_name, const std::string& group_name) const
250 {
251  const auto& all_poses_tree{ tree_.get_child(POSES_PATH_STR, empty_tree_) };
252  if (all_poses_tree == empty_tree_)
253  {
254  throw TestDataLoaderReadingException("No poses found.");
255  }
256  const auto& pose_tree{ findNodeWithName(all_poses_tree, pos_name, POSE_STR).second };
257  const auto& xyz_quat_tree{ findNodeWithName(pose_tree, group_name, XYZ_QUAT_STR, GROUP_NAME_PATH_STR).second };
258  const boost::property_tree::ptree& link_name_attr{ xyz_quat_tree.get_child(LINK_NAME_PATH_STR, empty_tree_) };
259  if (link_name_attr == empty_tree_)
260  {
261  throw TestDataLoaderReadingException("No link name found.");
262  }
263 
264  // Get rid of things like "\n", etc.
265  std::string data{ xyz_quat_tree.data() };
266  boost::trim(data);
267 
268  std::vector<std::string> pos_ori_str;
269  boost::split(pos_ori_str, data, boost::is_any_of(" "));
270  CartesianConfiguration cart_config{ CartesianConfiguration(group_name, link_name_attr.data(),
271  strVec2doubleVec(pos_ori_str), robot_model_) };
272 
273  const auto& seeds_tree{ xyz_quat_tree.get_child(SEED_STR, empty_tree_) };
274  if (seeds_tree != empty_tree_)
275  {
276  cart_config.setSeed(getJoints(seeds_tree, group_name));
277  }
278  return cart_config;
279 }
280 
281 PtpJoint XmlTestdataLoader::getPtpJoint(const std::string& cmd_name) const
282 {
283  CmdReader cmd_reader{ findCmd(cmd_name, PTPS_PATH_STR, PTP_STR) };
284  std::string planning_group{ cmd_reader.getPlanningGroup() };
285 
286  PtpJoint cmd;
287  cmd.setPlanningGroup(planning_group);
288  cmd.setVelocityScale(cmd_reader.getVelocityScale());
289  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
290 
291  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
292  cmd.setGoalConfiguration(getJoints(cmd_reader.getEndPoseName(), planning_group));
293 
294  return cmd;
295 }
296 
297 PtpJointCart XmlTestdataLoader::getPtpJointCart(const std::string& cmd_name) const
298 {
299  CmdReader cmd_reader{ findCmd(cmd_name, PTPS_PATH_STR, PTP_STR) };
300  std::string planning_group{ cmd_reader.getPlanningGroup() };
301 
303  cmd.setPlanningGroup(planning_group);
304  cmd.setVelocityScale(cmd_reader.getVelocityScale());
305  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
306 
307  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
308  cmd.setGoalConfiguration(getPose(cmd_reader.getEndPoseName(), planning_group));
309 
310  return cmd;
311 }
312 
313 PtpCart XmlTestdataLoader::getPtpCart(const std::string& cmd_name) const
314 {
315  CmdReader cmd_reader{ findCmd(cmd_name, PTPS_PATH_STR, PTP_STR) };
316  std::string planning_group{ cmd_reader.getPlanningGroup() };
317 
318  PtpCart cmd;
319  cmd.setPlanningGroup(planning_group);
320  cmd.setVelocityScale(cmd_reader.getVelocityScale());
321  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
322 
323  cmd.setStartConfiguration(getPose(cmd_reader.getStartPoseName(), planning_group));
324  cmd.setGoalConfiguration(getPose(cmd_reader.getEndPoseName(), planning_group));
325 
326  return cmd;
327 }
328 
329 LinJoint XmlTestdataLoader::getLinJoint(const std::string& cmd_name) const
330 {
331  CmdReader cmd_reader{ findCmd(cmd_name, LINS_PATH_STR, LIN_STR) };
332  std::string planning_group{ cmd_reader.getPlanningGroup() };
333 
334  LinJoint cmd;
335  cmd.setPlanningGroup(planning_group);
336  cmd.setVelocityScale(cmd_reader.getVelocityScale());
337  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
338 
339  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
340  cmd.setGoalConfiguration(getJoints(cmd_reader.getEndPoseName(), planning_group));
341 
342  return cmd;
343 }
344 
345 LinCart XmlTestdataLoader::getLinCart(const std::string& cmd_name) const
346 {
347  CmdReader cmd_reader{ findCmd(cmd_name, LINS_PATH_STR, LIN_STR) };
348  std::string planning_group{ cmd_reader.getPlanningGroup() };
349 
350  LinCart cmd;
351  cmd.setPlanningGroup(planning_group);
352  cmd.setVelocityScale(cmd_reader.getVelocityScale());
353  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
354 
355  cmd.setStartConfiguration(getPose(cmd_reader.getStartPoseName(), planning_group));
356  cmd.setGoalConfiguration(getPose(cmd_reader.getEndPoseName(), planning_group));
357 
358  return cmd;
359 }
360 
361 LinJointCart XmlTestdataLoader::getLinJointCart(const std::string& cmd_name) const
362 {
363  CmdReader cmd_reader{ findCmd(cmd_name, LINS_PATH_STR, LIN_STR) };
364  std::string planning_group{ cmd_reader.getPlanningGroup() };
365 
367  cmd.setPlanningGroup(planning_group);
368  cmd.setVelocityScale(cmd_reader.getVelocityScale());
369  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
370 
371  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
372  cmd.setGoalConfiguration(getPose(cmd_reader.getEndPoseName(), planning_group));
373 
374  return cmd;
375 }
376 
377 const pt::ptree::value_type& XmlTestdataLoader::findCmd(const std::string& cmd_name, const std::string& cmd_path,
378  const std::string& cmd_key) const
379 {
380  // Search for node with given name.
381  const boost::property_tree::ptree& cmds_tree{ tree_.get_child(cmd_path, empty_tree_) };
382  if (cmds_tree == empty_tree_)
383  {
384  throw TestDataLoaderReadingException("No list of commands of type \"" + cmd_key + "\" found");
385  }
386 
387  return findNodeWithName(cmds_tree, cmd_name, cmd_key);
388 }
389 
390 CartesianCenter XmlTestdataLoader::getCartesianCenter(const std::string& cmd_name,
391  const std::string& planning_group) const
392 {
393  const pt::ptree::value_type& cmd_node{ findCmd(cmd_name, CIRCS_PATH_STR, CIRC_STR) };
394  std::string aux_pos_name;
395  try
396  {
397  aux_pos_name = cmd_node.second.get<std::string>(CENTER_POS_STR);
398  }
399  catch (...)
400  {
401  throw TestDataLoaderReadingException("Did not find center of circ");
402  }
403 
404  CartesianCenter aux;
405  aux.setConfiguration(getPose(aux_pos_name, planning_group));
406  return aux;
407 }
408 
410  const std::string& planning_group) const
411 {
412  const pt::ptree::value_type& cmd_node{ findCmd(cmd_name, CIRCS_PATH_STR, CIRC_STR) };
413  std::string aux_pos_name;
414  try
415  {
416  aux_pos_name = cmd_node.second.get<std::string>(INTERMEDIATE_POS_STR);
417  }
418  catch (...)
419  {
420  throw TestDataLoaderReadingException("Did not find interim of circ");
421  }
422 
423  CartesianInterim aux;
424  aux.setConfiguration(getPose(aux_pos_name, planning_group));
425  return aux;
426 }
427 
428 CircCenterCart XmlTestdataLoader::getCircCartCenterCart(const std::string& cmd_name) const
429 {
430  CmdReader cmd_reader{ findCmd(cmd_name, CIRCS_PATH_STR, CIRC_STR) };
431  std::string planning_group{ cmd_reader.getPlanningGroup() };
432 
434  cmd.setPlanningGroup(planning_group);
435  cmd.setVelocityScale(cmd_reader.getVelocityScale());
436  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
437 
438  cmd.setStartConfiguration(getPose(cmd_reader.getStartPoseName(), planning_group));
439  cmd.setAuxiliaryConfiguration(getCartesianCenter(cmd_name, planning_group));
440  cmd.setGoalConfiguration(getPose(cmd_reader.getEndPoseName(), planning_group));
441 
442  return cmd;
443 }
444 
445 CircInterimCart XmlTestdataLoader::getCircCartInterimCart(const std::string& cmd_name) const
446 {
447  CmdReader cmd_reader{ findCmd(cmd_name, CIRCS_PATH_STR, CIRC_STR) };
448  std::string planning_group{ cmd_reader.getPlanningGroup() };
449 
451  cmd.setPlanningGroup(planning_group);
452  cmd.setVelocityScale(cmd_reader.getVelocityScale());
453  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
454 
455  cmd.setStartConfiguration(getPose(cmd_reader.getStartPoseName(), planning_group));
456  cmd.setAuxiliaryConfiguration(getCartesianInterim(cmd_name, planning_group));
457  cmd.setGoalConfiguration(getPose(cmd_reader.getEndPoseName(), planning_group));
458 
459  return cmd;
460 }
461 
462 CircJointInterimCart XmlTestdataLoader::getCircJointInterimCart(const std::string& cmd_name) const
463 {
464  CmdReader cmd_reader{ findCmd(cmd_name, CIRCS_PATH_STR, CIRC_STR) };
465  std::string planning_group{ cmd_reader.getPlanningGroup() };
466 
468  cmd.setPlanningGroup(planning_group);
469  cmd.setVelocityScale(cmd_reader.getVelocityScale());
470  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
471 
472  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
473  cmd.setAuxiliaryConfiguration(getCartesianInterim(cmd_name, planning_group));
474  cmd.setGoalConfiguration(getJoints(cmd_reader.getEndPoseName(), planning_group));
475 
476  return cmd;
477 }
478 
479 CircJointCenterCart XmlTestdataLoader::getCircJointCenterCart(const std::string& cmd_name) const
480 {
481  CmdReader cmd_reader{ findCmd(cmd_name, CIRCS_PATH_STR, CIRC_STR) };
482  std::string planning_group{ cmd_reader.getPlanningGroup() };
483 
485  cmd.setPlanningGroup(planning_group);
486  cmd.setVelocityScale(cmd_reader.getVelocityScale());
487  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
488 
489  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
490  cmd.setAuxiliaryConfiguration(getCartesianCenter(cmd_name, planning_group));
491  cmd.setGoalConfiguration(getJoints(cmd_reader.getEndPoseName(), planning_group));
492 
493  return cmd;
494 }
495 
496 Sequence XmlTestdataLoader::getSequence(const std::string& cmd_name) const
497 {
498  Sequence seq;
499 
500  // Find sequence with given name and loop over all its cmds
501  const auto& sequence_cmd_tree{ findCmd(cmd_name, SEQUENCE_PATH_STR, BLEND_STR).second };
502  for (const pt::ptree::value_type& seq_cmd : sequence_cmd_tree)
503  {
504  // Ignore attributes which are always the first element of a tree.
505  if (seq_cmd.first == XML_ATTR_STR)
506  {
507  continue;
508  }
509 
510  // Get name of blend cmd.
511  const boost::property_tree::ptree& cmd_name_attr = seq_cmd.second.get_child(NAME_PATH_STR, empty_tree_);
512  if (cmd_name_attr == empty_tree_)
513  {
514  throw TestDataLoaderReadingException("Did not find name of sequence cmd");
515  }
516 
517  const std::string& cmd_name{ cmd_name_attr.data() };
518 
519  // Get type of blend cmd
520  const boost::property_tree::ptree& type_name_attr{ seq_cmd.second.get_child(CMD_TYPE_PATH_STR, empty_tree_) };
521  if (type_name_attr == empty_tree_)
522  {
523  throw TestDataLoaderReadingException("Did not find type of sequence cmd \"" + cmd_name + "\"");
524  }
525  const std::string& cmd_type{ type_name_attr.data() };
526 
527  // Get blend radius of blend cmd.
528  double blend_radius{ seq_cmd.second.get<double>(BLEND_RADIUS_PATH_STR, DEFAULT_BLEND_RADIUS) };
529 
530  // Read current command from test data + Add command to sequence
531  seq.add(cmd_getter_funcs_.at(cmd_type)->getCmd(cmd_name), blend_radius);
532  }
533 
534  return seq;
535 }
536 
537 Gripper XmlTestdataLoader::getGripper(const std::string& cmd_name) const
538 {
539  CmdReader cmd_reader{ findCmd(cmd_name, GRIPPERS_PATH_STR, GRIPPER_STR) };
540  cmd_reader.setDefaultVelocityScale(DEFAULT_VEL_GRIPPER);
541  cmd_reader.setDefaultAccelerationScale(DEFAULT_ACC_GRIPPER);
542  std::string planning_group{ cmd_reader.getPlanningGroup() };
543 
544  Gripper cmd;
545  cmd.setPlanningGroup(planning_group);
546  cmd.setVelocityScale(cmd_reader.getVelocityScale());
547  cmd.setAccelerationScale(cmd_reader.getAccelerationScale());
548 
549  cmd.setStartConfiguration(getJoints(cmd_reader.getStartPoseName(), planning_group));
550  cmd.setGoalConfiguration(getJoints(cmd_reader.getEndPoseName(), planning_group));
551 
552  return cmd;
553 }
554 
555 } // namespace pilz_industrial_motion_planner_testutils
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::tree_
pt::ptree tree_
Definition: xml_testdata_loader.h:258
pilz_industrial_motion_planner_testutils::DEFAULT_VEL
static constexpr double DEFAULT_VEL
Definition: default_values.h:75
pilz_industrial_motion_planner_testutils::CircCenterCart
Circ< CartesianConfiguration, CartesianCenter, CartesianConfiguration > CircCenterCart
Definition: command_types_typedef.h:90
pilz_industrial_motion_planner_testutils::INTERMEDIATE_POS_STR
const std::string INTERMEDIATE_POS_STR
Definition: xml_constants.h:93
pilz_industrial_motion_planner_testutils::CmdReader::setDefaultAccelerationScale
CmdReader & setDefaultAccelerationScale(double scale)
Definition: xml_testdata_loader.cpp:144
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::cmd_getter_funcs_
std::map< std::string, AbstractCmdGetterUPtr > cmd_getter_funcs_
Definition: xml_testdata_loader.h:267
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getCircCartCenterCart
CircCenterCart getCircCartCenterCart(const std::string &cmd_name) const override
Returns the command with the specified name from the test data.
Definition: xml_testdata_loader.cpp:460
pilz_industrial_motion_planner_testutils::CmdReader
Definition: xml_testdata_loader.cpp:82
pilz_industrial_motion_planner_testutils::CircJointInterimCart
Circ< JointConfiguration, CartesianInterim, JointConfiguration > CircJointInterimCart
Definition: command_types_typedef.h:94
pilz_industrial_motion_planner_testutils::CmdGetterAdapter::func_
FuncType func_
Definition: xml_testdata_loader.cpp:167
pilz_industrial_motion_planner_testutils::CmdReader::setDefaultVelocityScale
CmdReader & setDefaultVelocityScale(double scale)
Definition: xml_testdata_loader.cpp:138
pilz_industrial_motion_planner_testutils::Interim
Class to define a point on the circle on which the robot is supposed to move via circ command.
Definition: interim.h:79
pilz_industrial_motion_planner_testutils::CmdReader::default_acceleration_scale_
double default_acceleration_scale_
Definition: xml_testdata_loader.cpp:137
pilz_industrial_motion_planner_testutils::Center
Class to define the center point of the circle on which the robot is supposed to move via circ comman...
Definition: center.h:79
pilz_industrial_motion_planner_testutils::CIRC_STR
const std::string CIRC_STR
Definition: xml_constants.h:85
pilz_industrial_motion_planner_testutils::GROUP_NAME_PATH_STR
const std::string GROUP_NAME_PATH_STR
Definition: xml_constants.h:109
pilz_industrial_motion_planner_testutils::CircAuxiliary::setConfiguration
void setConfiguration(const ConfigType &auxiliary_config)
Definition: circauxiliary.h:99
pilz_industrial_motion_planner_testutils::LIN_STR
const std::string LIN_STR
Definition: xml_constants.h:84
pilz_industrial_motion_planner_testutils::TestDataLoaderReadingException
Definition: exception_types.h:75
val
val
pilz_industrial_motion_planner_testutils::ACC_STR
const std::string ACC_STR
Definition: xml_constants.h:96
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getGripper
Gripper getGripper(const std::string &cmd_name) const override
Returns the command with the specified name from the test data.
Definition: xml_testdata_loader.cpp:569
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::empty_tree_
const pt::ptree empty_tree_
Definition: xml_testdata_loader.h:271
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getSequence
Sequence getSequence(const std::string &cmd_name) const override
Returns the command with the specified name from the test data.
Definition: xml_testdata_loader.cpp:528
pilz_industrial_motion_planner_testutils::NAME_PATH_STR
const std::string NAME_PATH_STR
Definition: xml_constants.h:105
pilz_industrial_motion_planner_testutils::CartesianConfiguration::setSeed
void setSeed(const JointConfiguration &config)
Definition: cartesianconfiguration.h:182
pilz_industrial_motion_planner_testutils::END_POS_STR
const std::string END_POS_STR
Definition: xml_constants.h:92
data
data
xml_testdata_loader.h
pilz_industrial_motion_planner_testutils::DEFAULT_ACC_GRIPPER
static constexpr double DEFAULT_ACC_GRIPPER
Definition: default_values.h:80
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getPtpCart
PtpCart getPtpCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:345
pilz_industrial_motion_planner_testutils::CmdReader::cmd_node_
const pt::ptree::value_type & cmd_node_
Definition: xml_testdata_loader.cpp:134
default_values.h
pilz_industrial_motion_planner_testutils::POSES_PATH_STR
const std::string POSES_PATH_STR
Definition: xml_constants.h:98
pilz_industrial_motion_planner_testutils::XML_ATTR_STR
const std::string XML_ATTR_STR
Definition: xml_constants.h:76
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getJoints
JointConfiguration getJoints(const std::string &pos_name, const std::string &group_name) const override
Definition: xml_testdata_loader.cpp:255
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getCircJointInterimCart
CircJointInterimCart getCircJointInterimCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:494
pilz_industrial_motion_planner_testutils::Circ
Data class storing all information regarding a Circ command.
Definition: circ.h:81
pilz_industrial_motion_planner_testutils::DEFAULT_ACC
static constexpr double DEFAULT_ACC
Definition: default_values.h:76
pilz_industrial_motion_planner_testutils::SEQUENCE_PATH_STR
const std::string SEQUENCE_PATH_STR
Definition: xml_constants.h:102
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getLinJointCart
LinJointCart getLinJointCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:393
pilz_industrial_motion_planner_testutils::TestdataLoader::robot_model_
moveit::core::RobotModelConstPtr robot_model_
Definition: testdata_loader.h:170
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::strVec2doubleVec
static std::vector< double > strVec2doubleVec(std::vector< std::string > &strVec)
Converts string vector to double vector.
Definition: xml_testdata_loader.h:242
pilz_industrial_motion_planner_testutils
Definition: basecmd.h:42
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::findNodeWithName
const pt::ptree::value_type & findNodeWithName(const boost::property_tree::ptree &tree, const std::string &name, const std::string &key, const std::string &path="") const
Use this function to search for a node (like an pos or cmd) with a given name.
Definition: xml_testdata_loader.cpp:210
pilz_industrial_motion_planner_testutils::CIRCS_PATH_STR
const std::string CIRCS_PATH_STR
Definition: xml_constants.h:101
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::AbstractCmdGetterAdapter
Abstract base class providing a GENERIC getter-function signature which can be used to load DIFFERENT...
Definition: xml_testdata_loader.h:249
pilz_industrial_motion_planner_testutils::CmdReader::getVelocityScale
double getVelocityScale() const
Definition: xml_testdata_loader.cpp:128
exception_types.h
pilz_industrial_motion_planner_testutils::CmdVariant
boost::variant< PtpJoint, PtpJointCart, PtpCart, LinJoint, LinCart, CircCenterCart, CircInterimCart, CircJointCenterCart, CircJointInterimCart, Gripper > CmdVariant
Definition: command_types_typedef.h:98
pilz_industrial_motion_planner_testutils::Ptp< JointConfiguration, JointConfiguration >
pilz_industrial_motion_planner_testutils::POSE_STR
const std::string POSE_STR
Definition: xml_constants.h:78
pilz_industrial_motion_planner_testutils::JOINT_STR
const std::string JOINT_STR
Definition: xml_constants.h:77
pilz_industrial_motion_planner_testutils::Sequence
Data class storing all information regarding a Sequence command.
Definition: sequence.h:85
pilz_industrial_motion_planner_testutils::PtpJointCart
Ptp< JointConfiguration, CartesianConfiguration > PtpJointCart
Definition: command_types_typedef.h:83
pilz_industrial_motion_planner_testutils::CmdReader::getAccelerationScale
double getAccelerationScale() const
Definition: xml_testdata_loader.cpp:133
pilz_industrial_motion_planner_testutils::CmdGetterAdapter::CmdGetterAdapter
CmdGetterAdapter(FuncType func)
Definition: xml_testdata_loader.cpp:156
name
name
pilz_industrial_motion_planner_testutils::CmdReader::getTargetLink
std::string getTargetLink() const
Definition: xml_testdata_loader.cpp:113
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getCircJointCenterCart
CircJointCenterCart getCircJointCenterCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:511
pilz_industrial_motion_planner_testutils::PTP_STR
const std::string PTP_STR
Definition: xml_constants.h:83
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::findCmd
const pt::ptree::value_type & findCmd(const std::string &cmd_name, const std::string &cmd_path, const std::string &cmd_key) const
Use this function to search for a cmd-node with a given name.
Definition: xml_testdata_loader.cpp:409
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::XmlTestdataLoader
XmlTestdataLoader(const std::string &path_filename)
Definition: xml_testdata_loader.cpp:170
pilz_industrial_motion_planner_testutils::CartesianCenter
Center< CartesianConfiguration, CartesianPathConstraintsBuilder > CartesianCenter
Definition: circ_auxiliary_types.h:77
pilz_industrial_motion_planner_testutils::Lin
Data class storing all information regarding a linear command.
Definition: lin.h:80
pilz_industrial_motion_planner_testutils::CENTER_POS_STR
const std::string CENTER_POS_STR
Definition: xml_constants.h:94
pilz_industrial_motion_planner_testutils::CmdReader::getStartPoseName
std::string getStartPoseName() const
Definition: xml_testdata_loader.cpp:118
pilz_industrial_motion_planner_testutils::CmdGetterAdapter::FuncType
std::function< CmdType(const std::string &)> FuncType
Definition: xml_testdata_loader.cpp:154
pilz_industrial_motion_planner_testutils::CmdGetterAdapter
Definition: xml_testdata_loader.cpp:151
pilz_industrial_motion_planner_testutils::CmdGetterAdapter::getCmd
CmdVariant getCmd(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:161
pilz_industrial_motion_planner_testutils::LINS_PATH_STR
const std::string LINS_PATH_STR
Definition: xml_constants.h:100
pilz_industrial_motion_planner_testutils::CmdReader::default_velocity_scale_
double default_velocity_scale_
Definition: xml_testdata_loader.cpp:136
pilz_industrial_motion_planner_testutils::Sequence::add
void add(const CmdVariant &cmd, const double blend_radius=0.)
Adds a command to the end of the sequence.
Definition: sequence.h:135
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::~XmlTestdataLoader
~XmlTestdataLoader() override
Definition: xml_testdata_loader.cpp:206
pilz_industrial_motion_planner_testutils::XmlTestdataLoader
Implements a test data loader which uses a xml file to store the test data.
Definition: xml_testdata_loader.h:152
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getPtpJointCart
PtpJointCart getPtpJointCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:329
pilz_industrial_motion_planner_testutils::CmdReader::CmdReader
CmdReader(const pt::ptree::value_type &node)
Definition: xml_testdata_loader.cpp:117
pilz_industrial_motion_planner_testutils::XYZ_QUAT_STR
const std::string XYZ_QUAT_STR
Definition: xml_constants.h:79
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getPose
CartesianConfiguration getPose(const std::string &pos_name, const std::string &group_name) const override
Definition: xml_testdata_loader.cpp:281
pilz_industrial_motion_planner_testutils::CircJointCenterCart
Circ< JointConfiguration, CartesianCenter, JointConfiguration > CircJointCenterCart
Definition: command_types_typedef.h:93
pilz_industrial_motion_planner_testutils::DEFAULT_BLEND_RADIUS
static constexpr double DEFAULT_BLEND_RADIUS
Definition: default_values.h:77
pilz_industrial_motion_planner_testutils::BLEND_STR
const std::string BLEND_STR
Definition: xml_constants.h:86
pilz_industrial_motion_planner_testutils::JointConfiguration
Class to define a robot configuration in space with the help of joint values.
Definition: jointconfiguration.h:98
pilz_industrial_motion_planner_testutils::TARGET_LINK_STR
const std::string TARGET_LINK_STR
Definition: xml_constants.h:90
pilz_industrial_motion_planner_testutils::LINK_NAME_PATH_STR
const std::string LINK_NAME_PATH_STR
Definition: xml_constants.h:108
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getPtpJoint
PtpJoint getPtpJoint(const std::string &cmd_name) const override
Returns the command with the specified name from the test data.
Definition: xml_testdata_loader.cpp:313
pilz_industrial_motion_planner_testutils::PTPS_PATH_STR
const std::string PTPS_PATH_STR
Definition: xml_constants.h:99
pilz_industrial_motion_planner_testutils::VEL_STR
const std::string VEL_STR
Definition: xml_constants.h:95
pilz_industrial_motion_planner_testutils::CmdReader::getEndPoseName
std::string getEndPoseName() const
Definition: xml_testdata_loader.cpp:123
pilz_industrial_motion_planner_testutils::CartesianConfiguration
Class to define a robot configuration in space with the help of cartesian coordinates.
Definition: cartesianconfiguration.h:90
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getCartesianCenter
CartesianCenter getCartesianCenter(const std::string &cmd_name, const std::string &planning_group) const
Definition: xml_testdata_loader.cpp:422
pilz_industrial_motion_planner_testutils::CmdReader::getPlanningGroup
std::string getPlanningGroup() const
Definition: xml_testdata_loader.cpp:108
pilz_industrial_motion_planner_testutils::CircInterimCart
Circ< CartesianConfiguration, CartesianInterim, CartesianConfiguration > CircInterimCart
Definition: command_types_typedef.h:91
cmd
string cmd
pilz_industrial_motion_planner_testutils::BLEND_RADIUS_PATH_STR
const std::string BLEND_RADIUS_PATH_STR
Definition: xml_constants.h:107
xml_constants.h
pilz_industrial_motion_planner_testutils::GRIPPER_STR
const std::string GRIPPER_STR
Definition: xml_constants.h:87
pilz_industrial_motion_planner_testutils::TestdataLoader
Abstract base class describing the interface to access test data like robot poses and robot commands.
Definition: testdata_loader.h:87
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getCartesianInterim
CartesianInterim getCartesianInterim(const std::string &cmd_name, const std::string &planning_group) const
Definition: xml_testdata_loader.cpp:441
pilz_industrial_motion_planner_testutils::DEFAULT_VEL_GRIPPER
static constexpr double DEFAULT_VEL_GRIPPER
Definition: default_values.h:79
pilz_industrial_motion_planner_testutils::SEED_STR
const std::string SEED_STR
Definition: xml_constants.h:81
pilz_industrial_motion_planner_testutils::CMD_TYPE_PATH_STR
const std::string CMD_TYPE_PATH_STR
Definition: xml_constants.h:106
pilz_industrial_motion_planner_testutils::GRIPPERS_PATH_STR
const std::string GRIPPERS_PATH_STR
Definition: xml_constants.h:103
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getCircCartInterimCart
CircInterimCart getCircCartInterimCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:477
pilz_industrial_motion_planner_testutils::START_POS_STR
const std::string START_POS_STR
Definition: xml_constants.h:91
pilz_industrial_motion_planner_testutils::PLANNING_GROUP_STR
const std::string PLANNING_GROUP_STR
Definition: xml_constants.h:89
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getLinCart
LinCart getLinCart(const std::string &cmd_name) const override
Definition: xml_testdata_loader.cpp:377
pilz_industrial_motion_planner_testutils::XmlTestdataLoader::getLinJoint
LinJoint getLinJoint(const std::string &cmd_name) const override
Returns the command with the specified name from the test data.
Definition: xml_testdata_loader.cpp:361


pilz_industrial_motion_planner_testutils
Author(s):
autogenerated on Sat May 3 2025 02:28:27