From 72a61f2abfeb1bcd47453cec90677d97d47dd20e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu>
Date: Fri, 2 Aug 2019 02:40:36 +0200
Subject: [PATCH] Organize processors' high level API and document a little

---
 include/core/processor/processor_base.h       |  2 +-
 include/core/processor/processor_diff_drive.h | 10 +++++++---
 include/core/processor/processor_odom_2D.h    |  9 +++++----
 include/core/processor/processor_odom_3D.h    | 11 ++++++-----
 4 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/include/core/processor/processor_base.h b/include/core/processor/processor_base.h
index c940dbf5f..da7089c17 100644
--- a/include/core/processor/processor_base.h
+++ b/include/core/processor/processor_base.h
@@ -20,7 +20,7 @@ class SensorBase;
 namespace wolf {
 
 /*
- * Macro for defining Autoconf processor creator.
+ * Macro for defining Autoconf processor creator for WOLF's high level API.
  *
  * Place a call to this macro inside your class declaration (in the processor_class.h file),
  * preferably just after the constructors.
diff --git a/include/core/processor/processor_diff_drive.h b/include/core/processor/processor_diff_drive.h
index 98e7bfaa3..297ce7a38 100644
--- a/include/core/processor/processor_diff_drive.h
+++ b/include/core/processor/processor_diff_drive.h
@@ -34,12 +34,16 @@ class ProcessorDiffDrive : public ProcessorOdom2D
 {
     public:
         ProcessorDiffDrive(ProcessorParamsDiffDrivePtr _params_motion);
-        WOLF_CREATE_PROCESSOR_AUTO(ProcessorDiffDrive, ProcessorParamsDiffDrive);
-        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params);
         virtual ~ProcessorDiffDrive();
+        virtual void configure(SensorBasePtr _sensor) override;
+
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params);
+        WOLF_CREATE_PROCESSOR_AUTO(ProcessorDiffDrive, ProcessorParamsDiffDrive);
 
     protected:
-        virtual void configure(SensorBasePtr _sensor) override;
+        // Motion integration
         virtual void computeCurrentDelta(const Eigen::VectorXs& _data,
                                          const Eigen::MatrixXs& _data_cov,
                                          const Eigen::VectorXs& _calib,
diff --git a/include/core/processor/processor_odom_2D.h b/include/core/processor/processor_odom_2D.h
index e62f7a19b..9d9c8096a 100644
--- a/include/core/processor/processor_odom_2D.h
+++ b/include/core/processor/processor_odom_2D.h
@@ -41,10 +41,14 @@ class ProcessorOdom2D : public ProcessorMotion
 {
     public:
         ProcessorOdom2D(ProcessorParamsOdom2DPtr _params);
-        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom2D, ProcessorParamsOdom2D);
         virtual ~ProcessorOdom2D();
         virtual void configure(SensorBasePtr _sensor) override { };
 
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params);
+        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom2D, ProcessorParamsOdom2D);
+
         virtual bool voteForKeyFrame() override;
 
     protected:
@@ -93,9 +97,6 @@ class ProcessorOdom2D : public ProcessorMotion
     protected:
         ProcessorParamsOdom2DPtr params_odom_2D_;
 
-        // Factory method
-    public:
-        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params);
 };
 
 inline Eigen::VectorXs ProcessorOdom2D::deltaZero() const
diff --git a/include/core/processor/processor_odom_3D.h b/include/core/processor/processor_odom_3D.h
index 98bd95e4a..ce9716032 100644
--- a/include/core/processor/processor_odom_3D.h
+++ b/include/core/processor/processor_odom_3D.h
@@ -61,11 +61,16 @@ class ProcessorOdom3D : public ProcessorMotion
 {
     public:
         ProcessorOdom3D(ProcessorParamsOdom3DPtr _params);
-        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom3D, ProcessorParamsOdom3D);
         virtual ~ProcessorOdom3D();
         virtual void configure(SensorBasePtr _sensor) override;
 
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params);
+        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom3D, ProcessorParamsOdom3D);
+
     public:
+        // Motion integration
         virtual void computeCurrentDelta(const Eigen::VectorXs& _data,
                                          const Eigen::MatrixXs& _data_cov,
                                          const Eigen::VectorXs& _calib,
@@ -127,10 +132,6 @@ class ProcessorOdom3D : public ProcessorMotion
         Eigen::Map<Eigen::Quaternions> q_out_;
         void remap(const Eigen::VectorXs& _x1, const Eigen::VectorXs& _x2, Eigen::VectorXs& _x_out);
 
-    // Factory method
-    public:
-        static ProcessorBasePtr create(const std::string& _unique_name,
-                                       const ProcessorParamsBasePtr _params);
 };
 
 inline Eigen::VectorXs ProcessorOdom3D::deltaZero() const
-- 
GitLab