26class GTSAM_EXPORT StereoCheiralityException:
public std::runtime_error {
28 StereoCheiralityException()
29 : StereoCheiralityException(std::numeric_limits<Key>::max()) {}
31 StereoCheiralityException(
Key j)
32 : std::runtime_error(
"Stereo Cheirality Exception"),
35 Key nearbyVariable()
const {
56 using MeasurementVector = StereoPoint2Vector;
60 Cal3_S2Stereo::shared_ptr K_;
64 inline constexpr static auto dimension = 6;
87 void print(
const std::string& s =
"")
const {
88 leftCamPose_.print(s +
".camera.");
89 K_->print(s +
".calibration.");
94 return leftCamPose_.equals(camera.leftCamPose_, tol)
95 && K_->equals(*camera.K_, tol);
103 inline size_t dim()
const {
108 static inline size_t Dim() {
119 return leftCamPose_.localCoordinates(t2.leftCamPose_);
133 return K_->baseline();
144 {}, OptionalJacobian<3, 3> H2 = {})
const;
147 Point3 backproject(
const StereoPoint2& z)
const;
153 Point3 backproject2(
const StereoPoint2& z,
154 OptionalJacobian<3, 6> H1 = {},
155 OptionalJacobian<3, 3> H2 = {})
const;
167 StereoPoint2
project(
const Point3& point, OptionalJacobian<3, 6> H1,
168 OptionalJacobian<3, 3> H2 = {}, OptionalJacobian<3, 0> H3 =
173 return Eigen::Matrix<double,traits<Measurement>::dimension,1>::Constant(2.0 * K_->fx());
180#if GTSAM_ENABLE_BOOST_SERIALIZATION
181 friend class boost::serialization::access;
182 template<
class Archive>
183 void serialize(Archive & ar,
const unsigned int ) {
184 ar & BOOST_SERIALIZATION_NVP(leftCamPose_);
185 ar & BOOST_SERIALIZATION_NVP(K_);
The most common 5DOF 3D->2D calibration + Stereo baseline.
A 2D stereo point (uL,uR,v).
3D Pose manifold SO(3) x R^3 and group SE(3)
Global functions in a separate testing namespace.
Definition chartTesting.h:28
Vector3 Point3
As of GTSAM 4, in order to make GTSAM more lean, it is now possible to just typedef Point3 to Vector3...
Definition Point3.h:38
Point2_ project(const Point3_ &p_cam)
Expression version of PinholeBase::Project.
Definition expressions.h:134
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
Both ManifoldTraits and Testable.
Definition Manifold.h:156
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition OptionalJacobian.h:40
The most common 5DOF 3D->2D calibration, stereo version.
Definition Cal3_S2Stereo.h:30
A 3D pose (R,t) : (Rot3,Point3).
Definition Pose3.h:42
A stereo camera class, parameterize by left camera pose and stereo calibration.
Definition StereoCamera.h:47
StereoCamera()
Default constructor allocates a calibration!
Definition StereoCamera.h:70
static size_t Dim()
Dimensionality of the tangent space.
Definition StereoCamera.h:108
void print(const std::string &s="") const
print
Definition StereoCamera.h:87
Vector6 localCoordinates(const StereoCamera &t2) const
Local coordinates of manifold neighborhood around current value.
Definition StereoCamera.h:118
bool equals(const StereoCamera &camera, double tol=1e-9) const
equals
Definition StereoCamera.h:93
size_t dim() const
Dimensionality of the tangent space.
Definition StereoCamera.h:103
StereoCamera retract(const Vector &v) const
Updates a with tangent space delta.
Definition StereoCamera.h:113
const Cal3_S2Stereo & calibration() const
Return shared pointer to calibration.
Definition StereoCamera.h:78
StereoPoint2 Measurement
Some classes template on either PinholeCamera or StereoCamera, and this typedef informs those classes...
Definition StereoCamera.h:55
double baseline() const
baseline
Definition StereoCamera.h:132
const Pose3 & pose() const
pose
Definition StereoCamera.h:127
Vector defaultErrorWhenTriangulatingBehindCamera() const
for Nonlinear Triangulation
Definition StereoCamera.h:172
A 2D stereo point, v will be same for rectified images.
Definition StereoPoint2.h:34