Go to the documentation of this file.
45 #include <unordered_map>
62 virtual Eigen::VectorXd
getConfig(
double s)
const = 0;
63 virtual Eigen::VectorXd
getTangent(
double s)
const = 0;
64 virtual Eigen::VectorXd
getCurvature(
double s)
const = 0;
77 Path(
const std::list<Eigen::VectorXd>& path,
double max_deviation = 0.0);
105 Trajectory(
const Path& path,
const Eigen::VectorXd& max_velocity,
const Eigen::VectorXd& max_acceleration,
106 double time_step = 0.001);
141 double& after_acceleration);
143 double& before_acceleration,
double& after_acceleration);
145 double& after_acceleration);
146 bool integrateForward(std::list<TrajectoryStep>& trajectory,
double acceleration);
147 void integrateBackward(std::list<TrajectoryStep>& start_trajectory,
double path_pos,
double path_vel,
148 double acceleration);
177 const double min_angle_change = 0.001);
192 const double max_acceleration_scaling_factor = 1.0)
const override
194 std::unordered_map<std::string, double> empty;
195 return computeTimeStamps(trajectory, empty, empty, max_velocity_scaling_factor, max_acceleration_scaling_factor);
213 const std::unordered_map<std::string, double>& velocity_limits,
214 const std::unordered_map<std::string, double>& acceleration_limits,
215 const double max_velocity_scaling_factor = 1.0,
216 const double max_acceleration_scaling_factor = 1.0)
const;
virtual std::list< double > getSwitchingPoints() const =0
PathSegment * getPathSegment(double &s) const
double getVelocityMaxPathVelocity(double path_pos) const
Eigen::VectorXd getVelocity(double time) const
Return the velocity vector for a given point in time.
std::list< TrajectoryStep >::const_iterator cached_trajectory_segment_
TrajectoryStep(double path_pos, double path_vel)
virtual Eigen::VectorXd getTangent(double s) const =0
std::list< TrajectoryStep >::const_iterator getTrajectorySegment(double time) const
PathSegment(double length=0.0)
TimeOptimalTrajectoryGeneration(const double path_tolerance=0.1, const double resample_dt=0.1, const double min_angle_change=0.001)
Maintain a sequence of waypoints and the time durations between these waypoints.
std::list< std::pair< double, bool > > switching_points_
Eigen::VectorXd max_velocity_
virtual Eigen::VectorXd getCurvature(double s) const =0
double getNextSwitchingPoint(double s, bool &discontinuity) const
Get the next switching point.
void integrateBackward(std::list< TrajectoryStep > &start_trajectory, double path_pos, double path_vel, double acceleration)
const double path_tolerance_
double getAccelerationMaxPathVelocityDeriv(double path_pos)
double getDuration() const
Returns the optimal duration of the trajectory.
Eigen::VectorXd max_acceleration_
bool getNextSwitchingPoint(double path_pos, TrajectoryStep &next_switching_point, double &before_acceleration, double &after_acceleration)
bool getNextAccelerationSwitchingPoint(double path_pos, TrajectoryStep &next_switching_point, double &before_acceleration, double &after_acceleration)
double getMinMaxPathAcceleration(double path_position, double path_velocity, bool max)
Path(const std::list< Eigen::VectorXd > &path, double max_deviation=0.0)
std::list< TrajectoryStep > trajectory_
Eigen::VectorXd getConfig(double s) const
bool hasMixedJointTypes(const moveit::core::JointModelGroup *group) const
Check if a combination of revolute and prismatic joints is used. path_tolerance_ is not valid,...
Trajectory(const Path &path, const Eigen::VectorXd &max_velocity, const Eigen::VectorXd &max_acceleration, double time_step=0.001)
Generates a time-optimal trajectory.
double getVelocityMaxPathVelocityDeriv(double path_pos)
Eigen::VectorXd getAcceleration(double time) const
Return the acceleration vector for a given point in time.
std::list< TrajectoryStep > end_trajectory_
const double resample_dt_
double getMinMaxPhaseSlope(double path_position, double path_velocity, bool max)
std::list< std::pair< double, bool > > getSwitchingPoints() const
Return a list of all switching points as a pair (arc length to switching point, discontinuity)
double getAccelerationMaxPathVelocity(double path_pos) const
bool computeTimeStamps(robot_trajectory::RobotTrajectory &trajectory, const double max_velocity_scaling_factor=1.0, const double max_acceleration_scaling_factor=1.0) const override
Compute a trajectory with waypoints spaced equally in time (according to resample_dt_)....
bool getNextVelocitySwitchingPoint(double path_pos, TrajectoryStep &next_switching_point, double &before_acceleration, double &after_acceleration)
TF2SIMD_FORCE_INLINE tf2Scalar length(const Quaternion &q)
std::list< std::unique_ptr< PathSegment > > path_segments_
Eigen::VectorXd getTangent(double s) const
const double min_angle_change_
bool integrateForward(std::list< TrajectoryStep > &trajectory, double acceleration)
MOVEIT_CLASS_FORWARD(IterativeParabolicTimeParameterization)
This class modifies the timestamps of a trajectory to respect velocity and acceleration constraints.
Eigen::VectorXd getCurvature(double s) const
double verifyScalingFactor(const double requested_scaling_factor) const
Check if the requested scaling factor is valid and if not, return 1.0.
Eigen::VectorXd getPosition(double time) const
Return the position/configuration vector for a given point in time.
virtual PathSegment * clone() const =0
bool isValid() const
Call this method after constructing the object to make sure the trajectory generation succeeded witho...
virtual Eigen::VectorXd getConfig(double s) const =0
moveit_core
Author(s): Ioan Sucan
, Sachin Chitta , Acorn Pooley
autogenerated on Fri May 3 2024 02:28:41