Skip to content
Snippets Groups Projects
Commit 8107c98b authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

WIP

parent 7c05241f
No related branches found
No related tags found
1 merge request!400Draft: Resolve "Calibration drift factor creation in processorMotion"
Pipeline #8615 failed
...@@ -64,9 +64,6 @@ SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXd& _ex ...@@ -64,9 +64,6 @@ SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXd& _ex
return sensor; \ return sensor; \
} \ } \
/** \brief base struct for intrinsic sensor parameters /** \brief base struct for intrinsic sensor parameters
* *
* Derive from this struct to create structs of sensor intrinsic parameters. * Derive from this struct to create structs of sensor intrinsic parameters.
...@@ -74,11 +71,30 @@ SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXd& _ex ...@@ -74,11 +71,30 @@ SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXd& _ex
struct ParamsSensorBase: public ParamsBase struct ParamsSensorBase: public ParamsBase
{ {
std::string prefix = "sensor/"; std::string prefix = "sensor/";
// Intrinsic dynamic and drift
bool intrinsic_dynamic;
bool intrinsic_drift;
Eigen::MatrixXd intrinsic_drift_cov;
ParamsSensorBase(std::string _unique_name, const wolf::ParamsServer& _server)
: ParamsBase(_unique_name, _server)
{
// Intrinsics dynamic
intrinsic_dynamic = _server.getParam<bool>(prefix + _unique_name + "/intrinsic_dynamic");
intrinsic_drift = _server.getParam<bool>(prefix + _unique_name + "/intrinsic_drift");
if (intrinsic_drift)
intrinsic_drift_cov = _server.getParam<Eigen::VectorXd>(prefix + _unique_name + "/intrinsic_drift_sigma").square().asDiagonal();
}
~ParamsSensorBase() override = default; ~ParamsSensorBase() override = default;
using ParamsBase::ParamsBase;
std::string print() const std::string print() const
{ {
return ""; return "\n" + ParamsBase::print() + "\n"
+ "intrinsic_dynamic: " + std::to_string(intrinsic_dynamic) + "\n"
+ "intrinsic_drift: " + std::to_string(intrinsic_drift) + "\n"
+ (intrinsic_drift ? "intrinsic_drift_cov: " + std::to_string(intrinsic_drift_cov) : "");
} }
}; };
...@@ -195,6 +211,11 @@ class SensorBase : public NodeBase, public HasStateBlocks, public std::enable_sh ...@@ -195,6 +211,11 @@ class SensorBase : public NodeBase, public HasStateBlocks, public std::enable_sh
StateBlockPtr getO() const; StateBlockPtr getO() const;
StateBlockPtr getIntrinsic() const; StateBlockPtr getIntrinsic() const;
virtual const MatrixXd& getIntrinsicDriftCov() const final
{
return params_->intrinsic_drift_cov;
}
protected: protected:
void removeStateBlocks(); void removeStateBlocks();
virtual void registerNewStateBlocks() const; virtual void registerNewStateBlocks() const;
......
...@@ -962,7 +962,8 @@ PackKeyFramePtr ProcessorMotion::computeProcessingStep() ...@@ -962,7 +962,8 @@ PackKeyFramePtr ProcessorMotion::computeProcessingStep()
return nullptr; return nullptr;
} }
void ProcessorMotion::emplaceCalibrationDriftFactor(CaptureMotionPtr _cap_motion){ void ProcessorMotion::emplaceCalibrationDriftFactor(CaptureMotionPtr _cap_motion)
{
MatrixXd cov_continuous = getSensor()->getCalibrationDriftCov(); MatrixXd cov_continuous = getSensor()->getCalibrationDriftCov();
if (cov_continuous.size() == 0){ if (cov_continuous.size() == 0){
WOLF_TRACE("SensorBase calib_drift_cov_ not initialized") WOLF_TRACE("SensorBase calib_drift_cov_ not initialized")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment