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

compiling

parent 8b22178a
No related branches found
No related tags found
1 merge request!419Resolve "Processor motion model"
Pipeline #6720 failed
This commit is part of merge request !419. Comments created here will be created in the context of that merge request.
...@@ -62,7 +62,7 @@ inline bool FactorVelocityDirection3d::operator ()(const T* const _v, const T* c ...@@ -62,7 +62,7 @@ inline bool FactorVelocityDirection3d::operator ()(const T* const _v, const T* c
// << v_local(2) << "\n"; // << v_local(2) << "\n";
// error (angle between measurement and velocity in local coordinates) // error (angle between measurement and velocity in local coordinates)
double error = acos( v_local.dot(getMeasurement().cast<T>()) / (v_local.norm() * getMeasurement().cast<T>().norm())); T error = acos( v_local.dot(getMeasurement().cast<T>()) / (v_local.norm() * getMeasurement().cast<T>().norm()));
// residual // residual
_residuals[0] = getMeasurementSquareRootInformationUpper()(0,0) * error; _residuals[0] = getMeasurementSquareRootInformationUpper()(0,0) * error;
......
...@@ -17,14 +17,18 @@ WOLF_STRUCT_PTR_TYPEDEFS(ParamsProcessorConstantVelocity); ...@@ -17,14 +17,18 @@ WOLF_STRUCT_PTR_TYPEDEFS(ParamsProcessorConstantVelocity);
struct ParamsProcessorConstantVelocity : public ParamsProcessorBase struct ParamsProcessorConstantVelocity : public ParamsProcessorBase
{ {
Eigen::MatrixXd cov_v_rate;
ParamsProcessorConstantVelocity() = default; ParamsProcessorConstantVelocity() = default;
ParamsProcessorConstantVelocity(std::string _unique_name, const wolf::ParamsServer & _server) : ParamsProcessorConstantVelocity(std::string _unique_name, const wolf::ParamsServer & _server) :
ParamsProcessorBase(_unique_name, _server) ParamsProcessorBase(_unique_name, _server)
{ {
cov_v_rate = _server.getParam<Eigen::VectorXd> (prefix + _unique_name + "/cov_rate_diagonal").asDiagonal();
} }
std::string print() const override std::string print() const override
{ {
return ParamsProcessorBase::print(); return ParamsProcessorBase::print() + "\n"
+ "cov_v_rate: print not implemented\n";
} }
}; };
......
...@@ -17,14 +17,21 @@ WOLF_STRUCT_PTR_TYPEDEFS(ParamsProcessorFixWingModel); ...@@ -17,14 +17,21 @@ WOLF_STRUCT_PTR_TYPEDEFS(ParamsProcessorFixWingModel);
struct ParamsProcessorFixWingModel : public ParamsProcessorBase struct ParamsProcessorFixWingModel : public ParamsProcessorBase
{ {
Eigen::Vector3d velocity_local;
double angle_stdev;
ParamsProcessorFixWingModel() = default; ParamsProcessorFixWingModel() = default;
ParamsProcessorFixWingModel(std::string _unique_name, const wolf::ParamsServer & _server) : ParamsProcessorFixWingModel(std::string _unique_name, const wolf::ParamsServer & _server) :
ParamsProcessorBase(_unique_name, _server) ParamsProcessorBase(_unique_name, _server)
{ {
velocity_local = _server.getParam<Eigen::Vector3d> (prefix + _unique_name + "/velocity_local");
angle_stdev = _server.getParam<double> (prefix + _unique_name + "/angle_stdev");
} }
std::string print() const override std::string print() const override
{ {
return ParamsProcessorBase::print(); return ParamsProcessorBase::print() + "\n"
+ "velocity_local: print not implemented\n"
+ "angle_stdev: " + std::to_string(angle_stdev) + "\n";
} }
}; };
...@@ -33,7 +40,7 @@ WOLF_PTR_TYPEDEFS(ProcessorFixWingModel); ...@@ -33,7 +40,7 @@ WOLF_PTR_TYPEDEFS(ProcessorFixWingModel);
class ProcessorFixWingModel : public ProcessorBase class ProcessorFixWingModel : public ProcessorBase
{ {
public: public:
ProcessorFixWingModel(ParamsProcessorMotionModelPtr); ProcessorFixWingModel(ParamsProcessorFixWingModelPtr _params);
// Factory method for high level API // Factory method for high level API
WOLF_PROCESSOR_CREATE(ProcessorFixWingModel, ParamsProcessorFixWingModel); WOLF_PROCESSOR_CREATE(ProcessorFixWingModel, ParamsProcessorFixWingModel);
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include "core/processor/processor_constant_velocity.h" #include "core/processor/processor_constant_velocity.h"
#include "core/capture/capture_void.h" #include "core/capture/capture_base.h"
#include "core/feature/feature_base.h" #include "core/feature/feature_base.h"
#include "core/factor/factor_block_difference.h" #include "core/factor/factor_block_difference.h"
...@@ -19,7 +19,6 @@ ProcessorConstantVelocity::ProcessorConstantVelocity(ParamsProcessorConstantVelo ...@@ -19,7 +19,6 @@ ProcessorConstantVelocity::ProcessorConstantVelocity(ParamsProcessorConstantVelo
params_processor_(_params), params_processor_(_params),
last_keyframe_(nullptr) last_keyframe_(nullptr)
{ {
assert(params_processor_->cov_rate.rows() == getProblem()->getDim() && "covariance size is wrong");
} }
ProcessorConstantVelocity::~ProcessorConstantVelocity() ProcessorConstantVelocity::~ProcessorConstantVelocity()
...@@ -28,7 +27,8 @@ ProcessorConstantVelocity::~ProcessorConstantVelocity() ...@@ -28,7 +27,8 @@ ProcessorConstantVelocity::~ProcessorConstantVelocity()
void ProcessorConstantVelocity::configure(SensorBasePtr _sensor) void ProcessorConstantVelocity::configure(SensorBasePtr _sensor)
{ {
assert(getProblem()->getFrameStructure().find('V') != std::string::npos) && "Processor only works with problems with V"); assert(params_processor_->cov_v_rate.rows() == getProblem()->getDim() && "cov_v_rate size is wrong");
assert(getProblem()->getFrameStructure().find('V') != std::string::npos && "Processor only works with problems with V");
} }
void ProcessorConstantVelocity::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance) void ProcessorConstantVelocity::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance)
...@@ -40,9 +40,8 @@ void ProcessorConstantVelocity::processKeyFrame(FrameBasePtr _keyframe_ptr, cons ...@@ -40,9 +40,8 @@ void ProcessorConstantVelocity::processKeyFrame(FrameBasePtr _keyframe_ptr, cons
_keyframe_ptr->getTimeStamp() > last_keyframe_->getTimeStamp()) _keyframe_ptr->getTimeStamp() > last_keyframe_->getTimeStamp())
{ {
// emplace capture // emplace capture
auto cap = CaptureBase::emplace<CapureVoid>(_keyframe_ptr, auto cap = CaptureBase::emplace<CaptureBase>(_keyframe_ptr, "CaptureBase",
_keyframe_ptr->getTimeStamp(), _keyframe_ptr->getTimeStamp(), getSensor());
getSensor());
double dt = _keyframe_ptr->getTimeStamp() - last_keyframe_->getTimeStamp(); double dt = _keyframe_ptr->getTimeStamp() - last_keyframe_->getTimeStamp();
......
...@@ -7,14 +7,16 @@ ...@@ -7,14 +7,16 @@
#include "core/processor/processor_fix_wing_model.h" #include "core/processor/processor_fix_wing_model.h"
#include "core/capture/capture_void.h" #include "core/capture/capture_base.h"
#include "core/feature/feature_base.h" #include "core/feature/feature_base.h"
#include "core/factor/factor_velocity_direction_3d.h"
namespace wolf namespace wolf
{ {
ProcessorFixWingModel::ProcessorFixWingModel(ParamsProcessorMotionModelPtr _params) : ProcessorFixWingModel::ProcessorFixWingModel(ParamsProcessorFixWingModelPtr _params) :
params_motion_model_(_params) ProcessorBase("ProcessorFixWingModel", 3, _params),
params_processor_(_params)
{ {
} }
...@@ -25,15 +27,19 @@ ProcessorFixWingModel::~ProcessorFixWingModel() ...@@ -25,15 +27,19 @@ ProcessorFixWingModel::~ProcessorFixWingModel()
void ProcessorFixWingModel::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance) void ProcessorFixWingModel::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance)
{ {
// emplace capture // emplace capture
auto cap = CaptureBase::emplace<CapureVoid>(_keyframe_ptr, _keyframe_ptr->getTimeStamp(), getSensor()); auto cap = CaptureBase::emplace<CaptureBase>(_keyframe_ptr, "CaptureBase",
_keyframe_ptr->getTimeStamp(), getSensor());
// emplace feature // emplace feature
auto fea = FeatureBase::emplace<FeatureBase>(cap, "FeatureBase", auto fea = FeatureBase::emplace<FeatureBase>(cap, "FeatureBase",
measurement, params_processor_->velocity_local,
cov); Eigen::Matrix1d(params_processor_->angle_stdev * params_processor_->angle_stdev));
// emplace factor // emplace factor
auto fac = auto fac = FactorBase::emplace<FactorVelocityDirection3d>(fea,
fea,
shared_from_this(),
false);
} }
} /* namespace wolf */ } /* namespace wolf */
......
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