diff --git a/src/examples/test_processor_odom_3D.cpp b/src/examples/test_processor_odom_3D.cpp index e01e30d75289eed205bbdefc2195f78c8c042e9f..6cb5e458dd92f40abfb37d26aa601c0242c8f510 100644 --- a/src/examples/test_processor_odom_3D.cpp +++ b/src/examples/test_processor_odom_3D.cpp @@ -53,15 +53,19 @@ int main (int argc, char** argv) CeresManager ceres_manager(problem, ceres_options); SensorBasePtr sen = problem->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D.yaml"); - problem->installProcessor("ODOM 3D", "odometry integrator", "odom"); - problem->getProcessorMotionPtr()->setOrigin((Vector7s()<<0,0,0,0,0,0,1).finished(), TimeStamp(0)); + ProcessorParamsOdom3DPtr proc_params = std::make_shared<ProcessorParamsOdom3D>(); + problem->installProcessor("ODOM 3D", "odometry integrator", sen, proc_params); + // Time and prior + Scalar dt = 0.1; + + problem->setPrior((Vector7s()<<0,0,0,0,0,0,1).finished(), Matrix6s::Identity() * 1e-8, TimeStamp(0), dt/2); + + // Motion data Scalar dx = .1; Scalar dyaw = 2*M_PI/5; Vector6s data((Vector6s() << dx*cos(dyaw/2),dx*sin(dyaw/2),0,0,0,dyaw).finished()); // will integrate this data repeatedly - Scalar dt = 0.1; - CaptureMotionPtr cap_odo = std::make_shared<CaptureMotion>(TimeStamp(0), sen, data, 7, 6, nullptr); cout << "t: " << std::setprecision(2) << 0 << " \t x = ( " << problem->getCurrentState().transpose() << ")" << endl; diff --git a/src/processor_GPS.cpp b/src/processor_GPS.cpp index d66ba6e9b109060504987dfeb03cd30f77205102..74f20e48cc56598179f6d0c8af170fa7c97400a4 100644 --- a/src/processor_GPS.cpp +++ b/src/processor_GPS.cpp @@ -11,8 +11,8 @@ namespace wolf { -ProcessorGPS::ProcessorGPS() : - ProcessorBase("GPS"), +ProcessorGPS::ProcessorGPS(Scalar time_tolerance_) : + ProcessorBase("GPS", time_tolerance_), capture_gps_ptr_(nullptr) { gps_covariance_ = 10; diff --git a/src/processor_GPS.h b/src/processor_GPS.h index d89ff86b4e5c6310cdf21daa5551e8dfe0b49507..7a72dbadedd9290300758aef7dedc17ccefbce98 100644 --- a/src/processor_GPS.h +++ b/src/processor_GPS.h @@ -25,7 +25,7 @@ class ProcessorGPS : public ProcessorBase public: ProcessorGPS(); - virtual ~ProcessorGPS(); + virtual ~ProcessorGPS(Scalar time_tolerance_); virtual void init(CaptureBasePtr _capture_ptr); virtual void process(CaptureBasePtr _capture_ptr); virtual bool voteForKeyFrame(); diff --git a/src/processor_IMU.cpp b/src/processor_IMU.cpp index 06b1522286268331335fdc8bbdedcf3eda87e4d8..bb0ae86bffcb26e3b9d913bb57e65c23b6539231 100644 --- a/src/processor_IMU.cpp +++ b/src/processor_IMU.cpp @@ -4,7 +4,7 @@ namespace wolf { ProcessorIMU::ProcessorIMU(const ProcessorParamsIMU& _params) : - ProcessorMotion("IMU", 10, 10, 9, 6, 6, _params.time_tolerance), + ProcessorMotion("IMU", _params.time_tolerance, 10, 10, 9, 6, 6), max_time_span_ (_params.max_time_span ), max_buff_length_(_params.max_buff_length ), dist_traveled_ (_params.dist_traveled ), diff --git a/src/processor_motion.cpp b/src/processor_motion.cpp index a8af1d1a594bd710f4f94c6b4e581bb7947a5057..3fa2234ad2722e14db221471cb6dd9a2565ab3c2 100644 --- a/src/processor_motion.cpp +++ b/src/processor_motion.cpp @@ -3,12 +3,12 @@ namespace wolf { ProcessorMotion::ProcessorMotion(const std::string& _type, + Scalar _time_tolerance, Size _state_size, Size _delta_size, Size _delta_cov_size, Size _data_size, - Size _calib_size, - Scalar _time_tolerance) : + Size _calib_size) : ProcessorBase(_type, _time_tolerance), processing_step_(RUNNING_WITHOUT_PACK), x_size_(_state_size), diff --git a/src/processor_motion.h b/src/processor_motion.h index ea1421aa9e0ad7b6be65fb8d6df5f2b6663dc9a9..11e299f3089bcccc40ecd3793a6c16a6f7eaaced 100644 --- a/src/processor_motion.h +++ b/src/processor_motion.h @@ -113,12 +113,12 @@ class ProcessorMotion : public ProcessorBase // This is the main public interface public: ProcessorMotion(const std::string& _type, + Scalar _time_tolerance, Size _state_size, Size _delta_size, Size _delta_cov_size, Size _data_size, - Size _calib_size = 0, - Scalar _time_tolerance = 0.1); + Size _calib_size = 0); virtual ~ProcessorMotion(); // Instructions to the processor: diff --git a/src/processor_odom_2D.cpp b/src/processor_odom_2D.cpp index 38c37f5c15c42cb38fe978e835b949d910c7aaaf..5ebc1bffafb2937cfb3e017e57df9af70274e4e5 100644 --- a/src/processor_odom_2D.cpp +++ b/src/processor_odom_2D.cpp @@ -3,7 +3,7 @@ namespace wolf { ProcessorOdom2D::ProcessorOdom2D(const ProcessorParamsOdom2D& _params) : - ProcessorMotion("ODOM 2D", 3, 3, 3, 2, 0, _params.time_tolerance), + ProcessorMotion("ODOM 2D", _params.time_tolerance, 3, 3, 3, 2, 0), dist_traveled_th_(_params.dist_traveled_th_), theta_traveled_th_(_params.theta_traveled_th_), cov_det_th_(_params.cov_det_th_), diff --git a/src/processor_odom_3D.cpp b/src/processor_odom_3D.cpp index b5e619163571bdf11ee888d8631ad5ef62826b18..8165797715f213d27459eff3ad86944beaff495e 100644 --- a/src/processor_odom_3D.cpp +++ b/src/processor_odom_3D.cpp @@ -3,7 +3,7 @@ namespace wolf { ProcessorOdom3D::ProcessorOdom3D(const ProcessorParamsOdom3D& _params, SensorOdom3DPtr _sensor_ptr) : - ProcessorMotion("ODOM 3D", 7, 7, 6, 6, 0, _params.time_tolerance ), + ProcessorMotion("ODOM 3D", _params.time_tolerance, 7, 7, 6, 6, 0 ), max_time_span_ ( _params.max_time_span ), max_buff_length_( _params.max_buff_length ), dist_traveled_ ( _params.dist_traveled ),