27 #include <gtsam/dllexport.h> 68 Pose2(
double x,
double y,
double theta) :
69 r_(
Rot2::fromAngle(theta)), t_(x, y) {
74 r_(
Rot2::fromAngle(theta)), t_(t) {
82 r_(
Rot2::atan2(T(1, 0), T(0, 0))), t_(T(0, 2), T(1, 2)) {
83 assert(T.rows() == 3 && T.cols() == 3);
100 void print(
const std::string& s =
"")
const;
103 bool equals(
const Pose2& pose,
double tol = 1e-9)
const;
113 Pose2 inverse()
const;
117 return Pose2(r_*p2.
r(), t_ + r_*p2.
t());
134 Matrix3 AdjointMap()
const;
135 inline Vector3 Adjoint(
const Vector3& xi)
const {
136 return AdjointMap()*xi;
142 static Matrix3 adjointMap(
const Vector3& v);
151 static inline Matrix3
wedge(
double vx,
double vy,
double w) {
160 static Matrix3 ExpmapDerivative(
const Vector3& v);
163 static Matrix3 LogmapDerivative(
const Pose2& v);
195 inline double x()
const {
return t_.
x(); }
198 inline double y()
const {
return t_.
y(); }
207 inline const Rot2&
r()
const {
return r_; }
216 Matrix3 matrix()
const;
239 double range(
const Point2& point,
248 double range(
const Pose2& point,
275 friend class boost::serialization::access;
276 template<
class Archive>
277 void serialize(Archive & ar,
const unsigned int ) {
278 ar & BOOST_SERIALIZATION_NVP(t_);
279 ar & BOOST_SERIALIZATION_NVP(r_);
294 GTSAM_EXPORT boost::optional<Pose2> align(
const std::vector<Point2Pair>& pairs);
303 template <
typename T>
306 template <
typename T>
Rot2 Rotation
Pose Concept requirements.
Definition: Pose2.h:41
Pose2(const Rot2 &r, const Point2 &t)
construct from r,t
Definition: Pose2.h:78
Pose2()
default constructor = origin
Definition: Pose2.h:55
Base class and basic functions for Lie types.
Definition: BearingRange.h:38
const Point2 & translation() const
translation
Definition: Pose2.h:210
static std::pair< size_t, size_t > rotationInterval()
Return the start and end indices (inclusive) of the rotation component of the exponential map paramet...
Definition: Pose2.h:268
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:140
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition: OptionalJacobian.h:39
Pose2(const Vector &v)
Construct from canonical coordinates (Lie algebra)
Definition: Pose2.h:91
Definition: BearingRange.h:32
double y() const
get y
Definition: Point2.h:106
std::pair< Point2, Point2 > Point2Pair
Calculate pose between a vector of 2D point correspondences (p,q) where q = Pose2::transform_from(p) ...
Definition: Point2.h:163
A CRTP helper class that implements Lie group methods Prerequisites: methods operator*, inverse, and AdjointMap, as well as a ChartAtOrigin struct that will be used to define the manifold Chart To use, simply derive, but also say "using LieGroup<Class,N>::inverse" For derivative math, see doc/math.pdf.
Definition: Lie.h:36
double theta() const
get theta
Definition: Pose2.h:201
Template to create a binary predicate.
Definition: Testable.h:110
double x() const
get x
Definition: Pose2.h:195
Pose2(double theta, const Point2 &t)
construct from rotation and translation
Definition: Pose2.h:73
double y() const
get y
Definition: Pose2.h:198
const Rot2 & rotation() const
rotation
Definition: Pose2.h:213
Pose2 operator*(const Pose2 &p2) const
compose syntactic sugar
Definition: Pose2.h:116
Pose2(const Matrix &T)
Constructor from 3*3 matrix.
Definition: Pose2.h:81
const Rot2 & r() const
rotation
Definition: Pose2.h:207
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Pose2(double x, double y, double theta)
construct from (x,y,theta)
Definition: Pose2.h:68
const Point2 & t() const
translation
Definition: Pose2.h:204
Matrix wedge< Pose2 >(const Vector &xi)
specialization for pose2 wedge function (generic template in Lie.h)
Definition: Pose2.h:285
Point2 operator*(const Point2 &point) const
syntactic sugar for transform_from
Definition: Pose2.h:188
double theta() const
return angle (RADIANS)
Definition: Rot2.h:173
Definition: BearingRange.h:123
Pose2(const Pose2 &pose)
copy constructor
Definition: Pose2.h:60
Definition: BearingRange.h:109
static Matrix3 wedge(double vx, double vy, double w)
wedge for SE(2):
Definition: Pose2.h:151
static Pose2 identity()
identity for group operation
Definition: Pose2.h:110
static std::pair< size_t, size_t > translationInterval()
Return the start and end indices (inclusive) of the translation component of the exponential map para...
Definition: Pose2.h:261
double x() const
get x
Definition: Point2.h:103
Both LieGroupTraits and Testable.
Definition: Lie.h:237
Global functions in a separate testing namespace.
Definition: chartTesting.h:28