22 #include <gtsam/base/ThreadsafeException.h> 23 #include <gtsam/base/concepts.h> 24 #include <gtsam/dllexport.h> 27 #include <gtsam/geometry/Unit3.h> 29 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 30 #include <boost/serialization/nvp.hpp> 44 enum { dimension = 0 };
47 using shared_ptr = std::shared_ptr<EmptyCal>;
50 inline static size_t Dim() {
return dimension; }
52 void print(
const std::string& s)
const {
53 std::cout <<
"empty calibration: " << s << std::endl;
57 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 58 friend class boost::serialization::access; 60 template <
class Archive>
61 void serialize(Archive& ar,
const unsigned int ) {
62 ar& boost::serialization::make_nvp(
63 "EmptyCal", boost::serialization::base_object<EmptyCal>(*
this));
76 enum { dimension = 6 };
79 using MeasurementVector = std::vector<Unit3>;
86 EmptyCal::shared_ptr emptyCal_;
102 const EmptyCal::shared_ptr& cal)
103 : pose_(pose), emptyCal_(cal) {}
129 virtual void print(
const std::string& s =
"SphericalCamera")
const;
152 std::pair<Unit3, bool> projectSafe(
const Point3& pw)
const;
171 Point3 backproject(
const Unit3& p,
const double depth)
const;
174 Unit3 backprojectPointAtInfinity(
const Unit3& p)
const;
188 Vector2 reprojectionError(
const Point3& point,
const Unit3& measured,
200 return pose().localCoordinates(p.
pose());
216 return Eigen::Matrix<double, traits<Point2>::dimension, 1>::Constant(0.0);
220 size_t dim()
const {
return 6; }
223 static size_t Dim() {
return 6; }
226 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 228 friend class boost::serialization::access;
229 template <
class Archive>
230 void serialize(Archive& ar,
const unsigned int ) {
231 ar& BOOST_SERIALIZATION_NVP(pose_);
Point2_ project(const Point3_ &p_cam)
Expression version of PinholeBase::Project.
Definition: expressions.h:131
static SphericalCamera Identity()
for Canonical
Definition: SphericalCamera.h:204
SphericalCamera(const Pose3 &pose)
Constructor with pose.
Definition: SphericalCamera.h:97
Definition: SphericalCamera.h:74
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
Vector6 localCoordinates(const SphericalCamera &p) const
return canonical coordinate
Definition: SphericalCamera.h:199
static Pose3 Identity()
identity for group operation
Definition: Pose3.h:106
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
Definition: Rot3.h:58
Definition: SphericalCamera.h:42
const EmptyCal::shared_ptr & sharedCalibration() const
return shared pointer to calibration
Definition: SphericalCamera.h:114
Represents a 3D point on a unit sphere.
Definition: Unit3.h:42
const Rot3 & rotation() const
get rotation
Definition: SphericalCamera.h:139
Definition: Testable.h:112
SphericalCamera(const Pose3 &pose, const EmptyCal::shared_ptr &cal)
Constructor with empty intrinsics (needed for smart factors)
Definition: SphericalCamera.h:101
gtsam::enable_if_t< needs_eigen_aligned_allocator< T >::value, std::shared_ptr< T > > make_shared(Args &&... args)
Definition: make_shared.h:56
static Pose3 Expmap(const Vector6 &xi, OptionalJacobian< 6, 6 > Hxi={})
Exponential map at identity - create a rotation from canonical coordinates .
SphericalCamera()
Default constructor.
Definition: SphericalCamera.h:93
Base class and basic functions for Manifold types.
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
const Pose3 & pose() const
return pose, constant version
Definition: SphericalCamera.h:136
Matrix34 cameraProjectionMatrix() const
for Linear Triangulation
Definition: SphericalCamera.h:210
Pose3 inverse() const
inverse transformation with derivatives
Definition: chartTesting.h:28
const EmptyCal & calibration() const
return calibration
Definition: SphericalCamera.h:119
Definition: OptionalJacobian.h:38
Both LieGroupTraits and Testable.
Definition: Lie.h:229
const Point3 & translation(OptionalJacobian< 3, 6 > Hself={}) const
get translation
static size_t Dim()
Definition: SphericalCamera.h:223
static size_t Dim()
return DOF, dimensionality of tangent space
Definition: SphericalCamera.h:50
const Rot3 & rotation(OptionalJacobian< 3, 6 > Hself={}) const
get rotation
#define GTSAM_MAKE_ALIGNED_OPERATOR_NEW
Definition: types.h:284
Vector3 Point3
Definition: Point3.h:38
Vector defaultErrorWhenTriangulatingBehindCamera() const
for Nonlinear Triangulation
Definition: SphericalCamera.h:215
size_t dim() const
Definition: SphericalCamera.h:220
SphericalCamera retract(const Vector6 &d) const
move a cameras according to d
Definition: SphericalCamera.h:194
const Point3 & translation() const
get translation
Definition: SphericalCamera.h:142