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));
212 if ((v > 3. && x1_ < -3.) || (v < -3 && x1_ > 3))
219 T y = x1_ - v + h_ * x2_;
220 T a0 = sqrt(h_ * h_ * r_ * r_ + 8 * r_ * fabs(y));
221 T a = x2_ + 0.5 * (a0 - h_ * r_) * (y > 0 ? 1 : -1);
222 T u = fabs(a) > h_ * r_ ? -r_ * (a > 0 ? 1 : -1) : -r_ * a / (h_ * r_);
223 x1_ = x1_ + h_ * (x2_ + v_dot);
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
Definition traj_gen.h:205
T getX2() const
Definition traj_gen.h:231
T getX1() const
Definition traj_gen.h:227
void update(T v, T v_dot)
Definition traj_gen.h:210
NonlinearTrackingDifferentiator(T r, T h)
Definition traj_gen.h:207
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