45 std::vector<robot_trajectory::RobotTrajectoryPtr> res_vec{ traj_cont_ };
48 assert(!res_vec.empty());
49 appendWithStrictTimeIncrease(*(res_vec.back()), *traj_tail_);
59 result.
append(source, 0.0);
75 void PlanComponentsBuilder::blend(
const planning_scene::PlanningSceneConstPtr&
planning_scene,
76 const robot_trajectory::RobotTrajectoryPtr& other,
const double blend_radius)
80 throw NoBlenderSetException(
"No blender set");
83 assert(other->getGroupName() == traj_tail_->getGroupName());
90 blend_request.
group_name = traj_tail_->getGroupName();
91 blend_request.
link_name = getSolverTipFrame(model_->getJointModelGroup(blend_request.
group_name));
94 if (!blender_->blend(
planning_scene, blend_request, blend_response))
96 throw BlendingFailedException(
"Blending failed");
100 appendWithStrictTimeIncrease(*(traj_cont_.back()), *blend_response.
first_trajectory);
101 appendWithStrictTimeIncrease(*(traj_cont_.back()), *blend_response.
blend_trajectory);
108 const robot_trajectory::RobotTrajectoryPtr& other,
const double blend_radius)
112 throw NoRobotModelSetException(
"No robot model set");
119 traj_cont_.emplace_back(std::make_shared<robot_trajectory::RobotTrajectory>(model_, other->getGroupName()));
124 if (other->getGroupName() != traj_tail_->getGroupName())
126 appendWithStrictTimeIncrease(*(traj_cont_.back()), *traj_tail_);
129 traj_cont_.emplace_back(std::make_shared<robot_trajectory::RobotTrajectory>(model_, other->getGroupName()));
134 if (blend_radius <= 0.0)
136 appendWithStrictTimeIncrease(*(traj_cont_.back()), *traj_tail_);
std::vector< robot_trajectory::RobotTrajectoryPtr > build() const
void append(const planning_scene::PlanningSceneConstPtr &planning_scene, const robot_trajectory::RobotTrajectoryPtr &other, const double blend_radius)
Appends the specified trajectory to the trajectory container under construction.
Maintain a sequence of waypoints and the time durations between these waypoints.
const std::string & getGroupName() const
double getWayPointDurationFromStart(std::size_t index) const
Returns the duration after start that a waypoint will be reached.
RobotTrajectory & addSuffixWayPoint(const moveit::core::RobotState &state, double dt)
Add a point to the trajectory.
const moveit::core::RobotState & getFirstWayPoint() const
RobotTrajectory & append(const RobotTrajectory &source, double dt, size_t start_index=0, size_t end_index=std::numeric_limits< std::size_t >::max())
Add a specified part of a trajectory to the end of the current trajectory. The default (when start_in...
std::size_t getWayPointCount() const
double getWayPointDurationFromPrevious(std::size_t index) const
const moveit::core::RobotState & getWayPoint(std::size_t index) const
const moveit::core::RobotState & getLastWayPoint() const
bool isRobotStateEqual(const moveit::core::RobotState &state1, const moveit::core::RobotState &state2, const std::string &joint_group_name, double epsilon)
Check if the two robot states have the same joint position/velocity/acceleration.
This namespace includes the central class for representing planning contexts.
robot_trajectory::RobotTrajectoryPtr second_trajectory
robot_trajectory::RobotTrajectoryPtr first_trajectory
robot_trajectory::RobotTrajectoryPtr first_trajectory
robot_trajectory::RobotTrajectoryPtr blend_trajectory
robot_trajectory::RobotTrajectoryPtr second_trajectory