8#include <sleipnir/autodiff/variable.hpp>
9#include <sleipnir/util/concepts.hpp>
11#include "trajopt/geometry/rotation2.hpp"
12#include "trajopt/geometry/translation2.hpp"
39 m_rotation{std::move(rotation)} {}
56 constexpr const T&
x()
const {
return m_translation.x(); }
61 constexpr const T&
y()
const {
return m_translation.y(); }
81using Pose2d = Pose2<double>;
83template <
typename Scalar>
84using Pose2v = Pose2<slp::Variable<Scalar>>;
86template <
typename LHS,
typename RHS>
87 requires slp::SleipnirType<LHS> && (!slp::SleipnirType<RHS>)
88auto operator==(
const Pose2<LHS>& lhs,
const Pose2<RHS>& rhs) {
89 using Scalar =
typename std::decay_t<LHS>::Scalar;
91 return slp::EqualityConstraints<Scalar>{
92 {lhs.translation() == rhs.translation(),
93 lhs.rotation() == rhs.rotation()}};
96template <
typename LHS,
typename RHS>
97 requires(!slp::SleipnirType<LHS>) && slp::SleipnirType<RHS>
98auto operator==(
const Pose2<LHS>& lhs,
const Pose2<RHS>& rhs) {
99 using Scalar =
typename std::decay_t<RHS>::Scalar;
101 return slp::EqualityConstraints<Scalar>{
102 {lhs.translation() == rhs.translation(),
103 lhs.rotation() == rhs.rotation()}};
106template <
typename LHS,
typename RHS>
107 requires slp::SleipnirType<LHS> && slp::SleipnirType<RHS>
108auto operator==(
const Pose2<LHS>& lhs,
const Pose2<RHS>& rhs) {
109 using Scalar =
typename std::decay_t<LHS>::Scalar;
111 return slp::EqualityConstraints<Scalar>{
112 {lhs.translation() == rhs.translation(),
113 lhs.rotation() == rhs.rotation()}};
constexpr const Rotation2< double > & rotation() const
Definition pose2.hpp:66
constexpr const double & x() const
Definition pose2.hpp:56
constexpr Pose2< T > rotate_by(const Rotation2< T > &rotation) const
Definition pose2.hpp:72
constexpr Pose2(T x, T y, Rotation2< T > rotation)
Definition pose2.hpp:37
constexpr const double & y() const
Definition pose2.hpp:61
constexpr const Translation2< double > & translation() const
Definition pose2.hpp:51
constexpr Pose2(Translation2< T > translation, Rotation2< T > rotation)
Definition pose2.hpp:27
constexpr Pose2()=default
Constructs a pose at the origin facing toward the positive x-axis.
constexpr Pose2(const Pose2< U > &other)
Definition pose2.hpp:45
Definition rotation2.hpp:20
Represents a translation in 2D space.
Definition translation2.hpp:21