Primo tentativo di Override della gestione segnali shutdown
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#endif // ROBOGLUE_UTILS_H
|
#endif // ROBOGLUE_UTILS_H
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <ros/ros.h>
|
#include <ros/ros.h>
|
||||||
|
|||||||
@@ -16,13 +16,17 @@
|
|||||||
#include <roboglue_ros/roboglue_utils.h> /// utility function library
|
#include <roboglue_ros/roboglue_utils.h> /// utility function library
|
||||||
#include <moveit/move_group_interface/move_group_interface.h>
|
#include <moveit/move_group_interface/move_group_interface.h>
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
///////// FUNCTION DECLARATIONS ///////////
|
///////// FUNCTION DECLARATIONS ///////////
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
void testFunction( ros::Publisher* trj_pub);
|
void testFunction( ros::Publisher* trj_pub);
|
||||||
trajectory_msgs::JointTrajectory composeTrjMessage(std::vector<double> jtpos, std::vector<std::string> jnames);
|
trajectory_msgs::JointTrajectory composeTrjMessage(std::vector<double> jtpos, std::vector<std::string> jnames);
|
||||||
|
|
||||||
|
void sigintHandler(int sig, internalState* is){
|
||||||
|
ROS_DEBUG("Signal %d Received", sig);
|
||||||
|
if (is->isRunning) is->isRunning = false;
|
||||||
|
//ros::shutdown();
|
||||||
|
}
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
///////// ROS CALLBACKS //////////////////
|
///////// ROS CALLBACKS //////////////////
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
@@ -201,8 +205,11 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
/// setup node parameters ///
|
/// setup node parameters ///
|
||||||
ros::init(argc, argv, "roboglue_follower");
|
ros::init(argc, argv, "roboglue_follower");
|
||||||
|
//TODO: ros::init(argc, argv, "roboglue_follower", ros::init_options::NoSigintHandler);
|
||||||
ros::NodeHandle nh;
|
ros::NodeHandle nh;
|
||||||
publisherMap publishers;
|
publisherMap publishers;
|
||||||
|
/// TODO: override default signal handler ///
|
||||||
|
// signal(SIGINT, boost::bind(sigintHandler, _1, &is));
|
||||||
///read parameters from server ///
|
///read parameters from server ///
|
||||||
nh.getParam("/roboglue_ros_recorder/parameter_ns", common_par.param_ns);
|
nh.getParam("/roboglue_ros_recorder/parameter_ns", common_par.param_ns);
|
||||||
loadCommonParameters(&nh, &common_par);
|
loadCommonParameters(&nh, &common_par);
|
||||||
@@ -217,7 +224,7 @@ int main(int argc, char **argv) {
|
|||||||
/// set spinner rate ///
|
/// set spinner rate ///
|
||||||
ros::Rate loop_rate(common_par.loopRate);
|
ros::Rate loop_rate(common_par.loopRate);
|
||||||
/// set console log level ///
|
/// set console log level ///
|
||||||
ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Info);
|
ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Debug);
|
||||||
ROS_INFO("Follower Node Started");
|
ROS_INFO("Follower Node Started");
|
||||||
|
|
||||||
/// subscribe to incoming topics ///
|
/// subscribe to incoming topics ///
|
||||||
@@ -281,10 +288,14 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
ROS_DEBUG_ONCE("Follower Node Looping");
|
ROS_DEBUG_ONCE("Follower Node Looping");
|
||||||
ros::spinOnce();
|
ros::spinOnce();
|
||||||
|
if(ros::isShuttingDown()){
|
||||||
|
declareShutdown(&publishers, &common_par);
|
||||||
|
ros::spinOnce();
|
||||||
|
}
|
||||||
loop_rate.sleep();
|
loop_rate.sleep();
|
||||||
}
|
}
|
||||||
|
ros::shutdown();
|
||||||
//////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////
|
||||||
declareShutdown(&publishers, &common_par);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|||||||
@@ -261,9 +261,8 @@ int main(int argc, char **argv) {
|
|||||||
nh.getParam("/roboglue_ros_recorder/point_group_mode", robot_data.point_group_mode);
|
nh.getParam("/roboglue_ros_recorder/point_group_mode", robot_data.point_group_mode);
|
||||||
nh.getParam("/roboglue_ros_recorder/planning_mode", robot_data.planning_mode);
|
nh.getParam("/roboglue_ros_recorder/planning_mode", robot_data.planning_mode);
|
||||||
|
|
||||||
|
|
||||||
/// set console log level ///
|
/// set console log level ///
|
||||||
ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Warn);
|
ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Debug);
|
||||||
/// set spinner rate ///
|
/// set spinner rate ///
|
||||||
ros::Rate loop_rate(common_par.loopRate);
|
ros::Rate loop_rate(common_par.loopRate);
|
||||||
ROS_INFO("Recorder Node Started");
|
ROS_INFO("Recorder Node Started");
|
||||||
@@ -323,6 +322,10 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
ROS_DEBUG_ONCE("Recorder Node Looping");
|
ROS_DEBUG_ONCE("Recorder Node Looping");
|
||||||
ros::spinOnce();
|
ros::spinOnce();
|
||||||
|
if(ros::isShuttingDown()){
|
||||||
|
declareShutdown(&publishers, &common_par);
|
||||||
|
ros::spinOnce();
|
||||||
|
}
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
/////////// PLAY FILE ///////////////////
|
/////////// PLAY FILE ///////////////////
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
@@ -430,7 +433,6 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
loop_rate.sleep();
|
loop_rate.sleep();
|
||||||
}
|
}
|
||||||
declareShutdown(&publishers, &common_par);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|||||||
@@ -177,6 +177,10 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
ROS_DEBUG_ONCE("Relay Node Looping");
|
ROS_DEBUG_ONCE("Relay Node Looping");
|
||||||
ros::spinOnce();
|
ros::spinOnce();
|
||||||
|
if(ros::isShuttingDown()){
|
||||||
|
declareShutdown(&publishers, &common_par);
|
||||||
|
ros::spinOnce();
|
||||||
|
}
|
||||||
loop_rate.sleep();
|
loop_rate.sleep();
|
||||||
}
|
}
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
@@ -187,6 +191,5 @@ int main(int argc, char **argv) {
|
|||||||
} catch (mqtt::exception &e) {
|
} catch (mqtt::exception &e) {
|
||||||
ROS_DEBUG("Error Disconnecting MQTT: [%s]", e.what());
|
ROS_DEBUG("Error Disconnecting MQTT: [%s]", e.what());
|
||||||
}
|
}
|
||||||
declareShutdown(&publishers, &common_par);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
#include <roboglue_ros/roboglue_utils.h>
|
#include <roboglue_ros/roboglue_utils.h>
|
||||||
|
|
||||||
/// Utilities funtion used in roboglue ros nodes ///
|
/// Utilities funtion used in roboglue ros nodes ///
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
/////////////// NODE MANAGEMENT ///////////////////
|
||||||
|
//////////////////////////////////////////////////
|
||||||
bool loadCommonParameters(ros::NodeHandle* nh, COMMON_parameters *p) {
|
bool loadCommonParameters(ros::NodeHandle* nh, COMMON_parameters *p) {
|
||||||
nh->getParam(p->param_ns+"INstate", p->ros_topics.stateSub);
|
nh->getParam(p->param_ns+"INstate", p->ros_topics.stateSub);
|
||||||
nh->getParam(p->param_ns+"INcommands", p->ros_topics.commandSub);
|
nh->getParam(p->param_ns+"INcommands", p->ros_topics.commandSub);
|
||||||
@@ -32,6 +35,11 @@ void declareShutdown(publisherMap* publishers, COMMON_parameters* common_par){
|
|||||||
publishers->find(common_par->ros_topics.interfacePub)->second->publish(common_par->shutdownMsg);
|
publishers->find(common_par->ros_topics.interfacePub)->second->publish(common_par->shutdownMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
/////////////// OTHER /////////////////////////////
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
geometry_msgs::TwistStamped jstr2Twist(nlohmann::json cval){
|
geometry_msgs::TwistStamped jstr2Twist(nlohmann::json cval){
|
||||||
static uint32_t seqId = 0;
|
static uint32_t seqId = 0;
|
||||||
geometry_msgs::TwistStamped tw;
|
geometry_msgs::TwistStamped tw;
|
||||||
|
|||||||
Reference in New Issue
Block a user