Robowflex  v0.1
Making MoveIt Easy
robowflex::MotionRequestBuilder Class Reference

A helper class to build motion planning requests for a robowflex::Planner. More...

#include <builder.h>

+ Inheritance diagram for robowflex::MotionRequestBuilder:

Public Member Functions

 MotionRequestBuilder (const RobotConstPtr &robot)
 Constructor. More...
 
 MotionRequestBuilder (const RobotConstPtr &robot, const std::string &group_name, const std::string &planner_config="")
 Constructor. Set planner config and group as well. More...
 
 MotionRequestBuilder (const PlannerConstPtr &planner, const std::string &group_name, const std::string &planner_config="")
 Constructor. More...
 
 MotionRequestBuilder (const MotionRequestBuilder &other)
 Copy Constructor. More...
 
MotionRequestBuilderPtr clone () const
 Clone this request. More...
 
Configuring Builder
void initialize ()
 Sets defaults. More...
 
void setPlanningGroup (const std::string &group_name)
 Set the planning group to use for this request builder. More...
 
void setPlanner (const PlannerConstPtr &planner)
 Set the Robowflex planner to use. More...
 
Starting Configurations
void setStartConfiguration (const std::vector< double > &joints)
 Set the start configuration from a vector joints. All joints are assumed to be specified and in the default order. More...
 
void setStartConfiguration (const robot_state::RobotState &state)
 Set the start configuration from a robot state. More...
 
void setStartConfiguration (const robot_state::RobotStatePtr &state)
 Set the start configuration from a robot state. More...
 
void useSceneStateAsStart (const SceneConstPtr &scene)
 Use the current scene state for the starting configuration. More...
 
bool attachObjectToStart (ScenePtr scene, const std::string &object)
 Attach an object to the current request start state. Uses object from scene, and modifies the underlying scene state. This uses attachObject() on the scene, so note that the attached object will have to be re-added to the scene. More...
 
bool attachObjectToStartConst (const SceneConstPtr &scene, const std::string &object)
 Attach an object to the current request start state. Uses object from scene, but does not modify the underlying scene. Be aware that attached objects can collide with themselves if not removed from the provided scene. More...
 
Path Constraints
void addPathPoseConstraint (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
 Set a pose constraint on the path. Sets the position constraint from geometry at a pose pose, and the orientation constraint from orientation and XYZ Euler angle tolerances tolerances. More...
 
void addPathPositionConstraint (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry)
 Set a position constraint on the path. Sets the position constraint from geometry at a pose pose. More...
 
void addPathOrientationConstraint (const std::string &ee_name, const std::string &base_name, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
 Set an orientation constraint on the path. Sets the orientation constraint from orientation and XYZ Euler angle tolerances tolerances. More...
 
Miscellaneous Settings
bool setConfig (const std::string &requested_config)
 Set the planning configuration to use for the motion planning request. Attempts to match requested_config with the planner configuration offered by planner_ that is the shortest configuration that contains requested_config as a substring. For example, specifying RRTConnect will match RRTConnectkConfigDefault, and specifying RRT will match RRTkConfigDefault and not RRTConnectkConfigDefault. More...
 
void setAllowedPlanningTime (double allowed_planning_time)
 Set the allowed planning time in the request. More...
 
void setNumPlanningAttempts (unsigned int num_planning_attempts)
 Set the number of planning attemps in the request. More...
 
void setWorkspaceBounds (const moveit_msgs::WorkspaceParameters &wp)
 Sets workspace bounds of the planning request. More...
 
void setWorkspaceBounds (const Eigen::Ref< const Eigen::VectorXd > &min, const Eigen::Ref< const Eigen::VectorXd > &max)
 Sets workspace bounds of the planning request. More...
 
bool swapStartWithGoal ()
 Swap the start and goal configurations. This is only possible when a single joint goal is specified, otherwise an error is raised. More...
 
Getters
planning_interface::MotionPlanRequestgetRequest ()
 Get a reference to the currently built motion planning request. More...
 
const planning_interface::MotionPlanRequestgetRequestConst () const
 Get a const reference to the currently built motion planning request. More...
 
robot_state::RobotStatePtr getStartConfiguration () const
 Get the start state of the request as a robot state. More...
 
robot_state::RobotStatePtr getGoalConfiguration () const
 Get the goal state of the request as a robot state. More...
 
moveit_msgs::Constraints & getPathConstraints ()
 Get a reference to the current path constraints on the motion planning request. More...
 
const RobotConstPtrgetRobot () const
 Get the robot for this request. More...
 
const PlannerConstPtrgetPlanner () const
 Get the planner for this request. More...
 
const std::stringgetPlanningGroup () const
 Get the planning group. More...
 
const std::stringgetPlannerConfig () const
 Get the planner config. More...
 
IO
bool toYAMLFile (const std::string &file) const
 Serialize the motion planning request to a YAML file file. More...
 
bool fromYAMLFile (const std::string &file)
 Load a planning request from a YAML file file. More...
 
- Public Member Functions inherited from robowflex::ID
 ID ()
 Constructor. More...
 
const std::stringgetID () const
 Get the unique ID for this object. More...
 
std::size_t getVersion () const
 Get the current version of this object. More...
 
Key getKey () const
 Get this ID as a Key. More...
 
bool operator== (const ID &b) const
 Compare with another ID object. More...
 
bool operator== (const Key &b) const
 Compare with an ID Key. More...
 

Private Attributes

const RobotConstPtr robot_
 The robot to build the request for. More...
 
PlannerConstPtr planner_
 The planner to build the request for. More...
 
std::string group_name_
 The group to plan for. More...
 
robot_model::JointModelGroup * jmg_ {nullptr}
 
planning_interface::MotionPlanRequest request_
 The build request. More...
 

Static Private Attributes

static const std::string DEFAULT_CONFIG = "RRTConnectkConfigDefault"
 Default planner configuration to use. More...
 

Goals

using ConfigurationValidityCallback = std::function< bool(const robot_state::RobotState &)>
 Callback function that returns true if configuration is valid for goal set, false otherwise. More...
 
void addGoalConfiguration (const std::vector< double > &joints)
 Add a goal configuration from a vector joints. All joints are assumed to be specified and in the default order. More...
 
void addGoalConfiguration (const robot_state::RobotStatePtr &state)
 Add a goal configuration from a robot state. More...
 
void addGoalConfiguration (const robot_state::RobotState &state)
 Add a goal configuration from a robot state. More...
 
void addGoalFromIKQuery (const Robot::IKQuery &query)
 Add an IK query as a goal pose. More...
 
void addGoalPose (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, double tolerance=0.001)
 Add a goal pose for the end-effector ee_name. Generates a sphere with radius tolerance as well as orientation tolerances of tolerance from pose. More...
 
void addGoalRegion (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
 Add a goal region for an end-effector ee_name. Sets the position constraint from geometry at a pose pose, and the orientation constraint from orientation and XYZ Euler angle tolerances tolerances. More...
 
void addGoalRotaryTile (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances, const RobotPose &offset, const Eigen::Vector3d &axis, unsigned int n)
 Tiles some geometry around a pose in base_name for the end-effector ee_name. The geometry is placed at offset from pose, and n copies are placed evenly rotated about axis. The desired orientation is also rotated about the axis and set for each copy. More...
 
void addCylinderSideGrasp (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &cylinder, double distance, double depth, unsigned int n)
 Adds a set of regions to grasp a cylinder from the side. This function assumes the X-axis of the end-effector frame ee_name points "forward" for grasping. More...
 
void setGoalConfiguration (const std::vector< double > &joints)
 Set the goal configuration from a vector joints. All joints are assumed to be specified and in the default order. More...
 
void setGoalConfiguration (const robot_state::RobotStatePtr &state)
 Set the goal configuration from a robot state. More...
 
void setGoalConfiguration (const robot_state::RobotState &state)
 Set the goal configuration from a robot state. More...
 
void setGoalFromIKQuery (const Robot::IKQuery &query)
 Set the goal pose from an IK query. More...
 
void setGoalPose (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, double tolerance=0.001)
 Set a goal pose for the end-effector ee_name. Generates a sphere with radius tolerance as well as orientation tolerances of tolerance from pose. More...
 
void setGoalRegion (const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
 Set a goal region for an end-effector ee_name. Sets the position constraint from geometry at a pose pose, and the orientation constraint from orientation and XYZ Euler angle tolerances tolerances. More...
 
void precomputeGoalConfigurations (std::size_t n_samples, const ScenePtr &scene, const ConfigurationValidityCallback &callback={})
 Override the goals of this motion request with precomputed goal configurations (from the specified regions). More...
 
void clearGoals ()
 Clears all goals. More...
 

Additional Inherited Members

- Public Types inherited from robowflex::ID
using Key = std::pair< std::string, std::size_t >
 A snapshot of the state of an ID. Can be compared against another ID. More...
 
- Static Public Member Functions inherited from robowflex::ID
static Key getNullKey ()
 Get a null key for initialization. More...
 
- Protected Member Functions inherited from robowflex::ID
void incrementVersion ()
 Increment the version number of this object. More...
 

Detailed Description

A helper class to build motion planning requests for a robowflex::Planner.

Definition at line 33 of file builder.h.

Member Typedef Documentation

◆ ConfigurationValidityCallback

using robowflex::MotionRequestBuilder::ConfigurationValidityCallback = std::function<bool(const robot_state::RobotState &)>

Callback function that returns true if configuration is valid for goal set, false otherwise.

Definition at line 265 of file builder.h.

Constructor & Destructor Documentation

◆ MotionRequestBuilder() [1/4]

MotionRequestBuilder::MotionRequestBuilder ( const RobotConstPtr robot)

Constructor.

Parameters
[in]robotRobot to build planning problem for.

Definition at line 27 of file builder.cpp.

27  : robot_(robot)
28 {
29  initialize();
30 
31  robot_state::RobotState start_state(robot_->getModelConst());
32  start_state.setToDefaultValues();
33 
34  moveit::core::robotStateToRobotStateMsg(start_state, request_.start_state);
35 }
planning_interface::MotionPlanRequest request_
The build request.
Definition: builder.h:444
const RobotConstPtr robot_
The robot to build the request for.
Definition: builder.h:437
void initialize()
Sets defaults.
Definition: builder.cpp:73
void robotStateToRobotStateMsg(const RobotState &state, moveit_msgs::RobotState &robot_state, bool copy_attached_bodies=true)
Functions for loading and animating robots in Blender.

◆ MotionRequestBuilder() [2/4]

MotionRequestBuilder::MotionRequestBuilder ( const RobotConstPtr robot,
const std::string group_name,
const std::string planner_config = "" 
)

Constructor. Set planner config and group as well.

Parameters
[in]robotRobot to build planning problem for.
[in]group_nameThe motion planning group to build the request for.
[in]planner_configDesired planning configuration to use.

Definition at line 37 of file builder.cpp.

40 {
41  setPlanningGroup(group_name);
42 
43  if (not planner_config.empty())
44  setConfig(planner_config);
45 }
bool setConfig(const std::string &requested_config)
Set the planning configuration to use for the motion planning request. Attempts to match requested_co...
Definition: builder.cpp:114
void setPlanningGroup(const std::string &group_name)
Set the planning group to use for this request builder.
Definition: builder.cpp:96
MotionRequestBuilder(const RobotConstPtr &robot)
Constructor.
Definition: builder.cpp:27
T empty(T... args)

◆ MotionRequestBuilder() [3/4]

MotionRequestBuilder::MotionRequestBuilder ( const PlannerConstPtr planner,
const std::string group_name,
const std::string planner_config = "" 
)

Constructor.

Parameters
[in]plannerThe motion planner to build a request for.
[in]group_nameThe motion planning group to build the request for.
[in]planner_configDesired planning configuration to use.

Definition at line 47 of file builder.cpp.

49  : MotionRequestBuilder(planner->getRobot())
50 {
51  setPlanningGroup(group_name);
52  setPlanner(planner);
53 
54  if (not planner_config.empty())
55  setConfig(planner_config);
56 }
void setPlanner(const PlannerConstPtr &planner)
Set the Robowflex planner to use.
Definition: builder.cpp:82

◆ MotionRequestBuilder() [4/4]

MotionRequestBuilder::MotionRequestBuilder ( const MotionRequestBuilder other)

Copy Constructor.

Parameters
[in]otherRequest to copy.

Definition at line 58 of file builder.cpp.

60 {
61  request_ = other.getRequestConst();
62 
63  const auto &planner = other.getPlanner();
64  if (planner)
65  setPlanner(planner);
66 }
const RobotConstPtr & getRobot() const
Get the robot for this request.
Definition: builder.cpp:557
const PlannerConstPtr & getPlanner() const
Get the planner for this request.
Definition: builder.cpp:562
const planning_interface::MotionPlanRequest & getRequestConst() const
Get a const reference to the currently built motion planning request.
Definition: builder.cpp:538

Member Function Documentation

◆ addCylinderSideGrasp()

void MotionRequestBuilder::addCylinderSideGrasp ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
const GeometryConstPtr cylinder,
double  distance,
double  depth,
unsigned int  n 
)

Adds a set of regions to grasp a cylinder from the side. This function assumes the X-axis of the end-effector frame ee_name points "forward" for grasping.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose.
[in]poseThe pose of the frame to be rotated about.
[in]cylinderThe cylinder to grasp.
[in]distanceThe distance from the cylinder to place the regions.
[in]depthThe depth of boxes to create.
[in]nThe number of regions to create.

Definition at line 355 of file builder.cpp.

358 {
359  // Grasping region to tile
360  auto box = Geometry::makeBox(depth, depth, cylinder->getDimensions()[1]);
361  RobotPose offset(Eigen::Translation3d(cylinder->getDimensions()[0] + distance, 0, 0));
362 
363  Eigen::Quaterniond orientation = Eigen::AngleAxisd(-constants::pi, Eigen::Vector3d::UnitX()) //
364  * Eigen::AngleAxisd(0, Eigen::Vector3d::UnitY()) //
365  * Eigen::AngleAxisd(constants::pi, Eigen::Vector3d::UnitZ());
366 
367  addGoalRotaryTile(ee_name, base_name, //
368  pose, box, orientation, {0.01, 0.01, 0.01}, //
369  offset, Eigen::Vector3d::UnitZ(), n);
370 }
static GeometryPtr makeBox(double x, double y, double z)
Create a box.
Definition: geometry.cpp:48
void addGoalRotaryTile(const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances, const RobotPose &offset, const Eigen::Vector3d &axis, unsigned int n)
Tiles some geometry around a pose in base_name for the end-effector ee_name. The geometry is placed a...
Definition: builder.cpp:339
static const double pi
Definition: constants.h:21
std::decay< decltype(std::declval< moveit::core::Transforms >().getTransform("")) >::type RobotPose
A pose (point in SE(3)) used in various functions. Defined from what MoveIt! uses.
Definition: adapter.h:24

◆ addGoalConfiguration() [1/3]

void MotionRequestBuilder::addGoalConfiguration ( const robot_state::RobotState &  state)

Add a goal configuration from a robot state.

Parameters
[in]stateThe robot state to set ass reference. Usually from robowflex::Robot::getScratchState().

Definition at line 256 of file builder.cpp.

257 {
258  if (not jmg_)
259  {
260  RBX_ERROR("No planning group set!");
261  throw Exception(1, "No planning group set!");
262  }
263 
265  request_.goal_constraints.push_back(kinematic_constraints::constructGoalConstraints(state, jmg_));
266 }
Exception that contains a message and an error code.
Definition: util.h:15
void incrementVersion()
Increment the version number of this object.
Definition: id.cpp:42
robot_model::JointModelGroup * jmg_
Definition: builder.h:441
#define RBX_ERROR(fmt,...)
Output a error logging message.
Definition: log.h:102
moveit_msgs::Constraints constructGoalConstraints(const robot_state::RobotState &state, const robot_model::JointModelGroup *jmg, double tolerance_below, double tolerance_above)

◆ addGoalConfiguration() [2/3]

void MotionRequestBuilder::addGoalConfiguration ( const robot_state::RobotStatePtr &  state)

Add a goal configuration from a robot state.

Parameters
[in]stateThe robot state to set as pointer. Usually from robowflex::Robot::getScratchState().

Definition at line 251 of file builder.cpp.

252 {
253  addGoalConfiguration(*state);
254 }
void addGoalConfiguration(const std::vector< double > &joints)
Add a goal configuration from a vector joints. All joints are assumed to be specified and in the defa...
Definition: builder.cpp:234

◆ addGoalConfiguration() [3/3]

void MotionRequestBuilder::addGoalConfiguration ( const std::vector< double > &  joints)

Add a goal configuration from a vector joints. All joints are assumed to be specified and in the default order.

Parameters
[in]jointsThe values of the joints to set.

Definition at line 234 of file builder.cpp.

235 {
236  if (not jmg_)
237  {
238  RBX_ERROR("No planning group set!");
239  throw Exception(1, "No planning group set!");
240  }
241 
243 
244  robot_state::RobotStatePtr state;
245  state.reset(new robot_state::RobotState(robot_->getModelConst()));
246  state->setJointGroupPositions(jmg_, joints);
247 
248  addGoalConfiguration(state);
249 }

◆ addGoalFromIKQuery()

void MotionRequestBuilder::addGoalFromIKQuery ( const Robot::IKQuery query)

Add an IK query as a goal pose.

Parameters
[in]queryIK query to construct goal from.

Definition at line 268 of file builder.cpp.

269 {
270  if (not jmg_)
271  {
272  RBX_ERROR("No planning group set!");
273  throw Exception(1, "No planning group set!");
274  }
275 
276  if (group_name_ != query.group)
277  {
278  RBX_ERROR("Planning group in IK query `%1%` not the same as request `%2%`", query.group, group_name_);
279  throw Exception(1, "Mismatched query groups!");
280  }
281 
282  if (query.regions.size() > 1)
283  {
284  RBX_ERROR("Cannot set goal request from IK query with multiple targets!");
285  throw Exception(1, "Tried to set goal from multi-target request!");
286  }
287 
288  std::string tip_to_use = query.tips[0];
289  if (tip_to_use.empty())
290  {
291  const auto &tips = robot_->getSolverTipFrames(group_name_);
292  if (tips.empty() or tips.size() > 1)
293  {
294  RBX_ERROR("Unable to find tip frame for request.");
295  throw Exception(1, "Unable to find tip frame for request.");
296  }
297 
298  tip_to_use = tips[0];
299  }
300 
301  const std::string &base = robot_->getSolverBaseFrame(group_name_);
302  if (base.empty())
303  {
304  RBX_ERROR("Failed to get base frame for request.");
305  throw Exception(1, "Unable to find base frame for request.");
306  }
307 
308  addGoalRegion(tip_to_use, base, query.region_poses[0], query.regions[0], query.orientations[0],
309  query.tolerances[0]);
310 }
std::string group_name_
The group to plan for.
Definition: builder.h:440
void addGoalRegion(const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
Add a goal region for an end-effector ee_name. Sets the position constraint from geometry at a pose p...
Definition: builder.cpp:323
const std::vector< std::string > tips
T size(T... args)
std::string group
Target joint group to do IK for.
EigenSTL::vector_Vector3d tolerances
XYZ Euler orientation tolerances.
std::vector< Eigen::Quaterniond > orientations
Target orientations.
std::vector< std::string > tips
List of end-effectors.
std::vector< GeometryConstPtr > regions
Regions to sample target positions from.

◆ addGoalPose()

void MotionRequestBuilder::addGoalPose ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
double  tolerance = 0.001 
)

Add a goal pose for the end-effector ee_name. Generates a sphere with radius tolerance as well as orientation tolerances of tolerance from pose.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose.
[in]poseThe pose of the end-effector in base_frame.
[in]toleranceThe tolerance to put on the pose.

Definition at line 312 of file builder.cpp.

314 {
315  auto copy = pose;
316  Eigen::Quaterniond orientation(pose.rotation());
317  copy.linear() = Eigen::Matrix3d::Identity();
318  addGoalRegion(ee_name, base_name, //
319  copy, Geometry::makeSphere(tolerance), //
320  orientation, {tolerance, tolerance, tolerance});
321 }
static GeometryPtr makeSphere(double radius)
Create a sphere.
Definition: geometry.cpp:43
T copy(T... args)

◆ addGoalRegion()

void MotionRequestBuilder::addGoalRegion ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
const GeometryConstPtr geometry,
const Eigen::Quaterniond &  orientation,
const Eigen::Vector3d &  tolerances 
)

Add a goal region for an end-effector ee_name. Sets the position constraint from geometry at a pose pose, and the orientation constraint from orientation and XYZ Euler angle tolerances tolerances.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose and orientation.
[in]poseThe pose of geometry in base_frame.
[in]geometryThe geometry describing the position constraint.
[in]orientationThe desired orientation.
[in]tolerancesXYZ Euler angle tolerances about orientation.

Definition at line 323 of file builder.cpp.

327 {
329 
330  moveit_msgs::Constraints constraints;
331 
332  constraints.position_constraints.push_back(TF::getPositionConstraint(ee_name, base_name, pose, geometry));
333  constraints.orientation_constraints.push_back(
334  TF::getOrientationConstraint(ee_name, base_name, orientation, tolerances));
335 
336  request_.goal_constraints.push_back(constraints);
337 }
moveit_msgs::OrientationConstraint getOrientationConstraint(const std::string &ee_name, const std::string &base_name, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
Get an orientation constraint message.
Definition: tf.cpp:189
moveit_msgs::PositionConstraint getPositionConstraint(const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry)
Get a position constraint message.
Definition: tf.cpp:169

◆ addGoalRotaryTile()

void MotionRequestBuilder::addGoalRotaryTile ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
const GeometryConstPtr geometry,
const Eigen::Quaterniond &  orientation,
const Eigen::Vector3d &  tolerances,
const RobotPose offset,
const Eigen::Vector3d &  axis,
unsigned int  n 
)

Tiles some geometry around a pose in base_name for the end-effector ee_name. The geometry is placed at offset from pose, and n copies are placed evenly rotated about axis. The desired orientation is also rotated about the axis and set for each copy.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose and orientation.
[in]poseThe pose of the frame to be rotated about.
[in]geometryThe geometry describing the position constraint.
[in]orientationThe desired orientation.
[in]tolerancesXYZ Euler angle tolerances about orientation.
[in]offsetOffset of the goal geometry from pose.
[in]axisAxis to rotation the goal geometry and orientation about in pose.
[in]nNumber of rotations (evenly divided around the circle).

Definition at line 339 of file builder.cpp.

344 {
345  for (double angle = 0; angle < constants::two_pi; angle += constants::two_pi / n)
346  {
347  Eigen::Quaterniond rotation(Eigen::AngleAxisd(angle, axis));
348  RobotPose new_pose = pose * rotation * offset;
349  Eigen::Quaterniond new_orientation(rotation * orientation);
350 
351  addGoalRegion(ee_name, base_name, new_pose, geometry, new_orientation, tolerances);
352  }
353 }
static const double two_pi
Definition: constants.h:24

◆ addPathOrientationConstraint()

void MotionRequestBuilder::addPathOrientationConstraint ( const std::string ee_name,
const std::string base_name,
const Eigen::Quaterniond &  orientation,
const Eigen::Vector3d &  tolerances 
)

Set an orientation constraint on the path. Sets the orientation constraint from orientation and XYZ Euler angle tolerances tolerances.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of orientation.
[in]orientationThe desired orientation.
[in]tolerancesXYZ Euler angle tolerances about orientation.

Definition at line 477 of file builder.cpp.

481 {
483  request_.path_constraints.orientation_constraints.push_back(
484  TF::getOrientationConstraint(ee_name, base_name, orientation, tolerances));
485 }

◆ addPathPoseConstraint()

void MotionRequestBuilder::addPathPoseConstraint ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
const GeometryConstPtr geometry,
const Eigen::Quaterniond &  orientation,
const Eigen::Vector3d &  tolerances 
)

Set a pose constraint on the path. Sets the position constraint from geometry at a pose pose, and the orientation constraint from orientation and XYZ Euler angle tolerances tolerances.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose and orientation.
[in]poseThe pose of geometry in base_frame.
[in]geometryThe geometry describing the position constraint.
[in]orientationThe desired orientation.
[in]tolerancesXYZ Euler angle tolerances about orientation.

Definition at line 460 of file builder.cpp.

464 {
465  addPathPositionConstraint(ee_name, base_name, pose, geometry);
466  addPathOrientationConstraint(ee_name, base_name, orientation, tolerances);
467 }
void addPathOrientationConstraint(const std::string &ee_name, const std::string &base_name, const Eigen::Quaterniond &orientation, const Eigen::Vector3d &tolerances)
Set an orientation constraint on the path. Sets the orientation constraint from orientation and XYZ E...
Definition: builder.cpp:477
void addPathPositionConstraint(const std::string &ee_name, const std::string &base_name, const RobotPose &pose, const GeometryConstPtr &geometry)
Set a position constraint on the path. Sets the position constraint from geometry at a pose pose.
Definition: builder.cpp:469

◆ addPathPositionConstraint()

void MotionRequestBuilder::addPathPositionConstraint ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
const GeometryConstPtr geometry 
)

Set a position constraint on the path. Sets the position constraint from geometry at a pose pose.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose.
[in]poseThe pose of geometry in base_frame.
[in]geometryThe geometry describing the position constraint.

Definition at line 469 of file builder.cpp.

471 {
473  request_.path_constraints.position_constraints.push_back(
474  TF::getPositionConstraint(ee_name, base_name, pose, geometry));
475 }

◆ attachObjectToStart()

bool MotionRequestBuilder::attachObjectToStart ( ScenePtr  scene,
const std::string object 
)

Attach an object to the current request start state. Uses object from scene, and modifies the underlying scene state. This uses attachObject() on the scene, so note that the attached object will have to be re-added to the scene.

Parameters
[in]sceneScene to use objects from. Will be modified.
[in]objectObject to attach.
Returns
True on success, false on failure.

Definition at line 217 of file builder.cpp.

218 {
219  // Attach object to current start configuration.
220  const auto &start = getStartConfiguration();
221  if (not scene->attachObject(*start, object))
222  return false;
223 
225  return true;
226 }
void useSceneStateAsStart(const SceneConstPtr &scene)
Use the current scene state for the starting configuration.
Definition: builder.cpp:212
robot_state::RobotStatePtr getStartConfiguration() const
Get the start state of the request as a robot state.
Definition: builder.cpp:499
Functions for loading and animating scenes in Blender.

◆ attachObjectToStartConst()

bool MotionRequestBuilder::attachObjectToStartConst ( const SceneConstPtr scene,
const std::string object 
)

Attach an object to the current request start state. Uses object from scene, but does not modify the underlying scene. Be aware that attached objects can collide with themselves if not removed from the provided scene.

Parameters
[in]sceneScene to use objects from.
[in]objectObject to attach.
Returns
True on success, false on failure.

Definition at line 228 of file builder.cpp.

229 {
230  auto copy = scene->deepCopy();
231  return attachObjectToStart(copy, object);
232 }
bool attachObjectToStart(ScenePtr scene, const std::string &object)
Attach an object to the current request start state. Uses object from scene, and modifies the underly...
Definition: builder.cpp:217

◆ clearGoals()

void MotionRequestBuilder::clearGoals ( )

Clears all goals.

Definition at line 442 of file builder.cpp.

443 {
445  request_.goal_constraints.clear();
446 }

◆ clone()

MotionRequestBuilderPtr MotionRequestBuilder::clone ( ) const

Clone this request.

Returns
A copy of this request.

Definition at line 68 of file builder.cpp.

69 {
70  return std::make_shared<MotionRequestBuilder>(*this);
71 }

◆ fromYAMLFile()

bool MotionRequestBuilder::fromYAMLFile ( const std::string file)

Load a planning request from a YAML file file.

Parameters
[in]fileThe name of the file to load the request from.
Returns
True on success, false on failure.

Definition at line 548 of file builder.cpp.

549 {
551 
552  bool success = IO::fromYAMLFile(request_, file);
553  setPlanningGroup(request_.group_name);
554  return success;
555 }
bool fromYAMLFile(moveit_msgs::PlanningScene &msg, const std::string &file)
Loads a planning scene from a YAML file.
Definition: yaml.cpp:1914

◆ getGoalConfiguration()

robot_state::RobotStatePtr MotionRequestBuilder::getGoalConfiguration ( ) const

Get the goal state of the request as a robot state.

Returns
The goal state.

Definition at line 509 of file builder.cpp.

510 {
511  auto goal_state = robot_->allocState();
512 
513  if (request_.goal_constraints.size() != 1)
514  {
515  RBX_ERROR("Ambiguous goal, %lu goal goal_constraints exist, returning default goal",
516  request_.goal_constraints.size());
517  return goal_state;
518  }
519 
520  if (request_.goal_constraints[0].joint_constraints.empty())
521  {
522  RBX_ERROR("No joint constraints specified, returning default goal");
523  return goal_state;
524  }
525 
526  std::map<std::string, double> variable_map;
527  for (const auto &joint : request_.goal_constraints[0].joint_constraints)
528  variable_map[joint.joint_name] = joint.position;
529 
530  // Start state includes attached objects and values for the non-group links.
531  moveit::core::robotStateMsgToRobotState(request_.start_state, *goal_state);
532  goal_state->setVariablePositions(variable_map);
533  goal_state->update(true);
534 
535  return goal_state;
536 }
bool robotStateMsgToRobotState(const Transforms &tf, const moveit_msgs::RobotState &robot_state, RobotState &state, bool copy_attached_bodies=true)

◆ getPathConstraints()

moveit_msgs::Constraints & MotionRequestBuilder::getPathConstraints ( )

Get a reference to the current path constraints on the motion planning request.

Returns
The motion planning request.

Definition at line 487 of file builder.cpp.

488 {
490  return request_.path_constraints;
491 }

◆ getPlanner()

const PlannerConstPtr & MotionRequestBuilder::getPlanner ( ) const

Get the planner for this request.

Returns
The planner. Will be null if not set.

Definition at line 562 of file builder.cpp.

563 {
564  return planner_;
565 }
PlannerConstPtr planner_
The planner to build the request for.
Definition: builder.h:439

◆ getPlannerConfig()

const std::string & MotionRequestBuilder::getPlannerConfig ( ) const

Get the planner config.

Returns
The current planner config used.

Definition at line 572 of file builder.cpp.

573 {
574  return request_.planner_id;
575 }

◆ getPlanningGroup()

const std::string & MotionRequestBuilder::getPlanningGroup ( ) const

Get the planning group.

Returns
The current planning group used.

Definition at line 567 of file builder.cpp.

568 {
569  return group_name_;
570 }

◆ getRequest()

planning_interface::MotionPlanRequest & MotionRequestBuilder::getRequest ( )

Get a reference to the currently built motion planning request.

Returns
The motion planning request.

Definition at line 493 of file builder.cpp.

494 {
496  return request_;
497 }

◆ getRequestConst()

const planning_interface::MotionPlanRequest & MotionRequestBuilder::getRequestConst ( ) const

Get a const reference to the currently built motion planning request.

Returns
The motion planning request.

Definition at line 538 of file builder.cpp.

539 {
540  return request_;
541 }

◆ getRobot()

const RobotConstPtr & MotionRequestBuilder::getRobot ( ) const

Get the robot for this request.

Returns
The robot.

Definition at line 557 of file builder.cpp.

558 {
559  return robot_;
560 }

◆ getStartConfiguration()

robot_state::RobotStatePtr MotionRequestBuilder::getStartConfiguration ( ) const

Get the start state of the request as a robot state.

Returns
The start state.

Definition at line 499 of file builder.cpp.

500 {
501  auto start_state = robot_->allocState();
502 
503  moveit::core::robotStateMsgToRobotState(request_.start_state, *start_state);
504  start_state->update(true);
505 
506  return start_state;
507 }

◆ initialize()

void MotionRequestBuilder::initialize ( )

Sets defaults.

Definition at line 73 of file builder.cpp.

74 {
76 
77  setWorkspaceBounds(Eigen::Vector3d::Constant(-constants::default_workspace_bound),
78  Eigen::Vector3d::Constant(constants::default_workspace_bound));
79  request_.allowed_planning_time = constants::default_allowed_planning_time;
80 }
static const std::string DEFAULT_CONFIG
Default planner configuration to use.
Definition: builder.h:446
void setWorkspaceBounds(const moveit_msgs::WorkspaceParameters &wp)
Sets workspace bounds of the planning request.
Definition: builder.cpp:146
static const double default_workspace_bound
Definition: constants.h:36
static const double default_allowed_planning_time
Definition: constants.h:37

◆ precomputeGoalConfigurations()

void MotionRequestBuilder::precomputeGoalConfigurations ( std::size_t  n_samples,
const ScenePtr scene,
const ConfigurationValidityCallback callback = {} 
)

Override the goals of this motion request with precomputed goal configurations (from the specified regions).

That is, rather than a set of sampleable goal regions, the request will have n_samples goal configurations, all sampled from the prior goal regions.

Parameters
[in]n_samplesNumber of samples to precompute.
[in]sceneScene to collision check against.
[in]callbackIf provided, will only keep samples that are valid according to callback.

Definition at line 412 of file builder.cpp.

414 {
415  // Allocate samplers for each region
418  for (const auto &goal : request_.goal_constraints)
419  {
420  samplers.emplace_back(manager.selectSampler(scene->getSceneConst(), group_name_, goal));
421  samplers.back()->setGroupStateValidityCallback(scene->getGSVCF(false));
422  }
423 
424  clearGoals();
425 
426  // Clone start
427  robot_state::RobotState state = *robot_->getScratchStateConst();
428 
429  // Sample n_samples to add to new request
430  std::size_t n = n_samples;
431  while (n)
432  {
433  auto sampler = RNG::uniformSample(samplers);
434  if (sampler->sample(state) and (not callback or callback(state)))
435  {
436  addGoalConfiguration(state);
437  n--;
438  }
439  }
440 }
T back(T... args)
ConstraintSamplerPtr selectSampler(const planning_scene::PlanningSceneConstPtr &scene, const std::string &group_name, const moveit_msgs::Constraints &constr) const
void clearGoals()
Clears all goals.
Definition: builder.cpp:442
T emplace_back(T... args)
Iter uniformSample(Iter start, Iter end)
Choose a random element between start and end.
Definition: random.h:121
void callback(movegroup::MoveGroupHelper::Action &action)
Definition: tapedeck.cpp:20

◆ setAllowedPlanningTime()

void MotionRequestBuilder::setAllowedPlanningTime ( double  allowed_planning_time)

Set the allowed planning time in the request.

Parameters
[in]allowed_planning_timeThe allowed planning time.

Definition at line 448 of file builder.cpp.

449 {
451  request_.allowed_planning_time = allowed_planning_time;
452 }

◆ setConfig()

bool MotionRequestBuilder::setConfig ( const std::string requested_config)

Set the planning configuration to use for the motion planning request. Attempts to match requested_config with the planner configuration offered by planner_ that is the shortest configuration that contains requested_config as a substring. For example, specifying RRTConnect will match RRTConnectkConfigDefault, and specifying RRT will match RRTkConfigDefault and not RRTConnectkConfigDefault.

Parameters
[in]requested_configThe planner config to find and use.
Returns
True if the requested_config is found, false otherwise.

Definition at line 114 of file builder.cpp.

115 {
116  if (not planner_)
117  {
118  RBX_INFO("No planner set! Using requested config `%s`", requested_config);
119  request_.planner_id = requested_config;
120  return true;
121  }
122 
123  const auto &configs = planner_->getPlannerConfigs();
124 
126  for (const auto &config : configs)
127  {
128  if (config.find(requested_config) != std::string::npos)
129  matches.emplace_back(config);
130  }
131 
132  if (matches.empty())
133  return false;
134 
135  const auto &found =
136  std::min_element(matches.begin(), matches.end(),
137  [](const std::string &a, const std::string &b) { return a.size() < b.size(); });
138 
140 
141  request_.planner_id = *found;
142  RBX_INFO("Requested Config: `%s`: Using planning config `%s`", requested_config, request_.planner_id);
143  return true;
144 }
T begin(T... args)
T end(T... args)
#define RBX_INFO(fmt,...)
Output a info logging message.
Definition: log.h:118
T min_element(T... args)

◆ setGoalConfiguration() [1/3]

void MotionRequestBuilder::setGoalConfiguration ( const robot_state::RobotState &  state)

Set the goal configuration from a robot state.

Parameters
[in]stateThe robot state to set as reference. Usually from robowflex::Robot::getScratchState().

Definition at line 384 of file builder.cpp.

385 {
386  clearGoals();
387  addGoalConfiguration(state);
388 }

◆ setGoalConfiguration() [2/3]

void MotionRequestBuilder::setGoalConfiguration ( const robot_state::RobotStatePtr &  state)

Set the goal configuration from a robot state.

Parameters
[in]stateThe robot state to set as pointer. Usually from robowflex::Robot::getScratchState().

Definition at line 378 of file builder.cpp.

379 {
380  clearGoals();
381  addGoalConfiguration(state);
382 }

◆ setGoalConfiguration() [3/3]

void MotionRequestBuilder::setGoalConfiguration ( const std::vector< double > &  joints)

Set the goal configuration from a vector joints. All joints are assumed to be specified and in the default order.

Parameters
[in]jointsThe values of the joints to set.

Definition at line 372 of file builder.cpp.

373 {
374  clearGoals();
375  addGoalConfiguration(joints);
376 }

◆ setGoalFromIKQuery()

void MotionRequestBuilder::setGoalFromIKQuery ( const Robot::IKQuery query)

Set the goal pose from an IK query.

Parameters
[in]queryIK query to construct goal from.

Definition at line 390 of file builder.cpp.

391 {
392  clearGoals();
393  addGoalFromIKQuery(query);
394 }
void addGoalFromIKQuery(const Robot::IKQuery &query)
Add an IK query as a goal pose.
Definition: builder.cpp:268

◆ setGoalPose()

void MotionRequestBuilder::setGoalPose ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
double  tolerance = 0.001 
)

Set a goal pose for the end-effector ee_name. Generates a sphere with radius tolerance as well as orientation tolerances of tolerance from pose.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose.
[in]poseThe pose of the end-effector in base_frame.
[in]toleranceThe tolerance to put on the pose.

Definition at line 396 of file builder.cpp.

398 {
399  clearGoals();
400  addGoalPose(ee_name, base_name, pose, tolerance);
401 }
void addGoalPose(const std::string &ee_name, const std::string &base_name, const RobotPose &pose, double tolerance=0.001)
Add a goal pose for the end-effector ee_name. Generates a sphere with radius tolerance as well as ori...
Definition: builder.cpp:312

◆ setGoalRegion()

void MotionRequestBuilder::setGoalRegion ( const std::string ee_name,
const std::string base_name,
const RobotPose pose,
const GeometryConstPtr geometry,
const Eigen::Quaterniond &  orientation,
const Eigen::Vector3d &  tolerances 
)

Set a goal region for an end-effector ee_name. Sets the position constraint from geometry at a pose pose, and the orientation constraint from orientation and XYZ Euler angle tolerances tolerances.

Parameters
[in]ee_nameThe name of the end-effector link.
[in]base_nameThe name of the frame of reference of pose and orientation.
[in]poseThe pose of geometry in base_frame.
[in]geometryThe geometry describing the position constraint.
[in]orientationThe desired orientation.
[in]tolerancesXYZ Euler angle tolerances about orientation.

Definition at line 403 of file builder.cpp.

407 {
408  clearGoals();
409  addGoalRegion(ee_name, base_name, pose, geometry, orientation, tolerances);
410 }

◆ setNumPlanningAttempts()

void MotionRequestBuilder::setNumPlanningAttempts ( unsigned int  num_planning_attempts)

Set the number of planning attemps in the request.

Parameters
[in]num_planning_attemptsThe required time for planning attempts.

Definition at line 454 of file builder.cpp.

455 {
457  request_.num_planning_attempts = num_planning_attempts;
458 }

◆ setPlanner()

void MotionRequestBuilder::setPlanner ( const PlannerConstPtr planner)

Set the Robowflex planner to use.

Parameters
[in]plannerRobowflex planner to build request for.

Definition at line 82 of file builder.cpp.

83 {
84  const auto &rname = robot_->getName();
85  const auto &pname = planner->getRobot()->getName();
86 
87  if (rname != pname)
88  {
89  RBX_ERROR("Conflicting robots `%s` and `%s` in request builder!", rname, pname);
90  throw Exception(1, "Invalid planner!");
91  }
92 
93  planner_ = planner;
94 }

◆ setPlanningGroup()

void MotionRequestBuilder::setPlanningGroup ( const std::string group_name)

Set the planning group to use for this request builder.

Parameters
[in]group_nameName of planning group.

Definition at line 96 of file builder.cpp.

97 {
98  const auto &model = robot_->getModelConst();
99 
100  if (model->hasJointModelGroup(group_name))
101  {
102  group_name_ = group_name;
103  jmg_ = robot_->getModelConst()->getJointModelGroup(group_name_);
104 
105  request_.group_name = group_name_;
106  }
107  else
108  {
109  RBX_ERROR("Joint group `%s` does not exist in robot!", group_name);
110  throw Exception(1, "Invalid joint group name!");
111  }
112 }

◆ setStartConfiguration() [1/3]

void MotionRequestBuilder::setStartConfiguration ( const robot_state::RobotState &  state)

Set the start configuration from a robot state.

Parameters
[in]stateThe robot state to set. Usually from robowflex::Robot::getScratchState().

Definition at line 201 of file builder.cpp.

202 {
205 }

◆ setStartConfiguration() [2/3]

void MotionRequestBuilder::setStartConfiguration ( const robot_state::RobotStatePtr &  state)

Set the start configuration from a robot state.

Parameters
[in]stateThe robot state to set. Usually from robowflex::Robot::getScratchState().

Definition at line 207 of file builder.cpp.

208 {
209  setStartConfiguration(*state);
210 }
void setStartConfiguration(const std::vector< double > &joints)
Set the start configuration from a vector joints. All joints are assumed to be specified and in the d...
Definition: builder.cpp:189

◆ setStartConfiguration() [3/3]

void MotionRequestBuilder::setStartConfiguration ( const std::vector< double > &  joints)

Set the start configuration from a vector joints. All joints are assumed to be specified and in the default order.

Parameters
[in]jointsThe values of the joints to set.

Definition at line 189 of file builder.cpp.

190 {
191  if (not jmg_)
192  {
193  RBX_ERROR("No planning group set!");
194  throw Exception(1, "No planning group set!");
195  }
196 
198  robot_->setStateMsgGroupState(request_.start_state, request_.group_name, joints);
199 }

◆ setWorkspaceBounds() [1/2]

void MotionRequestBuilder::setWorkspaceBounds ( const Eigen::Ref< const Eigen::VectorXd > &  min,
const Eigen::Ref< const Eigen::VectorXd > &  max 
)

Sets workspace bounds of the planning request.

Parameters
[in]minXYZ vector of minimum workspace bounds.
[in]maxXYZ vector of maximum workspace bounds.

Definition at line 152 of file builder.cpp.

154 {
155  moveit_msgs::WorkspaceParameters wp;
156  wp.min_corner.x = min[0];
157  wp.min_corner.y = min[1];
158  wp.min_corner.z = min[2];
159  wp.max_corner.x = max[0];
160  wp.max_corner.y = max[1];
161  wp.max_corner.z = max[2];
162 
163  setWorkspaceBounds(wp);
164 }
T max(T... args)
T min(T... args)

◆ setWorkspaceBounds() [2/2]

void MotionRequestBuilder::setWorkspaceBounds ( const moveit_msgs::WorkspaceParameters &  wp)

Sets workspace bounds of the planning request.

Parameters
[in]wpThe workspace parameters to use.

Definition at line 146 of file builder.cpp.

147 {
149  request_.workspace_parameters = wp;
150 }

◆ swapStartWithGoal()

bool MotionRequestBuilder::swapStartWithGoal ( )

Swap the start and goal configurations. This is only possible when a single joint goal is specified, otherwise an error is raised.

Returns
True upon success, False otherwise.

Definition at line 166 of file builder.cpp.

167 {
168  if (request_.goal_constraints.size() != 1)
169  {
170  RBX_ERROR("Multiple goal constraints exist, cannot swap start with goal");
171  return false;
172  }
173 
174  if (request_.goal_constraints[0].joint_constraints.empty())
175  {
176  RBX_ERROR("No joint goal is specified, cannot swap start with goal");
177  return false;
178  }
179 
180  const auto &start = getStartConfiguration();
181  const auto &goal = getGoalConfiguration();
182  clearGoals();
183 
184  setStartConfiguration(goal);
185  setGoalConfiguration(start);
186  return true;
187 }
void setGoalConfiguration(const std::vector< double > &joints)
Set the goal configuration from a vector joints. All joints are assumed to be specified and in the de...
Definition: builder.cpp:372
robot_state::RobotStatePtr getGoalConfiguration() const
Get the goal state of the request as a robot state.
Definition: builder.cpp:509

◆ toYAMLFile()

bool MotionRequestBuilder::toYAMLFile ( const std::string file) const

Serialize the motion planning request to a YAML file file.

Parameters
[in]fileThe name of the file to serialize the request to.
Returns
True on success, false on failure.

Definition at line 543 of file builder.cpp.

544 {
545  return IO::YAMLToFile(IO::toNode(request_), file);
546 }
bool YAMLToFile(const YAML::Node &node, const std::string &file)
Write the contents of a YAML node out to a potentially new file.
YAML::Node toNode(const geometry_msgs::Pose &msg)
Converts a pose message to YAML.
Definition: yaml.cpp:1874

◆ useSceneStateAsStart()

void MotionRequestBuilder::useSceneStateAsStart ( const SceneConstPtr scene)

Use the current scene state for the starting configuration.

Parameters
[in]sceneScene to use state from.

Definition at line 212 of file builder.cpp.

213 {
214  setStartConfiguration(scene->getCurrentStateConst());
215 }

Member Data Documentation

◆ DEFAULT_CONFIG

const std::string MotionRequestBuilder::DEFAULT_CONFIG = "RRTConnectkConfigDefault"
staticprivate

Default planner configuration to use.

Definition at line 446 of file builder.h.

◆ group_name_

std::string robowflex::MotionRequestBuilder::group_name_
private

The group to plan for.

Definition at line 440 of file builder.h.

◆ jmg_

robot_model::JointModelGroup* robowflex::MotionRequestBuilder::jmg_ {nullptr}
private

The joint model group of the robot (from group_name_)

Definition at line 441 of file builder.h.

◆ planner_

PlannerConstPtr robowflex::MotionRequestBuilder::planner_
private

The planner to build the request for.

Definition at line 439 of file builder.h.

◆ request_

planning_interface::MotionPlanRequest robowflex::MotionRequestBuilder::request_
private

The build request.

Definition at line 444 of file builder.h.

◆ robot_

const RobotConstPtr robowflex::MotionRequestBuilder::robot_
private

The robot to build the request for.

Definition at line 437 of file builder.h.


The documentation for this class was generated from the following files: