Reputation: 13
I want to constraints velocity at a specify position, for example set start and end velocity to zero.
KinematicTrajectoryOptimization provider two api: AddPathVelocityConstraint and AddVelocityConstraintAtNormalizedTime.
my question is how to constrain q̇(t) using liner constraint ?
is it ok to use below formula ? :
q̇(t) = drds * dsdt = ṙ(s) / duration,
duration * lb <= ṙ(s) <= duration * ub.
and corrspends implment will be
KinematicTrajectoryOptimization::AddPathVelocityConstraint(
const Eigen::Ref<const Eigen::VectorXd>& lb,
const Eigen::Ref<const Eigen::VectorXd>& ub, double s) {
const VectorX<symbolic::Expression> sym_rdot_value = sym_rdot_->value(s);
auto binding =
prog_.AddLinearConstraint(lb * duration_ <= sym_rdot_value && sym_rdot_value <= ub * duration_);
binding.evaluator()->set_description("path real velocity constraint");
return binding;
}
Upvotes: 1
Views: 31