diff --git a/include/iri_base_algorithm/iri_base_algorithm.h b/include/iri_base_algorithm/iri_base_algorithm.h index 2953659db54587fd77159771a9fe420ac0cd0ccb..b9f8be2541ce438ac164dada68eac3364df5198a 100644 --- a/include/iri_base_algorithm/iri_base_algorithm.h +++ b/include/iri_base_algorithm/iri_base_algorithm.h @@ -152,6 +152,8 @@ class IriBaseAlgorithm */ int spin(void); + int nodelet_spin(void); + private: /** * \brief ros spin thread @@ -380,6 +382,35 @@ int IriBaseAlgorithm<Algorithm>::spin(void) return 0; } +template <class Algorithm> +int IriBaseAlgorithm<Algorithm>::nodelet_spin(void) +{ + ROS_DEBUG("IriBaseAlgorithm::spin"); + + // initialize diagnostics + this->diagnostic_.setHardwareID("none"); + this->addDiagnostics(); + + // assign callback to dynamic reconfigure server + this->dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2)); + + // create the status thread + pthread_create(&this->thread,NULL,this->mainThread,this); + + while(ros::ok()) + { + // update diagnostics + this->diagnostic_.update(); + + ros::WallDuration(this->diagnostic_.getPeriod()).sleep(); + } + + // stop ros + ros::shutdown(); + + return 0; +} + // definition of the static Ctrl+C counter /**