00001 00029 #pragma once 00030 00031 #include <Eigen/Dense> 00032 00033 #include "SparseSystem.h" 00034 #include "Node.h" 00035 00036 00037 namespace isam { 00038 00044 class OptimizationInterface { 00045 00046 protected: 00047 00049 SparseSystem _R; 00050 00051 public: 00052 virtual SparseSystem jacobian() = 0; 00053 virtual void apply_exmap(const Eigen::VectorXd& delta) = 0; 00054 virtual void self_exmap(const Eigen::VectorXd& delta) = 0; 00055 virtual void estimate_to_linpoint() = 0; 00056 virtual void linpoint_to_estimate() = 0; 00057 virtual void swap_estimates() = 0; 00058 virtual Eigen::VectorXd weighted_errors(Selector s = ESTIMATE) = 0; 00059 00060 OptimizationInterface(): _R(1,1) {} 00061 00062 virtual ~OptimizationInterface() {} 00063 00064 friend class Optimizer; 00065 }; 00066 00067 }