From 6db0da3f9165f41e4f6323b0dcecf20798749827 Mon Sep 17 00:00:00 2001
From: jvallve <jvallve@iri.upc.edu>
Date: Wed, 30 Mar 2022 12:18:22 +0200
Subject: [PATCH] storing loaders

---
 include/node.h                  |  2 ++
 include/publisher.h             |  7 +++++++
 include/publisher_graph.h       |  2 --
 include/publisher_pose.h        |  1 -
 include/publisher_state_block.h |  1 -
 include/publisher_tf.h          |  3 +--
 include/publisher_trajectory.h  |  1 -
 include/subscriber_diffdrive.h  |  1 -
 include/subscriber_odom2d.h     |  1 -
 src/node.cpp                    | 18 ++++++++++--------
 src/publisher_graph.cpp         |  2 ++
 src/publisher_pose.cpp          |  1 +
 src/publisher_state_block.cpp   |  1 +
 src/publisher_tf.cpp            |  5 +----
 src/publisher_trajectory.cpp    |  1 +
 src/subscriber_diffdrive.cpp    |  1 +
 src/subscriber_odom2d.cpp       |  1 +
 17 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/include/node.h b/include/node.h
index 3113944..0af71ac 100644
--- a/include/node.h
+++ b/include/node.h
@@ -79,6 +79,8 @@ class WolfRosNode
 
 
     protected:
+        std::vector<std::shared_ptr<Loader>> loaders_;
+
         // solver
         SolverManagerPtr solver_;
         ros::Time last_cov_stamp_;
diff --git a/include/publisher.h b/include/publisher.h
index 89781a4..822b2e4 100644
--- a/include/publisher.h
+++ b/include/publisher.h
@@ -97,6 +97,8 @@ class Publisher
 
         std::string getTopic() const;
 
+        std::string getName() const;
+
     protected:
 
         template<typename T>
@@ -129,6 +131,11 @@ inline std::string Publisher::getTopic() const
     return topic_;
 }
 
+inline std::string Publisher::getName() const
+{
+    return name_;
+}
+
 inline void Publisher::publish()
 {
     if (last_n_period_ == 0)
diff --git a/include/publisher_graph.h b/include/publisher_graph.h
index fec1e5f..de5d2e4 100644
--- a/include/publisher_graph.h
+++ b/include/publisher_graph.h
@@ -99,8 +99,6 @@ class PublisherGraph: public Publisher
 
 };
 
-WOLF_REGISTER_PUBLISHER(PublisherGraph)
-
 }
 
 #endif
diff --git a/include/publisher_pose.h b/include/publisher_pose.h
index d6c72de..6005454 100644
--- a/include/publisher_pose.h
+++ b/include/publisher_pose.h
@@ -78,7 +78,6 @@ class PublisherPose: public Publisher
         tf::TransformListener tfl_;
 };
 
-WOLF_REGISTER_PUBLISHER(PublisherPose)
 }
 
 #endif
diff --git a/include/publisher_state_block.h b/include/publisher_state_block.h
index 92ffb5d..053dc40 100644
--- a/include/publisher_state_block.h
+++ b/include/publisher_state_block.h
@@ -59,7 +59,6 @@ class PublisherStateBlock: public Publisher
         void publishDerived() override;
 };
 
-WOLF_REGISTER_PUBLISHER(PublisherStateBlock)
 }
 
 #endif
diff --git a/include/publisher_tf.h b/include/publisher_tf.h
index c9105d2..4b4eff9 100644
--- a/include/publisher_tf.h
+++ b/include/publisher_tf.h
@@ -67,7 +67,7 @@ class PublisherTf: public Publisher
 
         tf::TransformListener tfl_;
 
-        tf::StampedTransform T_odom2base_;//, T_map2odom_;
+        tf::StampedTransform T_odom2base_;
         geometry_msgs::TransformStamped Tmsg_map2odom_;
 
         bool publish_odom_tf_;
@@ -86,7 +86,6 @@ class PublisherTf: public Publisher
         void publishDerived() override;
 };
 
-WOLF_REGISTER_PUBLISHER(PublisherTf)
 }
 
 #endif
diff --git a/include/publisher_trajectory.h b/include/publisher_trajectory.h
index eddfa60..53f3340 100644
--- a/include/publisher_trajectory.h
+++ b/include/publisher_trajectory.h
@@ -66,7 +66,6 @@ class PublisherTrajectory: public Publisher
 
 };
 
-WOLF_REGISTER_PUBLISHER(PublisherTrajectory)
 }
 
 #endif
diff --git a/include/subscriber_diffdrive.h b/include/subscriber_diffdrive.h
index 935d729..3638e5b 100644
--- a/include/subscriber_diffdrive.h
+++ b/include/subscriber_diffdrive.h
@@ -55,5 +55,4 @@ class SubscriberDiffdrive : public Subscriber
     void callback(const sensor_msgs::JointState::ConstPtr& msg);
 };
 
-WOLF_REGISTER_SUBSCRIBER(SubscriberDiffdrive)
 }  // namespace wolf
diff --git a/include/subscriber_odom2d.h b/include/subscriber_odom2d.h
index c172d28..db786e7 100644
--- a/include/subscriber_odom2d.h
+++ b/include/subscriber_odom2d.h
@@ -53,5 +53,4 @@ class SubscriberOdom2d : public Subscriber
     void callback(const nav_msgs::Odometry::ConstPtr& msg);
 };
 
-WOLF_REGISTER_SUBSCRIBER(SubscriberOdom2d)
 }  // namespace wolf
diff --git a/src/node.cpp b/src/node.cpp
index 16f4591..1b78215 100644
--- a/src/node.cpp
+++ b/src/node.cpp
@@ -66,7 +66,6 @@ WolfRosNode::WolfRosNode()
     node_rate_ = server.getParam<double>("problem/node_rate");
 
     // LOAD PACKAGES (subscribers and publishers)
-    auto loaders = std::vector<std::shared_ptr<Loader>>();
 #if __APPLE__
     std::string lib_extension = ".dylib";
 #else
@@ -77,14 +76,14 @@ WolfRosNode::WolfRosNode()
         WOLF_TRACE("Loading subscriber " + subscriber_name + " via " + subscriber);
         auto l = std::make_shared<LoaderRaw>(subscriber);
         l->load();
-        loaders.push_back(l);
+        loaders_.push_back(l);
     }
     for (auto publisher_name : server.getParam<std::vector<std::string>>("packages_publisher")) {
         std::string publisher = packages_path + "/libpublisher_" + publisher_name + lib_extension;
         WOLF_TRACE("Loading publisher " + publisher_name + " via " + publisher);
         auto l = std::make_shared<LoaderRaw>(publisher);
         l->load();
-        loaders.push_back(l);
+        loaders_.push_back(l);
     }
     
     // PUBLISHERS
@@ -94,11 +93,11 @@ WolfRosNode::WolfRosNode()
         std::string publisher = it["type"];
         std::string topic      = it["topic"];
         WOLF_INFO("Pub: ", publisher, " name: ", publisher+" - "+topic);
-        publishers_.push_back(FactoryEmptyObject::create(publisher,
-                                                        publisher+" - "+topic,
-                                                        server,
-                                                        problem_ptr_,
-                                                        nh_));
+        publishers_.push_back(FactoryPublisher::create(publisher,
+                                                       publisher+" - "+topic,
+                                                       server,
+                                                       problem_ptr_,
+                                                       nh_));
     }
 
     // SUBSCRIBERS
@@ -268,7 +267,10 @@ int main(int argc, char **argv)
 
     // Init publishers threads
     for(auto pub : wolf_node.publishers_)
+    {
+        WOLF_INFO("Running publisher ", pub->getName());
         pub->run();
+    }
 
     while (ros::ok())
     {
diff --git a/src/publisher_graph.cpp b/src/publisher_graph.cpp
index 2c9373f..19ba360 100644
--- a/src/publisher_graph.cpp
+++ b/src/publisher_graph.cpp
@@ -772,4 +772,6 @@ std::string PublisherGraph::factorString(FactorBaseConstPtr fac) const
     return factor_string;
 }
 
+WOLF_REGISTER_PUBLISHER(PublisherGraph)
+
 }
diff --git a/src/publisher_pose.cpp b/src/publisher_pose.cpp
index d1ba471..7c85dc1 100644
--- a/src/publisher_pose.cpp
+++ b/src/publisher_pose.cpp
@@ -263,4 +263,5 @@ bool PublisherPose::listenTf()
     return false;
 }
 
+WOLF_REGISTER_PUBLISHER(PublisherPose)
 }
diff --git a/src/publisher_state_block.cpp b/src/publisher_state_block.cpp
index 1bf55b3..bc39947 100644
--- a/src/publisher_state_block.cpp
+++ b/src/publisher_state_block.cpp
@@ -64,4 +64,5 @@ void PublisherStateBlock::publishDerived()
 
 }
 
+WOLF_REGISTER_PUBLISHER(PublisherStateBlock)
 }
diff --git a/src/publisher_tf.cpp b/src/publisher_tf.cpp
index 08117d5..044f820 100644
--- a/src/publisher_tf.cpp
+++ b/src/publisher_tf.cpp
@@ -47,10 +47,6 @@ PublisherTf::PublisherTf(const std::string& _unique_name,
     T_odom2base_.frame_id_ = odom_frame_id_;
     T_odom2base_.child_frame_id_ = base_frame_id_;
     T_odom2base_.stamp_ = ros::Time::now();
-    //T_map2odom_.setIdentity();
-    //T_map2odom_.frame_id_ = map_frame_id_;
-    //T_map2odom_.child_frame_id_ = odom_frame_id_;
-    //T_map2odom_.stamp_ = ros::Time::now();
     Tmsg_map2odom_.child_frame_id = odom_frame_id_;
     Tmsg_map2odom_.header.frame_id = map_frame_id_;
     Tmsg_map2odom_.header.stamp = ros::Time::now();
@@ -164,4 +160,5 @@ void PublisherTf::publishDerived()
     stfb_.sendTransform(Tmsg_map2odom_);
 }
 
+WOLF_REGISTER_PUBLISHER(PublisherTf)
 }
diff --git a/src/publisher_trajectory.cpp b/src/publisher_trajectory.cpp
index 6fa3576..e220449 100644
--- a/src/publisher_trajectory.cpp
+++ b/src/publisher_trajectory.cpp
@@ -106,4 +106,5 @@ void PublisherTrajectory::publishTrajectory()
     path_msg_.poses.clear();
 }
 
+WOLF_REGISTER_PUBLISHER(PublisherTrajectory)
 }
diff --git a/src/subscriber_diffdrive.cpp b/src/subscriber_diffdrive.cpp
index a7578d0..da7a295 100644
--- a/src/subscriber_diffdrive.cpp
+++ b/src/subscriber_diffdrive.cpp
@@ -88,4 +88,5 @@ void SubscriberDiffdrive::callback(const sensor_msgs::JointState::ConstPtr& msg)
     last_odom_seq_   = msg->header.seq;
 }
 
+WOLF_REGISTER_SUBSCRIBER(SubscriberDiffdrive)
 }  // namespace wolf
diff --git a/src/subscriber_odom2d.cpp b/src/subscriber_odom2d.cpp
index 2438e41..f46d0a5 100644
--- a/src/subscriber_odom2d.cpp
+++ b/src/subscriber_odom2d.cpp
@@ -81,4 +81,5 @@ void SubscriberOdom2d::callback(const nav_msgs::Odometry::ConstPtr& msg)
     ROS_DEBUG("WolfNodePolyline::odomCallback: end");
 }
 
+WOLF_REGISTER_SUBSCRIBER(SubscriberOdom2d)
 }  // namespace wolf
-- 
GitLab