From 442e7d162dd23d2d36ee6bfc8b9dee566eabcbc8 Mon Sep 17 00:00:00 2001 From: Joan Perez Ibarz <jperez@iri.upc.edu> Date: Tue, 7 Jun 2011 08:56:34 +0000 Subject: [PATCH] - fixing bug for base algorithm. Pure virtual function was called in reconfigure callback. Now initialization is done in spin instead of constructor --- include/iri_base_algorithm/iri_base_algorithm.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/include/iri_base_algorithm/iri_base_algorithm.h b/include/iri_base_algorithm/iri_base_algorithm.h index c804249..b8ce13f 100644 --- a/include/iri_base_algorithm/iri_base_algorithm.h +++ b/include/iri_base_algorithm/iri_base_algorithm.h @@ -310,8 +310,8 @@ IriBaseAlgorithm<Algorithm>::IriBaseAlgorithm() : this->thread_server_->create_thread(this->main_thread_id_); this->thread_server_->attach_thread(this->main_thread_id_, this->mainThread, this); - // assign callback to dynamic reconfigure server - dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2)); +// // assign callback to dynamic reconfigure server +// dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2)); } template <class Algorithm> @@ -325,8 +325,11 @@ IriBaseAlgorithm<Algorithm>::~IriBaseAlgorithm() template <class Algorithm> void IriBaseAlgorithm<Algorithm>::reconfigureCallback(Config &config, uint32_t level) { - node_config_update(config, level); + ROS_INFO("IriBaseAlgorithm::reconfigureCallback"); + this->node_config_update(config, level); + ROS_INFO("IriBaseAlgorithm::reconfigureCallback: node_config_update"); this->alg_.config_update(config, level); + ROS_INFO("IriBaseAlgorithm::reconfigureCallback: alg_.config_update"); } template <class Algorithm> @@ -368,7 +371,10 @@ int IriBaseAlgorithm<Algorithm>::spin(void) // launch ros spin in different thread this->ros_thread_.reset( new boost::thread(boost::bind(&ros::spin)) ); assert(ros_thread_); - + + // assign callback to dynamic reconfigure server + this->dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2)); + // launch node thread this->thread_server_->start_thread( this->main_thread_id_); -- GitLab