use passed in calibration for initialization and add EmptyCal serialization

release/4.3a0
Varun Agrawal 2021-12-20 21:19:26 -05:00
parent 5e3db76500
commit 8ddfd8135b
1 changed files with 22 additions and 6 deletions

View File

@ -43,9 +43,22 @@ class GTSAM_EXPORT EmptyCal {
EmptyCal() {} EmptyCal() {}
virtual ~EmptyCal() = default; virtual ~EmptyCal() = default;
using shared_ptr = boost::shared_ptr<EmptyCal>; using shared_ptr = boost::shared_ptr<EmptyCal>;
/// return DOF, dimensionality of tangent space
inline static size_t Dim() { return dimension; }
void print(const std::string& s) const { void print(const std::string& s) const {
std::cout << "empty calibration: " << s << std::endl; std::cout << "empty calibration: " << s << std::endl;
} }
private:
/// Serialization function
friend class boost::serialization::access;
template <class Archive>
void serialize(Archive& ar, const unsigned int /*version*/) {
ar& boost::serialization::make_nvp(
"EmptyCal", boost::serialization::base_object<EmptyCal>(*this));
}
}; };
/** /**
@ -58,9 +71,9 @@ class GTSAM_EXPORT SphericalCamera {
public: public:
enum { dimension = 6 }; enum { dimension = 6 };
typedef Unit3 Measurement; using Measurement = Unit3;
typedef std::vector<Unit3> MeasurementVector; using MeasurementVector = std::vector<Unit3>;
typedef EmptyCal CalibrationType; using CalibrationType = EmptyCal;
private: private:
Pose3 pose_; ///< 3D pose of camera Pose3 pose_; ///< 3D pose of camera
@ -83,8 +96,8 @@ class GTSAM_EXPORT SphericalCamera {
/// Constructor with empty intrinsics (needed for smart factors) /// Constructor with empty intrinsics (needed for smart factors)
explicit SphericalCamera(const Pose3& pose, explicit SphericalCamera(const Pose3& pose,
const boost::shared_ptr<EmptyCal>& cal) const EmptyCal::shared_ptr& cal)
: pose_(pose), emptyCal_(boost::make_shared<EmptyCal>()) {} : pose_(pose), emptyCal_(cal) {}
/// @} /// @}
/// @name Advanced Constructors /// @name Advanced Constructors
@ -95,7 +108,7 @@ class GTSAM_EXPORT SphericalCamera {
virtual ~SphericalCamera() = default; virtual ~SphericalCamera() = default;
/// return shared pointer to calibration /// return shared pointer to calibration
const boost::shared_ptr<EmptyCal>& sharedCalibration() const { const EmptyCal::shared_ptr& sharedCalibration() const {
return emptyCal_; return emptyCal_;
} }
@ -213,6 +226,9 @@ class GTSAM_EXPORT SphericalCamera {
void serialize(Archive& ar, const unsigned int /*version*/) { void serialize(Archive& ar, const unsigned int /*version*/) {
ar& BOOST_SERIALIZATION_NVP(pose_); ar& BOOST_SERIALIZATION_NVP(pose_);
} }
public:
GTSAM_MAKE_ALIGNED_OPERATOR_NEW
}; };
// end of class SphericalCamera // end of class SphericalCamera