38 Base(model, key), p_(
Rot3::Logmap(P)), z_(
Rot3::Logmap(Z)) {
42 gtsam::NonlinearFactor::shared_ptr
clone()
const override {
44 gtsam::NonlinearFactor::shared_ptr(
new This(*
this))); }
47 void print(
const std::string& s =
"",
48 const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override {
50 std::cout <<
"RotateFactor:]\n";
51 std::cout <<
"p: " << p_.transpose() << std::endl;
52 std::cout <<
"z: " << z_.transpose() << std::endl;
60 return (Vector(3) << q.x()-p_.x(), q.y()-p_.y(), q.z()-p_.z()).finished();
84 Base(model, key), i_p_(i_p), c_z_(c_z) {
89 gtsam::Quaternion iRc;
96 gtsam::NonlinearFactor::shared_ptr
clone()
const override {
98 gtsam::NonlinearFactor::shared_ptr(
new This(*
this))); }
101 void print(
const std::string& s =
"",
102 const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override {
104 std::cout <<
"RotateDirectionsFactor:" << std::endl;
111 Unit3 i_q = iRc * c_z_;
Definition: NonlinearFactor.h:431
double error(const Values &c) const override
Definition: RotateFactor.h:23
RotateDirectionsFactor(Key key, const Unit3 &i_p, const Unit3 &c_z, const SharedNoiseModel &model)
Constructor.
Definition: RotateFactor.h:82
virtual Vector evaluateError(const ValueTypes &... x, OptionalMatrixTypeT< ValueTypes >... H) const=0
Vector3 unitVector(OptionalJacobian< 3, 2 > H={}) const
Return unit-norm Vector.
Key key() const
Definition: NonlinearFactor.h:582
Definition: NonlinearFactor.h:68
void print(const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override
print
Definition: RotateFactor.h:101
gtsam::NonlinearFactor::shared_ptr clone() const override
Definition: RotateFactor.h:42
gtsam::NonlinearFactor::shared_ptr clone() const override
Definition: RotateFactor.h:96
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
Definition: Rot3.h:58
RotateFactor(Key key, const Rot3 &P, const Rot3 &Z, const SharedNoiseModel &model)
Constructor.
Definition: RotateFactor.h:36
Represents a 3D point on a unit sphere.
Definition: Unit3.h:42
void print(const std::string &s=std::string()) const
The print fuction.
Matrix * OptionalMatrixType
Definition: NonlinearFactor.h:55
void print(const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override
print
Definition: RotateFactor.h:47
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
Definition: chartTesting.h:28
Vector evaluateError(const Rot3 &R, OptionalMatrixType H) const override
vector of errors returns 2D vector
Definition: RotateFactor.h:56
void print(const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override
Non-linear factor base classes.
#define GTSAM_MAKE_ALIGNED_OPERATOR_NEW
Definition: types.h:284
Vector3 Point3
Definition: Point3.h:38
Vector2 error(const Unit3 &q, OptionalJacobian< 2, 2 > H_q={}) const
Vector evaluateError(const Rot3 &iRc, OptionalMatrixType H) const override
vector of errors returns 2D vector
Definition: RotateFactor.h:110
Point3 rotate(const Point3 &p, OptionalJacobian< 3, 3 > H1={}, OptionalJacobian< 3, 3 > H2={}) const
Definition: RotateFactor.h:69
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
static Rot3 Initialize(const Unit3 &i_p, const Unit3 &c_z)
Initialize rotation iRc such that i_p = iRc * c_z.
Definition: RotateFactor.h:88
noiseModel::Base::shared_ptr SharedNoiseModel
Definition: NoiseModel.h:741
3D rotation represented as a rotation matrix or quaternion