5#include <sleipnir/autodiff/variable.hpp>
6#include <sleipnir/optimization/problem.hpp>
8#include "trajopt/geometry/pose2.hpp"
9#include "trajopt/geometry/translation2.hpp"
10#include "trajopt/util/symbol_exports.hpp"
31 [[maybe_unused]] slp::Problem<double>& problem,
32 [[maybe_unused]]
const Pose2v<double>& pose,
33 const Translation2v<double>& linear_velocity,
34 [[maybe_unused]]
const slp::Variable<double>& angular_velocity,
35 [[maybe_unused]]
const Translation2v<double>& linear_acceleration,
36 [[maybe_unused]]
const slp::Variable<double>& angular_acceleration) {
42 auto dot = linear_velocity.
dot(Translation2d{m_angle.cos(), m_angle.sin()});
43 problem.subject_to(dot * dot == linear_velocity.
squared_norm());
47 trajopt::Rotation2d m_angle;
LinearVelocityDirectionConstraint(double angle)
Definition linear_velocity_direction_constraint.hpp:20
void apply(slp::Problem< double > &problem, const Pose2v< double > &pose, const Translation2v< double > &linear_velocity, const slp::Variable< double > &angular_velocity, const Translation2v< double > &linear_acceleration, const slp::Variable< double > &angular_acceleration)
Definition linear_velocity_direction_constraint.hpp:30
constexpr auto dot(const Translation2< U > &other) const
Definition translation2.hpp:133
constexpr auto squared_norm() const
Definition translation2.hpp:158