69 time_start_ = time_now;
73 return (t >= time_total_ + time_start_);
78 if ((target_ - start_) < 0)
84 < abs(4. * (target_ - start_)) / (t * t))
88 time_acc_ = time_total_ / 2. -
89 sqrt(acc_ * acc_ * time_total_ * time_total_ - 4. * acc_ * (target_ - start_)) / abs(2. * acc_);
93 a1_ = target_ - (acc_ * time_total_ * time_total_) / 2.;
94 b1_ = acc_ * time_total_;
96 speed_ = b0_ + 2. * c0_ * time_acc_;
105 else if (t > time_total_)
108 if (t <= time_total_)
111 return a0_ + b0_ * t + c0_ * t * t;
112 else if (t < time_total_ - time_acc_)
113 return speed_ * (t - time_acc_) + a0_ + c0_ * (time_acc_ * time_acc_);
115 return a1_ + b1_ * t + c1_ * t * t;
124 if (t < 0. || t > time_total_)
127 if (t <= time_total_)
130 return b0_ + 2. * c0_ * t;
131 else if (t < time_total_ - time_acc_)
134 return b1_ + 2. * c1_ * t;
143 if (t < 0. || t > time_total_)
146 if (t <= time_total_)
150 else if (t < time_total_ - time_acc_)
178 tolerance_ = tolerance;
192 T dx = pos - target_;
193 if (std::abs(dx) > tolerance_)
194 return max_tau_ *
sgn(-max_tau_ * dx - 0.5 * inertia_ * vel * std::abs(vel));
Definition traj_gen.h:164
void setLimit(T max_tau, T inertia, T tolerance)
Definition traj_gen.h:174
T getTau(T pos, T vel)
Definition traj_gen.h:190
bool isReach()
Definition traj_gen.h:186
void setTarget(T target)
Definition traj_gen.h:181
T getAcc(T t)
Definition traj_gen.h:140
bool calc(T t)
Definition traj_gen.h:76
void setLimit(T max_acc)
Definition traj_gen.h:61
void setState(T start, T end, T time_now)
Definition traj_gen.h:65
bool isReach(T t)
Definition traj_gen.h:71
T getPos(T t)
Definition traj_gen.h:100
T getVel(T t)
Definition traj_gen.h:121
int sgn(T val)
Definition math_utilities.h:61