put sensor_T_body in SmartProjectionFactor
parent
756d1d29b7
commit
100016e3af
|
|
@ -74,6 +74,10 @@ protected:
|
|||
const bool verboseCheirality_; ///< If true, prints text for Cheirality exceptions (default: false)
|
||||
/// @}
|
||||
|
||||
/// @name Pose of the camera in the body frame
|
||||
const boost::optional<Pose3> body_P_sensor_; ///< Pose of the camera in the body frame
|
||||
/// @}
|
||||
|
||||
public:
|
||||
|
||||
/// shorthand for a smart pointer to a factor
|
||||
|
|
@ -94,14 +98,16 @@ public:
|
|||
double rankTolerance = 1, DegeneracyMode degeneracyMode =
|
||||
IGNORE_DEGENERACY, bool enableEPI = false,
|
||||
double landmarkDistanceThreshold = 1e10,
|
||||
double dynamicOutlierRejectionThreshold = -1) :
|
||||
double dynamicOutlierRejectionThreshold = -1,
|
||||
boost::optional<Pose3> body_P_sensor = boost::none) :
|
||||
linearizationMode_(linearizationMode), //
|
||||
degeneracyMode_(degeneracyMode), //
|
||||
parameters_(rankTolerance, enableEPI, landmarkDistanceThreshold,
|
||||
dynamicOutlierRejectionThreshold), //
|
||||
result_(TriangulationResult::Degenerate()), //
|
||||
retriangulationThreshold_(1e-5), //
|
||||
throwCheirality_(false), verboseCheirality_(false) {
|
||||
throwCheirality_(false), verboseCheirality_(false),
|
||||
body_P_sensor_(body_P_sensor){
|
||||
}
|
||||
|
||||
/** Virtual destructor */
|
||||
|
|
@ -119,6 +125,8 @@ public:
|
|||
std::cout << "linearizationMode:\n" << linearizationMode_ << std::endl;
|
||||
std::cout << "triangulationParameters:\n" << parameters_ << std::endl;
|
||||
std::cout << "result:\n" << result_ << std::endl;
|
||||
if(body_P_sensor_)
|
||||
body_P_sensor_->print("body_P_sensor_:\n");
|
||||
Base::print("", keyFormatter);
|
||||
}
|
||||
|
||||
|
|
@ -468,6 +476,13 @@ public:
|
|||
return throwCheirality_;
|
||||
}
|
||||
|
||||
Pose3 body_P_sensor() const{
|
||||
if(body_P_sensor_)
|
||||
return *body_P_sensor_;
|
||||
else
|
||||
return Pose3(); // if unspecified, the transformation is the identity
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
/// Serialization function
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ private:
|
|||
protected:
|
||||
|
||||
boost::shared_ptr<CALIBRATION> K_; ///< calibration object (one for all cameras)
|
||||
boost::optional<Pose3> body_P_sensor_; ///< Pose of the camera in the body frame
|
||||
|
||||
public:
|
||||
|
||||
|
|
@ -71,7 +70,7 @@ public:
|
|||
LinearizationMode linearizeTo = HESSIAN, double landmarkDistanceThreshold = 1e10,
|
||||
double dynamicOutlierRejectionThreshold = -1) :
|
||||
Base(linearizeTo, rankTol, manageDegeneracy, enableEPI, landmarkDistanceThreshold,
|
||||
dynamicOutlierRejectionThreshold), K_(K), body_P_sensor_(body_P_sensor) {}
|
||||
dynamicOutlierRejectionThreshold, body_P_sensor), K_(K) {}
|
||||
|
||||
/** Virtual destructor */
|
||||
virtual ~SmartProjectionPoseFactor() {}
|
||||
|
|
@ -84,8 +83,6 @@ public:
|
|||
void print(const std::string& s = "", const KeyFormatter& keyFormatter =
|
||||
DefaultKeyFormatter) const {
|
||||
std::cout << s << "SmartProjectionPoseFactor, z = \n ";
|
||||
if(body_P_sensor_)
|
||||
body_P_sensor_->print("body_P_sensor_:\n");
|
||||
Base::print("", keyFormatter);
|
||||
}
|
||||
|
||||
|
|
@ -129,13 +126,6 @@ public:
|
|||
return K_;
|
||||
}
|
||||
|
||||
Pose3 body_P_sensor() const{
|
||||
if(body_P_sensor_)
|
||||
return *body_P_sensor_;
|
||||
else
|
||||
return Pose3(); // if unspecified, the transformation is the identity
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect all cameras involved in this factor
|
||||
* @param values Values structure which must contain camera poses corresponding
|
||||
|
|
@ -146,8 +136,8 @@ public:
|
|||
typename Base::Cameras cameras;
|
||||
BOOST_FOREACH(const Key& k, this->keys_) {
|
||||
Pose3 pose = values.at<Pose3>(k);
|
||||
if(body_P_sensor_)
|
||||
pose = pose.compose(*(body_P_sensor_));
|
||||
if(Base::body_P_sensor_)
|
||||
pose = pose.compose(*(Base::body_P_sensor_));
|
||||
|
||||
Camera camera(pose, K_);
|
||||
cameras.push_back(camera);
|
||||
|
|
|
|||
Loading…
Reference in New Issue