From 5ce7bb56450339d5f9ff2e0c2ca063e80017fffb Mon Sep 17 00:00:00 2001 From: french1802 Date: Thu, 7 Jul 2016 15:23:12 +0200 Subject: [PATCH 01/13] Premier commit : ajout message beacon + supervizer.cpp --- supervizer/CMakeLists.txt | 191 +++++++++++++++++++++++++++++++++ supervizer/CMakeLists.txt~ | 191 +++++++++++++++++++++++++++++++++ supervizer/msg/beacon.msg | 5 + supervizer/package.xml | 50 +++++++++ supervizer/package.xml~ | 56 ++++++++++ supervizer/src/supervizer.cpp | 62 +++++++++++ supervizer/src/supervizer.cpp~ | 62 +++++++++++ 7 files changed, 617 insertions(+) create mode 100644 supervizer/CMakeLists.txt create mode 100644 supervizer/CMakeLists.txt~ create mode 100644 supervizer/msg/beacon.msg create mode 100644 supervizer/package.xml create mode 100644 supervizer/package.xml~ create mode 100644 supervizer/src/supervizer.cpp create mode 100644 supervizer/src/supervizer.cpp~ diff --git a/supervizer/CMakeLists.txt b/supervizer/CMakeLists.txt new file mode 100644 index 0000000..4df25ae --- /dev/null +++ b/supervizer/CMakeLists.txt @@ -0,0 +1,191 @@ +cmake_minimum_required(VERSION 2.8.3) +project(supervizer) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs + message_generation +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a run_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder + add_message_files( + FILES + beacon.msg + #Reste a mettre les messages propres à chaque fichier" + # + # + ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here + generate_messages( + DEPENDENCIES + std_msgs + ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a run_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if you package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( + INCLUDE_DIRS include + LIBRARIES supervizer + CATKIN_DEPENDS roscpp rospy std_msgs message_runtime + DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +# include_directories(include) +include_directories( + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(supervizer +# src/${PROJECT_NAME}/supervizer.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(supervizer ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +# add_executable(supervizer_node src/supervizer_node.cpp) + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(supervizer_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(supervizer_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# install(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables and/or libraries for installation +# install(TARGETS supervizer supervizer_node +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_supervizer.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/supervizer/CMakeLists.txt~ b/supervizer/CMakeLists.txt~ new file mode 100644 index 0000000..ab4be26 --- /dev/null +++ b/supervizer/CMakeLists.txt~ @@ -0,0 +1,191 @@ +cmake_minimum_required(VERSION 2.8.3) +project(supervizer) + +## Find catkin macros and libraries +## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) +## is used, also find other catkin packages +find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + std_msgs + message_generation +) + +## System dependencies are found with CMake's conventions +# find_package(Boost REQUIRED COMPONENTS system) + + +## Uncomment this if the package has a setup.py. This macro ensures +## modules and global scripts declared therein get installed +## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html +# catkin_python_setup() + +################################################ +## Declare ROS messages, services and actions ## +################################################ + +## To declare and build messages, services or actions from within this +## package, follow these steps: +## * Let MSG_DEP_SET be the set of packages whose message types you use in +## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). +## * In the file package.xml: +## * add a build_depend tag for "message_generation" +## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET +## * If MSG_DEP_SET isn't empty the following dependency has been pulled in +## but can be declared for certainty nonetheless: +## * add a run_depend tag for "message_runtime" +## * In this file (CMakeLists.txt): +## * add "message_generation" and every package in MSG_DEP_SET to +## find_package(catkin REQUIRED COMPONENTS ...) +## * add "message_runtime" and every package in MSG_DEP_SET to +## catkin_package(CATKIN_DEPENDS ...) +## * uncomment the add_*_files sections below as needed +## and list every .msg/.srv/.action file to be processed +## * uncomment the generate_messages entry below +## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) + +## Generate messages in the 'msg' folder + add_message_files( + FILES + beacon.msg + #Reste a mettre les messages propres à chaque fichier" + # + # + ) + +## Generate services in the 'srv' folder +# add_service_files( +# FILES +# Service1.srv +# Service2.srv +# ) + +## Generate actions in the 'action' folder +# add_action_files( +# FILES +# Action1.action +# Action2.action +# ) + +## Generate added messages and services with any dependencies listed here + generate_messages( + DEPENDENCIES + std_msgs + ) + +################################################ +## Declare ROS dynamic reconfigure parameters ## +################################################ + +## To declare and build dynamic reconfigure parameters within this +## package, follow these steps: +## * In the file package.xml: +## * add a build_depend and a run_depend tag for "dynamic_reconfigure" +## * In this file (CMakeLists.txt): +## * add "dynamic_reconfigure" to +## find_package(catkin REQUIRED COMPONENTS ...) +## * uncomment the "generate_dynamic_reconfigure_options" section below +## and list every .cfg file to be processed + +## Generate dynamic reconfigure parameters in the 'cfg' folder +# generate_dynamic_reconfigure_options( +# cfg/DynReconf1.cfg +# cfg/DynReconf2.cfg +# ) + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if you package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need +catkin_package( + INCLUDE_DIRS include + LIBRARIES supervizer + CATKIN_DEPENDS roscpp rospy std_msgs message_runtim + DEPENDS system_lib +) + +########### +## Build ## +########### + +## Specify additional locations of header files +## Your package locations should be listed before other locations +# include_directories(include) +include_directories( + ${catkin_INCLUDE_DIRS} +) + +## Declare a C++ library +# add_library(supervizer +# src/${PROJECT_NAME}/supervizer.cpp +# ) + +## Add cmake target dependencies of the library +## as an example, code may need to be generated before libraries +## either from message generation or dynamic reconfigure +# add_dependencies(supervizer ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Declare a C++ executable +# add_executable(supervizer_node src/supervizer_node.cpp) + +## Add cmake target dependencies of the executable +## same as for the library above +# add_dependencies(supervizer_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) + +## Specify libraries to link a library or executable target against +# target_link_libraries(supervizer_node +# ${catkin_LIBRARIES} +# ) + +############# +## Install ## +############# + +# all install targets should use catkin DESTINATION variables +# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html + +## Mark executable scripts (Python etc.) for installation +## in contrast to setup.py, you can choose the destination +# install(PROGRAMS +# scripts/my_python_script +# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark executables and/or libraries for installation +# install(TARGETS supervizer supervizer_node +# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# ) + +## Mark cpp header files for installation +# install(DIRECTORY include/${PROJECT_NAME}/ +# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# FILES_MATCHING PATTERN "*.h" +# PATTERN ".svn" EXCLUDE +# ) + +## Mark other files for installation (e.g. launch and bag files, etc.) +# install(FILES +# # myfile1 +# # myfile2 +# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# ) + +############# +## Testing ## +############# + +## Add gtest based cpp test target and link libraries +# catkin_add_gtest(${PROJECT_NAME}-test test/test_supervizer.cpp) +# if(TARGET ${PROJECT_NAME}-test) +# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) +# endif() + +## Add folders to be run by python nosetests +# catkin_add_nosetests(test) diff --git a/supervizer/msg/beacon.msg b/supervizer/msg/beacon.msg new file mode 100644 index 0000000..f1c1f42 --- /dev/null +++ b/supervizer/msg/beacon.msg @@ -0,0 +1,5 @@ +string name +time r_time +int8 state +string data_topic +duration dead_line \ No newline at end of file diff --git a/supervizer/package.xml b/supervizer/package.xml new file mode 100644 index 0000000..92eecaf --- /dev/null +++ b/supervizer/package.xml @@ -0,0 +1,50 @@ + + + supervizer + 0.0.1 + The supervizer package + + + + + François Duport + + + + + + TODO + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + message_generation + roscpp + rospy + std_msgs + message_runtime + + + + + + + + diff --git a/supervizer/package.xml~ b/supervizer/package.xml~ new file mode 100644 index 0000000..651391e --- /dev/null +++ b/supervizer/package.xml~ @@ -0,0 +1,56 @@ + + + supervizer + 0.0.0 + The supervizer package + + + + + robotech + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + catkin + roscpp + rospy + std_msgs + roscpp + rospy + std_msgs + + + + + + + + \ No newline at end of file diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp new file mode 100644 index 0000000..3f2b8d2 --- /dev/null +++ b/supervizer/src/supervizer.cpp @@ -0,0 +1,62 @@ +#include "ros/ros.h" +#include "std_msgs/supervizer.h" + +#include +/* +void transmission(void) +{ + ros::Publisher chatter_pub = n.advertise("chatter", 1000); + + ros::Rate loop_rate(10); + + int count = 0; + while (ros::ok()) + { + + std_msgs::String msg; + + std::stringstream ss; + ss << "hello world " << count; + msg.data = ss.str(); + + ROS_INFO("%s", msg.data.c_str()); + + /** + * The publish() function is how you send messages. The parameter + * is the message object. The type of this object must agree with the type + * given as a template parameter to the advertise<>() call, as was done + * in the constructor above. + * + chatter_pub.publish(msg); + + ros::spinOnce(); +std_msgs::String + loop_rate.sleep(); + ++count; + } +} +*/ +void chatterCallback(const supervizer::beacon::ConstPtr& msg) +{ + ROS_INFO("I heard: [%s]", msg->data.c_str()); +} +void reception() +{ + ros::Subscriber sub = n.subscribe("beacon", 1000, chatterCallback); + ros::spin(); + + +} +int main(int argc, char **argv) +{ + + ros::init(argc, argv, "supervizer"); + + ros::NodeHandle n; + + + + + + return 0; +} diff --git a/supervizer/src/supervizer.cpp~ b/supervizer/src/supervizer.cpp~ new file mode 100644 index 0000000..3219167 --- /dev/null +++ b/supervizer/src/supervizer.cpp~ @@ -0,0 +1,62 @@ +#include "ros/ros.h" +#include "std_msgs/supervizer.h" + +#include +/* +void transmission(void) +{ + ros::Publisher chatter_pub = n.advertise("chatter", 1000); + + ros::Rate loop_rate(10); + + int count = 0; + while (ros::ok()) + { + + std_msgs::String msg; + + std::stringstream ss; + ss << "hello world " << count; + msg.data = ss.str(); + + ROS_INFO("%s", msg.data.c_str()); + + /** + * The publish() function is how you send messages. The parameter + * is the message object. The type of this object must agree with the type + * given as a template parameter to the advertise<>() call, as was done + * in the constructor above. + * + chatter_pub.publish(msg); + + ros::spinOnce(); + + loop_rate.sleep(); + ++count; + } +} +*/ +void chatterCallback(const std_msgs::beacon::ConstPtr& msg) +{ + ROS_INFO("I heard: [%s]", msg->data.c_str()); +} +void reception() +{ + ros::Subscriber sub = n.subscribe("beacon", 1000, chatterCallback); + ros::spin(); + + +} +int main(int argc, char **argv) +{ + + ros::init(argc, argv, "supervizer"); + + ros::NodeHandle n; + + + + + + return 0; +} From 3c5775333d2a176e9877ba03905d2fc464f4ac38 Mon Sep 17 00:00:00 2001 From: french1802 Date: Thu, 7 Jul 2016 15:41:32 +0200 Subject: [PATCH 02/13] Modif supervizer.cpp --- supervizer/src/supervizer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 3f2b8d2..28ba8c3 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -40,15 +40,16 @@ void chatterCallback(const supervizer::beacon::ConstPtr& msg) { ROS_INFO("I heard: [%s]", msg->data.c_str()); } -void reception() +void reception(ros::NodeHandle* pN) { - ros::Subscriber sub = n.subscribe("beacon", 1000, chatterCallback); + ros::Subscriber sub = pN->subscribe("beacon", 1000, chatterCallback); ros::spin(); } int main(int argc, char **argv) { + string nom, ros::init(argc, argv, "supervizer"); From fba9a277e620156b8afad34a92622048b75e3b4b Mon Sep 17 00:00:00 2001 From: french1802 Date: Tue, 12 Jul 2016 15:57:30 +0200 Subject: [PATCH 03/13] 12/06 creation classe + modification supervizer, mise en application du concept --- supervizer/CMakeLists.txt | 7 ++ supervizer/include/supervizer/CStockage.h | 31 ++++++++ supervizer/include/supervizer/CStockage.h~ | 1 + supervizer/src/CStockage.cpp | 56 +++++++++++++++ supervizer/src/supervizer.cpp | 82 +++++++++++++++++++--- 5 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 supervizer/include/supervizer/CStockage.h create mode 100644 supervizer/include/supervizer/CStockage.h~ create mode 100644 supervizer/src/CStockage.cpp diff --git a/supervizer/CMakeLists.txt b/supervizer/CMakeLists.txt index 4df25ae..bee0b48 100644 --- a/supervizer/CMakeLists.txt +++ b/supervizer/CMakeLists.txt @@ -189,3 +189,10 @@ include_directories( ## Add folders to be run by python nosetests # catkin_add_nosetests(test) + +include_directories(include ${catkin_INCLUDE_DIRS}) + +add_executable(supervizer src/supervizer.cpp) +target_link_libraries(supervizer ${catkin_LIBRARIES}) +add_dependencies(supervizer supervizer_generate_messages_cpp) + diff --git a/supervizer/include/supervizer/CStockage.h b/supervizer/include/supervizer/CStockage.h new file mode 100644 index 0000000..84edcc2 --- /dev/null +++ b/supervizer/include/supervizer/CStockage.h @@ -0,0 +1,31 @@ +#include "ros/ros.h" +#include "supervizer/beacon.h" +#include "std_msgs/Time.h" +#include "std_msgs/Duration.h" +#include +#include "topic_tools/shape_shifter.h" +#include "topic_tools/parse.h" + +#include +using std::string; +using std::vector; +using namespace topic_tools; + +ros::NodeHandle *g_node = NULL; +class CStockage{ +private: + string m_sName, m_sTopic_In, m_sTopic_Out; + bool m_bState; + std_msgs::Time m_tTps_Reception; + std_msgs::Duration m_dDead_line; + ros::Publisher m_pubEch; + ros::Subscriber m_subEch; +public: + CStockage(void); + CStockage(string, string, ); + ~CStockage(void); + void callback(const std_msgs::Time); + void subscribe(void); + void transmission(void); + void repub(void); +}; diff --git a/supervizer/include/supervizer/CStockage.h~ b/supervizer/include/supervizer/CStockage.h~ new file mode 100644 index 0000000..4bcfe98 --- /dev/null +++ b/supervizer/include/supervizer/CStockage.h~ @@ -0,0 +1 @@ +d diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp new file mode 100644 index 0000000..81e8f63 --- /dev/null +++ b/supervizer/src/CStockage.cpp @@ -0,0 +1,56 @@ +#include "supervizer.h" + +CStockage(void) + :m_sName(""),m_sTopic_In("input"),m_sTopic_Out,m_bState(false) +{ + m_tTps_Reception.data = ros::Time(0); + m_dDead_line.data= ros::Duration(0); +} + +~CStockage(void) +{ +} + +void callback(const std_msgs::Time &msg) +{ + ROS_INFO_STREAM("Temps :"<m_tTps_Reception); +} +void subscribe() +{ + m_subEch = g_node->subscribe(m_sTopic_In, 10, &CStockage::callback,this); +} + +void repub(void) +{ + this->m_pubEch.publish(m_tTps_Reception); +} + +void transmission(void) +{ + m_pubEch = g_node->advertise(m_sTopic_Out, 1000); + + ros::Rate loop_rate(1000); + + while (ros::ok()) + { + + std_msgs::Time msg; + + + msg.data = m_tTps_Reception.data + ros::Duration(1); + + ROS_INFO_STREAM("Time : " << msg.data); + + /** + * The publish() function is how you send messages. The parameter + * is the message object. The type of this object must agree with the type + * given as a template parameter to the advertise<>() call, as was done + * in the constructor above. + * + */ + this->m_pubEch.publish(msg); + //TODO looprate + ros::spinOnce(); + + } +} diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 28ba8c3..5af2fbb 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -1,7 +1,74 @@ #include "ros/ros.h" -#include "std_msgs/supervizer.h" +#include "supervizer/beacon.h" +#include "std_msgs/Time.h" +#include "std_msgs/Duration.h" +#include +#include "topic_tools/shape_shifter.h" +#include "topic_tools/parse.h" #include +using std::string; +using std::vector; +using namespace topic_tools; + +ros::NodeHandle *g_node = NULL; +class CSupervizer{ +private: + string m_sName, m_sTopic; + bool m_bState; + std_msgs::Time m_tTps_Reception; + std_msgs::Duration m_dDead_line; + ros::Publisher m_pubEch; + ros::Subscriber m_subEch; +public: + CSupervizer(void) + :m_sName(""),m_sTopic(""),m_bState(false) + { + m_tTps_Reception.data = ros::Time(0); + m_dDead_line.data= ros::Duration(0); + } + //CSupervizer(void); + ~CSupervizer(void) + { + } + void callback(const std_msgs::Time &msg) + { + ROS_INFO_STREAM("Temps :"<m_tTps_Reception); + } + void subscribe() + { + m_subEch = g_node->subscribe("input", 10, &CSupervizer::callback,this); + } + void transmission(void) + { + m_pubEch = g_node->advertise("input", 1000); + + ros::Rate loop_rate(1000); + + while (ros::ok()) + { + + std_msgs::Time msg; + + + msg.data = m_tTps_Reception.data + ros::Duration(1); + + ROS_INFO_STREAM("Time : " << msg.data); + + /** + * The publish() function is how you send messages. The parameter + * is the message object. The type of this object must agree with the type + * given as a template parameter to the advertise<>() call, as was done + * in the constructor above. + * + */ + this->m_pubEch.publish(msg); + //TODO looprate + ros::spinOnce(); + + } + } +}; /* void transmission(void) { @@ -36,25 +103,24 @@ std_msgs::String } } */ -void chatterCallback(const supervizer::beacon::ConstPtr& msg) + void chatterCallback(const supervizer::beacon::ConstPtr& msg) { - ROS_INFO("I heard: [%s]", msg->data.c_str()); + ROS_INFO("I heard: [%s] [%s] [%d] [%f] [%f]", msg->name.c_str(), msg->data_topic.c_str(), msg->state, msg->r_time.toSec(),msg->dead_line.toSec()); } void reception(ros::NodeHandle* pN) { - ros::Subscriber sub = pN->subscribe("beacon", 1000, chatterCallback); + ros::Subscriber sub = pN->subscribe("beacon", 10, chatterCallback); ros::spin(); } int main(int argc, char **argv) { - string nom, - ros::init(argc, argv, "supervizer"); - + ros::NodeHandle n; - + g_node = &n; + reception(&n); From 8361cc7d95b1f78eabada17ebd81e271f9dc530c Mon Sep 17 00:00:00 2001 From: french1802 Date: Wed, 13 Jul 2016 14:28:12 +0200 Subject: [PATCH 04/13] 13/06 --- supervizer/include/supervizer/CStockage.h | 10 +++++----- supervizer/src/CStockage.cpp | 11 +++++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/supervizer/include/supervizer/CStockage.h b/supervizer/include/supervizer/CStockage.h index 84edcc2..2e2f1fd 100644 --- a/supervizer/include/supervizer/CStockage.h +++ b/supervizer/include/supervizer/CStockage.h @@ -3,24 +3,24 @@ #include "std_msgs/Time.h" #include "std_msgs/Duration.h" #include -#include "topic_tools/shape_shifter.h" -#include "topic_tools/parse.h" + #include using std::string; using std::vector; using namespace topic_tools; -ros::NodeHandle *g_node = NULL; class CStockage{ -private: + private: string m_sName, m_sTopic_In, m_sTopic_Out; bool m_bState; std_msgs::Time m_tTps_Reception; std_msgs::Duration m_dDead_line; ros::Publisher m_pubEch; ros::Subscriber m_subEch; -public: + ros::NodeHandle m_nohNode; + + public: CStockage(void); CStockage(string, string, ); ~CStockage(void); diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp index 81e8f63..2c3bbd8 100644 --- a/supervizer/src/CStockage.cpp +++ b/supervizer/src/CStockage.cpp @@ -6,7 +6,12 @@ CStockage(void) m_tTps_Reception.data = ros::Time(0); m_dDead_line.data= ros::Duration(0); } - + CStockage(void) + :m_sName(""),m_sTopic_In("input"),m_sTopic_Out,m_bState(false) +{ + m_tTps_Reception.data = ros::Time(0); + m_dDead_line.data= ros::Duration(0); +} ~CStockage(void) { } @@ -22,13 +27,15 @@ void subscribe() void repub(void) { + //TODO Réecrire pour le message complet this->m_pubEch.publish(m_tTps_Reception); } void transmission(void) { + //TODO adapter au vrai message m_pubEch = g_node->advertise(m_sTopic_Out, 1000); - + ros::Rate loop_rate(1000); while (ros::ok()) From d7dc3d54ca19457294a3452ebd27be498249d99e Mon Sep 17 00:00:00 2001 From: french1802 Date: Wed, 13 Jul 2016 15:39:59 +0200 Subject: [PATCH 05/13] Fin Classe pour essai message avec Constructeur a 3 (argument Nom, Input, Output) --- supervizer/CMakeLists.txt | 14 ++++- .../include/{supervizer => }/CStockage.h | 14 +++-- supervizer/src/CStockage.cpp | 31 +++++----- .../CStockage.h~ => src/CStockage.cpp~} | 0 supervizer/src/supervizer.cpp | 59 +------------------ 5 files changed, 39 insertions(+), 79 deletions(-) rename supervizer/include/{supervizer => }/CStockage.h (81%) rename supervizer/{include/supervizer/CStockage.h~ => src/CStockage.cpp~} (100%) diff --git a/supervizer/CMakeLists.txt b/supervizer/CMakeLists.txt index bee0b48..9e808f1 100644 --- a/supervizer/CMakeLists.txt +++ b/supervizer/CMakeLists.txt @@ -190,9 +190,17 @@ include_directories( ## Add folders to be run by python nosetests # catkin_add_nosetests(test) -include_directories(include ${catkin_INCLUDE_DIRS}) - -add_executable(supervizer src/supervizer.cpp) +include_directories(include + + + ${catkin_INCLUDE_DIRS}) + +add_executable(supervizer + src/supervizer.cpp + src/CStockage.cpp + ) target_link_libraries(supervizer ${catkin_LIBRARIES}) add_dependencies(supervizer supervizer_generate_messages_cpp) + + diff --git a/supervizer/include/supervizer/CStockage.h b/supervizer/include/CStockage.h similarity index 81% rename from supervizer/include/supervizer/CStockage.h rename to supervizer/include/CStockage.h index 2e2f1fd..410d36d 100644 --- a/supervizer/include/supervizer/CStockage.h +++ b/supervizer/include/CStockage.h @@ -1,3 +1,9 @@ + +#ifndef CSTOCKAGE +#define CSTOCKAGE + + + #include "ros/ros.h" #include "supervizer/beacon.h" #include "std_msgs/Time.h" @@ -7,8 +13,6 @@ #include using std::string; -using std::vector; -using namespace topic_tools; class CStockage{ private: @@ -22,10 +26,12 @@ class CStockage{ public: CStockage(void); - CStockage(string, string, ); + CStockage(string, string, string); ~CStockage(void); - void callback(const std_msgs::Time); + void callback(const std_msgs::Time&); void subscribe(void); void transmission(void); void repub(void); }; + +#endif \ No newline at end of file diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp index 2c3bbd8..523d2a9 100644 --- a/supervizer/src/CStockage.cpp +++ b/supervizer/src/CStockage.cpp @@ -1,40 +1,41 @@ -#include "supervizer.h" +#include "CStockage.h" -CStockage(void) - :m_sName(""),m_sTopic_In("input"),m_sTopic_Out,m_bState(false) +CStockage::CStockage(void) + :m_sName("default"),m_sTopic_In("input"),m_sTopic_Out("output"),m_bState(false) { m_tTps_Reception.data = ros::Time(0); - m_dDead_line.data= ros::Duration(0); + m_dDead_line.data= ros::Duration(60); } - CStockage(void) - :m_sName(""),m_sTopic_In("input"),m_sTopic_Out,m_bState(false) + CStockage::CStockage(string sName, string sTopic_In, string sTopic_Out) + :m_sName(sName),m_sTopic_In(sTopic_In),m_sTopic_Out(sTopic_Out),m_bState(false) { - m_tTps_Reception.data = ros::Time(0); - m_dDead_line.data= ros::Duration(0); + m_tTps_Reception .data = ros::Time::now(); + m_dDead_line.data= ros::Duration(60); } -~CStockage(void) +CStockage::~CStockage(void) { } -void callback(const std_msgs::Time &msg) +void CStockage::callback(const std_msgs::Time &msg) { + //TODO Adapter aux echanges complets ROS_INFO_STREAM("Temps :"<m_tTps_Reception); } -void subscribe() +void CStockage::subscribe() { - m_subEch = g_node->subscribe(m_sTopic_In, 10, &CStockage::callback,this); + m_subEch = m_nohNode.subscribe(m_sTopic_In, 10, &CStockage::callback,this); } -void repub(void) +void CStockage::repub(void) { //TODO Réecrire pour le message complet this->m_pubEch.publish(m_tTps_Reception); } -void transmission(void) +void CStockage::transmission(void) { //TODO adapter au vrai message - m_pubEch = g_node->advertise(m_sTopic_Out, 1000); + m_pubEch = m_nohNode.advertise(m_sTopic_Out, 1000); ros::Rate loop_rate(1000); diff --git a/supervizer/include/supervizer/CStockage.h~ b/supervizer/src/CStockage.cpp~ similarity index 100% rename from supervizer/include/supervizer/CStockage.h~ rename to supervizer/src/CStockage.cpp~ diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 5af2fbb..3224771 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -5,70 +5,15 @@ #include #include "topic_tools/shape_shifter.h" #include "topic_tools/parse.h" +#include "CStockage.h" #include using std::string; using std::vector; using namespace topic_tools; -ros::NodeHandle *g_node = NULL; -class CSupervizer{ -private: - string m_sName, m_sTopic; - bool m_bState; - std_msgs::Time m_tTps_Reception; - std_msgs::Duration m_dDead_line; - ros::Publisher m_pubEch; - ros::Subscriber m_subEch; -public: - CSupervizer(void) - :m_sName(""),m_sTopic(""),m_bState(false) - { - m_tTps_Reception.data = ros::Time(0); - m_dDead_line.data= ros::Duration(0); - } - //CSupervizer(void); - ~CSupervizer(void) - { - } - void callback(const std_msgs::Time &msg) - { - ROS_INFO_STREAM("Temps :"<m_tTps_Reception); - } - void subscribe() - { - m_subEch = g_node->subscribe("input", 10, &CSupervizer::callback,this); - } - void transmission(void) - { - m_pubEch = g_node->advertise("input", 1000); +ros::NodeHandle* g_node; - ros::Rate loop_rate(1000); - - while (ros::ok()) - { - - std_msgs::Time msg; - - - msg.data = m_tTps_Reception.data + ros::Duration(1); - - ROS_INFO_STREAM("Time : " << msg.data); - - /** - * The publish() function is how you send messages. The parameter - * is the message object. The type of this object must agree with the type - * given as a template parameter to the advertise<>() call, as was done - * in the constructor above. - * - */ - this->m_pubEch.publish(msg); - //TODO looprate - ros::spinOnce(); - - } - } -}; /* void transmission(void) { From 8255b6b5bfb7c1c43f2d0340adf39d62777f2c1d Mon Sep 17 00:00:00 2001 From: french1802 Date: Wed, 13 Jul 2016 16:15:28 +0200 Subject: [PATCH 06/13] classe fini pour le test + test fait la classe input passe --- supervizer/src/supervizer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 3224771..4ac1719 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -62,13 +62,13 @@ void reception(ros::NodeHandle* pN) int main(int argc, char **argv) { ros::init(argc, argv, "supervizer"); - + CStockage S1("Yolo","input", "output"); + S1.subscribe(); + ros::NodeHandle n; g_node = &n; reception(&n); - - - + ros::spin(); return 0; } From 7a8b94583f230ffe4557826d211e995b35f1d99d Mon Sep 17 00:00:00 2001 From: french1802 Date: Fri, 15 Jul 2016 10:51:24 +0200 Subject: [PATCH 07/13] =?UTF-8?q?Commit=20du=2014/07=20oubli=C3=A9=20ajout?= =?UTF-8?q?=20d'une=20node=20de=20test=20et=20insertion=20de=20publishers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- supervizer/CMakeLists.txt | 5 + supervizer/CMakeLists.txt~ | 191 --------------------------------- supervizer/package.xml~ | 56 ---------- supervizer/src/CStockage.cpp~ | 1 - supervizer/src/node_test.cpp | 65 +++++++++++ supervizer/src/supervizer.cpp | 7 +- supervizer/src/supervizer.cpp~ | 62 ----------- 7 files changed, 74 insertions(+), 313 deletions(-) delete mode 100644 supervizer/CMakeLists.txt~ delete mode 100644 supervizer/package.xml~ delete mode 100644 supervizer/src/CStockage.cpp~ create mode 100644 supervizer/src/node_test.cpp delete mode 100644 supervizer/src/supervizer.cpp~ diff --git a/supervizer/CMakeLists.txt b/supervizer/CMakeLists.txt index 9e808f1..702674a 100644 --- a/supervizer/CMakeLists.txt +++ b/supervizer/CMakeLists.txt @@ -202,5 +202,10 @@ add_executable(supervizer target_link_libraries(supervizer ${catkin_LIBRARIES}) add_dependencies(supervizer supervizer_generate_messages_cpp) +add_executable(node_test + src/node_test.cpp + ) +target_link_libraries(node_test ${catkin_LIBRARIES}) +add_dependencies(node_test supervizer_generate_messages_cpp) diff --git a/supervizer/CMakeLists.txt~ b/supervizer/CMakeLists.txt~ deleted file mode 100644 index ab4be26..0000000 --- a/supervizer/CMakeLists.txt~ +++ /dev/null @@ -1,191 +0,0 @@ -cmake_minimum_required(VERSION 2.8.3) -project(supervizer) - -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages -find_package(catkin REQUIRED COMPONENTS - roscpp - rospy - std_msgs - message_generation -) - -## System dependencies are found with CMake's conventions -# find_package(Boost REQUIRED COMPONENTS system) - - -## Uncomment this if the package has a setup.py. This macro ensures -## modules and global scripts declared therein get installed -## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html -# catkin_python_setup() - -################################################ -## Declare ROS messages, services and actions ## -################################################ - -## To declare and build messages, services or actions from within this -## package, follow these steps: -## * Let MSG_DEP_SET be the set of packages whose message types you use in -## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). -## * In the file package.xml: -## * add a build_depend tag for "message_generation" -## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET -## * If MSG_DEP_SET isn't empty the following dependency has been pulled in -## but can be declared for certainty nonetheless: -## * add a run_depend tag for "message_runtime" -## * In this file (CMakeLists.txt): -## * add "message_generation" and every package in MSG_DEP_SET to -## find_package(catkin REQUIRED COMPONENTS ...) -## * add "message_runtime" and every package in MSG_DEP_SET to -## catkin_package(CATKIN_DEPENDS ...) -## * uncomment the add_*_files sections below as needed -## and list every .msg/.srv/.action file to be processed -## * uncomment the generate_messages entry below -## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) - -## Generate messages in the 'msg' folder - add_message_files( - FILES - beacon.msg - #Reste a mettre les messages propres à chaque fichier" - # - # - ) - -## Generate services in the 'srv' folder -# add_service_files( -# FILES -# Service1.srv -# Service2.srv -# ) - -## Generate actions in the 'action' folder -# add_action_files( -# FILES -# Action1.action -# Action2.action -# ) - -## Generate added messages and services with any dependencies listed here - generate_messages( - DEPENDENCIES - std_msgs - ) - -################################################ -## Declare ROS dynamic reconfigure parameters ## -################################################ - -## To declare and build dynamic reconfigure parameters within this -## package, follow these steps: -## * In the file package.xml: -## * add a build_depend and a run_depend tag for "dynamic_reconfigure" -## * In this file (CMakeLists.txt): -## * add "dynamic_reconfigure" to -## find_package(catkin REQUIRED COMPONENTS ...) -## * uncomment the "generate_dynamic_reconfigure_options" section below -## and list every .cfg file to be processed - -## Generate dynamic reconfigure parameters in the 'cfg' folder -# generate_dynamic_reconfigure_options( -# cfg/DynReconf1.cfg -# cfg/DynReconf2.cfg -# ) - -################################### -## catkin specific configuration ## -################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if you package contains header files -## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also need -catkin_package( - INCLUDE_DIRS include - LIBRARIES supervizer - CATKIN_DEPENDS roscpp rospy std_msgs message_runtim - DEPENDS system_lib -) - -########### -## Build ## -########### - -## Specify additional locations of header files -## Your package locations should be listed before other locations -# include_directories(include) -include_directories( - ${catkin_INCLUDE_DIRS} -) - -## Declare a C++ library -# add_library(supervizer -# src/${PROJECT_NAME}/supervizer.cpp -# ) - -## Add cmake target dependencies of the library -## as an example, code may need to be generated before libraries -## either from message generation or dynamic reconfigure -# add_dependencies(supervizer ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) - -## Declare a C++ executable -# add_executable(supervizer_node src/supervizer_node.cpp) - -## Add cmake target dependencies of the executable -## same as for the library above -# add_dependencies(supervizer_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) - -## Specify libraries to link a library or executable target against -# target_link_libraries(supervizer_node -# ${catkin_LIBRARIES} -# ) - -############# -## Install ## -############# - -# all install targets should use catkin DESTINATION variables -# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html - -## Mark executable scripts (Python etc.) for installation -## in contrast to setup.py, you can choose the destination -# install(PROGRAMS -# scripts/my_python_script -# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark executables and/or libraries for installation -# install(TARGETS supervizer supervizer_node -# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark cpp header files for installation -# install(DIRECTORY include/${PROJECT_NAME}/ -# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} -# FILES_MATCHING PATTERN "*.h" -# PATTERN ".svn" EXCLUDE -# ) - -## Mark other files for installation (e.g. launch and bag files, etc.) -# install(FILES -# # myfile1 -# # myfile2 -# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} -# ) - -############# -## Testing ## -############# - -## Add gtest based cpp test target and link libraries -# catkin_add_gtest(${PROJECT_NAME}-test test/test_supervizer.cpp) -# if(TARGET ${PROJECT_NAME}-test) -# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) -# endif() - -## Add folders to be run by python nosetests -# catkin_add_nosetests(test) diff --git a/supervizer/package.xml~ b/supervizer/package.xml~ deleted file mode 100644 index 651391e..0000000 --- a/supervizer/package.xml~ +++ /dev/null @@ -1,56 +0,0 @@ - - - supervizer - 0.0.0 - The supervizer package - - - - - robotech - - - - - - TODO - - - - - - - - - - - - - - - - - - - - - - - - - - catkin - roscpp - rospy - std_msgs - roscpp - rospy - std_msgs - - - - - - - - \ No newline at end of file diff --git a/supervizer/src/CStockage.cpp~ b/supervizer/src/CStockage.cpp~ deleted file mode 100644 index 4bcfe98..0000000 --- a/supervizer/src/CStockage.cpp~ +++ /dev/null @@ -1 +0,0 @@ -d diff --git a/supervizer/src/node_test.cpp b/supervizer/src/node_test.cpp new file mode 100644 index 0000000..95b9398 --- /dev/null +++ b/supervizer/src/node_test.cpp @@ -0,0 +1,65 @@ +#include "ros/ros.h" +#include "supervizer/beacon.h" +#include "std_msgs/Time.h" +#include "std_msgs/Duration.h" +#include + + +#include +using std::string; +using std::vector; + +std::string g_sNomNode, g_sNomIn, g_sNomOut; +ros::NodeHandle* g_nhNode; +void transmission_stockage(void) +{ + + ros::Publisher chatter_pub = g_nhNode->advertise(g_sNomOut, 1000); + ROS_INFO_STREAM("Send time : " <advertise("beacon", 1000); + ROS_INFO_STREAM("Send beacon : " <subscribe(g_sNomIn, 10, chatterCallback); + ros::spin(); + + +} +int main(int argc, char **argv) + { + g_sNomNode = "node_test" + g_sNomOut = "Out_nt"; + g_sNomIn ="In_nt"; + ros::init(argc, argv, g_sNomNode_); + //TODO envoie et receptions de données + + ros::NodeHandle n; + g_nhNode = &n; + reception(&n); + + ros::Rate loop_rate(10); + + while (ros::ok()) + { + transmission_stockage(); + ros::spinOnce(); + loop_rate.sleep(); + } + } + return 0; +} \ No newline at end of file diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 4ac1719..68bbaba 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -50,7 +50,8 @@ std_msgs::String */ void chatterCallback(const supervizer::beacon::ConstPtr& msg) { - ROS_INFO("I heard: [%s] [%s] [%d] [%f] [%f]", msg->name.c_str(), msg->data_topic.c_str(), msg->state, msg->r_time.toSec(),msg->dead_line.toSec()); + ROS_INFO("I heard: [%s] [%s] [%d] [%f] [%f]", msg->name.c_str(), msg->data_topic.c_str(), + msg->state, msg->r_time.toSec(),msg->dead_line.toSec()); } void reception(ros::NodeHandle* pN) { @@ -63,8 +64,8 @@ int main(int argc, char **argv) { ros::init(argc, argv, "supervizer"); CStockage S1("Yolo","input", "output"); - S1.subscribe(); - + S1.subscribe(); // lance la souscription au topic input lié lors de la construction de l'objet + //TODO gestion des vecteurs, reception du beacon et redirect ros::NodeHandle n; g_node = &n; reception(&n); diff --git a/supervizer/src/supervizer.cpp~ b/supervizer/src/supervizer.cpp~ deleted file mode 100644 index 3219167..0000000 --- a/supervizer/src/supervizer.cpp~ +++ /dev/null @@ -1,62 +0,0 @@ -#include "ros/ros.h" -#include "std_msgs/supervizer.h" - -#include -/* -void transmission(void) -{ - ros::Publisher chatter_pub = n.advertise("chatter", 1000); - - ros::Rate loop_rate(10); - - int count = 0; - while (ros::ok()) - { - - std_msgs::String msg; - - std::stringstream ss; - ss << "hello world " << count; - msg.data = ss.str(); - - ROS_INFO("%s", msg.data.c_str()); - - /** - * The publish() function is how you send messages. The parameter - * is the message object. The type of this object must agree with the type - * given as a template parameter to the advertise<>() call, as was done - * in the constructor above. - * - chatter_pub.publish(msg); - - ros::spinOnce(); - - loop_rate.sleep(); - ++count; - } -} -*/ -void chatterCallback(const std_msgs::beacon::ConstPtr& msg) -{ - ROS_INFO("I heard: [%s]", msg->data.c_str()); -} -void reception() -{ - ros::Subscriber sub = n.subscribe("beacon", 1000, chatterCallback); - ros::spin(); - - -} -int main(int argc, char **argv) -{ - - ros::init(argc, argv, "supervizer"); - - ros::NodeHandle n; - - - - - - return 0; -} From 7b0aaaf5ee3ab25cdc2261c7083a27cef89c8a1f Mon Sep 17 00:00:00 2001 From: french1802 Date: Sat, 16 Jul 2016 09:20:46 +0200 Subject: [PATCH 08/13] finalisation node test pour temps + beacon && modification du message beacon pour la classe --- supervizer/msg/beacon.msg | 5 +++-- supervizer/src/node_test.cpp | 26 +++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/supervizer/msg/beacon.msg b/supervizer/msg/beacon.msg index f1c1f42..baf522b 100644 --- a/supervizer/msg/beacon.msg +++ b/supervizer/msg/beacon.msg @@ -1,5 +1,6 @@ string name time r_time int8 state -string data_topic -duration dead_line \ No newline at end of file +string In_topic +string Out_topic +duration dead_line diff --git a/supervizer/src/node_test.cpp b/supervizer/src/node_test.cpp index 95b9398..2001bc3 100644 --- a/supervizer/src/node_test.cpp +++ b/supervizer/src/node_test.cpp @@ -8,6 +8,8 @@ #include using std::string; using std::vector; +using namespace std; + std::string g_sNomNode, g_sNomIn, g_sNomOut; ros::NodeHandle* g_nhNode; @@ -21,10 +23,27 @@ void transmission_stockage(void) void transmission_beacon(void) { - supervizer::beacon:: + supervizer::beacon msg; ros::Publisher chatter_pub = g_nhNode->advertise("beacon", 1000); - ROS_INFO_STREAM("Send beacon : " < Date: Sat, 16 Jul 2016 11:15:01 +0200 Subject: [PATCH 09/13] =?UTF-8?q?completion=20du=20superviseur,=20completi?= =?UTF-8?q?on=20de=20la=20classe=20CStockage=20pour=20le=20constructeur=20?= =?UTF-8?q?et=20modification=20des=20donn=C3=A9es=20membres,=20finalisatio?= =?UTF-8?q?n=20des=20transmitions=20du=20beacon=20pour=20la=20node=20de=20?= =?UTF-8?q?test=20et=20le=20superviseur=20et=20insertion=20du=20tableau=20?= =?UTF-8?q?vectoriel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- supervizer/include/CStockage.h | 6 ++++- supervizer/src/CStockage.cpp | 5 ++-- supervizer/src/node_test.cpp | 4 +-- supervizer/src/supervizer.cpp | 48 +++++++++++++++++++++++++++------- 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/supervizer/include/CStockage.h b/supervizer/include/CStockage.h index 410d36d..b5d1d46 100644 --- a/supervizer/include/CStockage.h +++ b/supervizer/include/CStockage.h @@ -26,12 +26,16 @@ class CStockage{ public: CStockage(void); - CStockage(string, string, string); + CStockage(string, string, string, ros::Time, ros::Duration); ~CStockage(void); void callback(const std_msgs::Time&); void subscribe(void); void transmission(void); void repub(void); + void setTime(ros::Time temps){m_tTps_Reception = temps}; + void setDuration(ros::Duration dur){m_dDead_line = dur}; + void setState(bool etat){m_bState = etat}; + }; #endif \ No newline at end of file diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp index 523d2a9..57f40ed 100644 --- a/supervizer/src/CStockage.cpp +++ b/supervizer/src/CStockage.cpp @@ -6,11 +6,12 @@ CStockage::CStockage(void) m_tTps_Reception.data = ros::Time(0); m_dDead_line.data= ros::Duration(60); } - CStockage::CStockage(string sName, string sTopic_In, string sTopic_Out) + CStockage::CStockage(string sName, string sTopic_In, string sTopic_Out, ros::Time temps = ros::Time::now(), ros::Duration dead_line = ros::Duration(60)) :m_sName(sName),m_sTopic_In(sTopic_In),m_sTopic_Out(sTopic_Out),m_bState(false) { - m_tTps_Reception .data = ros::Time::now(); + m_tTps_Reception.data = ros::Time::now(); m_dDead_line.data= ros::Duration(60); + this->subscribe(); } CStockage::~CStockage(void) { diff --git a/supervizer/src/node_test.cpp b/supervizer/src/node_test.cpp index 2001bc3..2986d76 100644 --- a/supervizer/src/node_test.cpp +++ b/supervizer/src/node_test.cpp @@ -80,6 +80,6 @@ int main(int argc, char **argv) ros::spinOnce(); loop_rate.sleep(); } - } + return 0; -} \ No newline at end of file + } \ No newline at end of file diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 68bbaba..6dbc65d 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -12,9 +12,11 @@ using std::string; using std::vector; using namespace topic_tools; +std::vector g_tab_nodes; ros::NodeHandle* g_node; /* +***** Le superviseur ne publie rien de lui meme ****** void transmission(void) { ros::Publisher chatter_pub = n.advertise("chatter", 1000); @@ -50,26 +52,54 @@ std_msgs::String */ void chatterCallback(const supervizer::beacon::ConstPtr& msg) { - ROS_INFO("I heard: [%s] [%s] [%d] [%f] [%f]", msg->name.c_str(), msg->data_topic.c_str(), - msg->state, msg->r_time.toSec(),msg->dead_line.toSec()); + ROS_INFO("I heard: [%s] [%s] [%s] [%d] [%f] [%f]", msg->name.c_str(), msg->In_topic.c_str(), + msg->Out_topic.c_str, msg->state, msg->r_time.toSec(),msg->dead_line.toSec()); + + if(g_tab_nodes.size() != 0) + { + int taille = g_tab_nodes.size(),i=0; + while(iname) + { + i++; + } + + + if(g_tab_nodes[taille].name == msg->name) + { + g_tab_nodes[taille].setTime(msg->r_time); + g_tab_nodes[taille].setDuration(msg->dead_line); + g_tab_nodes[taille].setState(msg->state); + } + else + { + g_tab_nodes.push_back(CStockage(msg->name.c_str,msg->Out_topic.c_str, msg->In_topic.c_str, + msg->r_time, msg->dead_line)); + } + } + else + { + g_tab_nodes.push_back(CStockage(msg->name.c_str,msg->Out_topic.c_str, msg->In_topic.c_str, + msg->r_time, msg->dead_line)); + } + } void reception(ros::NodeHandle* pN) { ros::Subscriber sub = pN->subscribe("beacon", 10, chatterCallback); - ros::spin(); + } int main(int argc, char **argv) { ros::init(argc, argv, "supervizer"); - CStockage S1("Yolo","input", "output"); - S1.subscribe(); // lance la souscription au topic input lié lors de la construction de l'objet - //TODO gestion des vecteurs, reception du beacon et redirect + ros::NodeHandle n; g_node = &n; - reception(&n); - ros::spin(); - + while(ros::ok()) + { + reception(&n); + ros::spinOnce(); + } return 0; } From a64a1277b32c13e23b348ae9d1a16d6b712c13c4 Mon Sep 17 00:00:00 2001 From: french1802 Date: Tue, 19 Jul 2016 11:24:41 +0200 Subject: [PATCH 10/13] debug fait pour la partie teste avec une node --- supervizer/include/CStockage.h | 11 ++++++++--- supervizer/src/CStockage.cpp | 4 ++-- supervizer/src/node_test.cpp | 19 +++++++++++-------- supervizer/src/supervizer.cpp | 20 +++++++++++--------- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/supervizer/include/CStockage.h b/supervizer/include/CStockage.h index b5d1d46..708c953 100644 --- a/supervizer/include/CStockage.h +++ b/supervizer/include/CStockage.h @@ -32,9 +32,14 @@ class CStockage{ void subscribe(void); void transmission(void); void repub(void); - void setTime(ros::Time temps){m_tTps_Reception = temps}; - void setDuration(ros::Duration dur){m_dDead_line = dur}; - void setState(bool etat){m_bState = etat}; + + void setTime(ros::Time temps){m_tTps_Reception.data = temps;}; + void setDuration(ros::Duration dur){m_dDead_line.data = dur;}; + void setState(bool etat){m_bState = etat;}; + + ros::Time getTime(void){return m_tTps_Reception.data;}; + ros::Duration getDuration(void){return m_dDead_line.data;}; + std::string getName(void){return m_sName;}; }; diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp index 57f40ed..e3d8165 100644 --- a/supervizer/src/CStockage.cpp +++ b/supervizer/src/CStockage.cpp @@ -9,8 +9,8 @@ CStockage::CStockage(void) CStockage::CStockage(string sName, string sTopic_In, string sTopic_Out, ros::Time temps = ros::Time::now(), ros::Duration dead_line = ros::Duration(60)) :m_sName(sName),m_sTopic_In(sTopic_In),m_sTopic_Out(sTopic_Out),m_bState(false) { - m_tTps_Reception.data = ros::Time::now(); - m_dDead_line.data= ros::Duration(60); + m_tTps_Reception.data = temps; + m_dDead_line.data= dead_line; this->subscribe(); } CStockage::~CStockage(void) diff --git a/supervizer/src/node_test.cpp b/supervizer/src/node_test.cpp index 2986d76..d4903e6 100644 --- a/supervizer/src/node_test.cpp +++ b/supervizer/src/node_test.cpp @@ -18,7 +18,9 @@ void transmission_stockage(void) ros::Publisher chatter_pub = g_nhNode->advertise(g_sNomOut, 1000); ROS_INFO_STREAM("Send time : " < using std::string; using std::vector; using namespace topic_tools; - +using namespace std; std::vector g_tab_nodes; ros::NodeHandle* g_node; @@ -52,19 +53,19 @@ std_msgs::String */ void chatterCallback(const supervizer::beacon::ConstPtr& msg) { - ROS_INFO("I heard: [%s] [%s] [%s] [%d] [%f] [%f]", msg->name.c_str(), msg->In_topic.c_str(), - msg->Out_topic.c_str, msg->state, msg->r_time.toSec(),msg->dead_line.toSec()); + ROS_INFO_STREAM("I heard: "<< msg->name.c_str() <<" " << msg->In_topic.c_str() << " " + << msg->Out_topic.c_str()<< " " << msg->state<< " "<r_time.toSec()<< " " << msg->dead_line.toSec()<name) + while(iname.c_str()) { i++; } - if(g_tab_nodes[taille].name == msg->name) + if(g_tab_nodes[taille].getName() == msg->name.c_str()) { g_tab_nodes[taille].setTime(msg->r_time); g_tab_nodes[taille].setDuration(msg->dead_line); @@ -72,14 +73,15 @@ std_msgs::String } else { - g_tab_nodes.push_back(CStockage(msg->name.c_str,msg->Out_topic.c_str, msg->In_topic.c_str, - msg->r_time, msg->dead_line)); + CStockage S1(msg->name.c_str(),msg->Out_topic.c_str(), msg->In_topic.c_str(),msg->r_time, msg->dead_line); + g_tab_nodes.push_back(S1); } } else { - g_tab_nodes.push_back(CStockage(msg->name.c_str,msg->Out_topic.c_str, msg->In_topic.c_str, - msg->r_time, msg->dead_line)); + CStockage S2 (msg->name.c_str(),msg->Out_topic.c_str(), msg->In_topic.c_str(), + msg->r_time, msg->dead_line); + g_tab_nodes.push_back(S2); } } From 38cac9a4b3da78ad95956d655e23e593cd63cd4e Mon Sep 17 00:00:00 2001 From: french1802 Date: Tue, 19 Jul 2016 14:01:01 +0200 Subject: [PATCH 11/13] =?UTF-8?q?Suite=20visite=20du=20super=20tuteu=20:p?= =?UTF-8?q?=20Fonctionnel=20sur=20les=20connexions=20mais=20probleme=20de?= =?UTF-8?q?=20stockage=20de=20donn=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- supervizer/include/CStockage.h | 2 +- supervizer/src/CStockage.cpp | 7 +++++-- supervizer/src/node_test.cpp | 33 ++++++++++++++++----------------- supervizer/src/supervizer.cpp | 32 +++++++++++++++++++------------- 4 files changed, 41 insertions(+), 33 deletions(-) diff --git a/supervizer/include/CStockage.h b/supervizer/include/CStockage.h index 708c953..a4c8ec1 100644 --- a/supervizer/include/CStockage.h +++ b/supervizer/include/CStockage.h @@ -26,7 +26,7 @@ class CStockage{ public: CStockage(void); - CStockage(string, string, string, ros::Time, ros::Duration); + CStockage(string, string, string, ros::Time , ros::Duration); ~CStockage(void); void callback(const std_msgs::Time&); void subscribe(void); diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp index e3d8165..8d1359f 100644 --- a/supervizer/src/CStockage.cpp +++ b/supervizer/src/CStockage.cpp @@ -12,6 +12,7 @@ CStockage::CStockage(void) m_tTps_Reception.data = temps; m_dDead_line.data= dead_line; this->subscribe(); + m_pubEch = m_nohNode.advertise(m_sTopic_Out, 1000); } CStockage::~CStockage(void) { @@ -20,7 +21,9 @@ CStockage::~CStockage(void) void CStockage::callback(const std_msgs::Time &msg) { //TODO Adapter aux echanges complets - ROS_INFO_STREAM("Temps :"<m_tTps_Reception); + + ROS_INFO_STREAM("Temps :"<(m_sTopic_Out, 1000); + ros::Rate loop_rate(1000); diff --git a/supervizer/src/node_test.cpp b/supervizer/src/node_test.cpp index d4903e6..c61ea18 100644 --- a/supervizer/src/node_test.cpp +++ b/supervizer/src/node_test.cpp @@ -10,23 +10,25 @@ using std::string; using std::vector; using namespace std; - +ros::Publisher beacon_pub ; +ros::Publisher stockage_pub ; + std::string g_sNomNode, g_sNomIn, g_sNomOut; ros::NodeHandle* g_nhNode; void transmission_stockage(void) { - ros::Publisher chatter_pub = g_nhNode->advertise(g_sNomOut, 1000); - ROS_INFO_STREAM("Send time : " <advertise("beacon", 1000); msg.name = g_sNomNode; msg.r_time = ros::Time::now(); msg.state = true; @@ -44,9 +46,9 @@ void transmission_beacon(void) */ ros::Time now = ros ::Time::now(); ROS_INFO_STREAM("Send beacon :"<subscribe(g_sNomIn, 10, chatterCallback); - ros::spin(); - -} int main(int argc, char **argv) { g_sNomNode = "node_test"; @@ -69,12 +65,15 @@ int main(int argc, char **argv) g_sNomIn ="In_nt"; ros::init(argc, argv, g_sNomNode); //TODO envoie et receptions de données - + ros::NodeHandle n; g_nhNode = &n; - reception(&n); - - ros::Rate loop_rate(10); + beacon_pub = g_nhNode->advertise("beacon", 1000); + stockage_pub = g_nhNode->advertise(g_sNomOut, 1000); + + ros::Subscriber sub = g_nhNode->subscribe(g_sNomIn, 10, chatterCallback); + + ros::Rate loop_rate(1); while (ros::ok()) { diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index a37c922..5bed749 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -54,22 +54,22 @@ std_msgs::String void chatterCallback(const supervizer::beacon::ConstPtr& msg) { ROS_INFO_STREAM("I heard: "<< msg->name.c_str() <<" " << msg->In_topic.c_str() << " " - << msg->Out_topic.c_str()<< " " << msg->state<< " "<r_time.toSec()<< " " << msg->dead_line.toSec()<Out_topic.c_str()<< " " << (msg->state?"Actif!":"Idle!")<< " "<r_time.toSec()<< " " << msg->dead_line.toSec()<name.c_str()) + while(iname.c_str()) { i++; } - if(g_tab_nodes[taille].getName() == msg->name.c_str()) + if(g_tab_nodes[i].getName() == msg->name.c_str()) { - g_tab_nodes[taille].setTime(msg->r_time); - g_tab_nodes[taille].setDuration(msg->dead_line); - g_tab_nodes[taille].setState(msg->state); + g_tab_nodes[i].setTime(msg->r_time); + g_tab_nodes[i].setDuration(msg->dead_line); + g_tab_nodes[i].setState(msg->state); } else { @@ -85,22 +85,28 @@ std_msgs::String } } -void reception(ros::NodeHandle* pN) -{ - ros::Subscriber sub = pN->subscribe("beacon", 10, chatterCallback); - - -} int main(int argc, char **argv) { ros::init(argc, argv, "supervizer"); ros::NodeHandle n; g_node = &n; + ros::Subscriber sub = g_node->subscribe("beacon", 10, chatterCallback); + while(ros::ok()) { - reception(&n); + ros::Rate loop_rate(1); + if(g_tab_nodes.size() != 0) + { + int taille = g_tab_nodes.size(),i=0; + ROS_INFO("Taille vecteur : %d", taille); + { + g_tab_nodes[i].repub(); + i++; + } + } + loop_rate.sleep(); ros::spinOnce(); } return 0; From b045a8d53220d1108e3ff982a295c8e332c72cad Mon Sep 17 00:00:00 2001 From: french1802 Date: Tue, 26 Jul 2016 17:52:00 +0200 Subject: [PATCH 12/13] resolution probleme de stockage en passant sur un vecteur de pointeur sur des objets de type CStockage --- supervizer/include/CStockage.h | 15 +++++--- supervizer/src/CStockage.cpp | 18 ++++++---- supervizer/src/supervizer.cpp | 63 ++++++++++++++++++++-------------- 3 files changed, 60 insertions(+), 36 deletions(-) diff --git a/supervizer/include/CStockage.h b/supervizer/include/CStockage.h index a4c8ec1..c81d5dd 100644 --- a/supervizer/include/CStockage.h +++ b/supervizer/include/CStockage.h @@ -9,30 +9,35 @@ #include "std_msgs/Time.h" #include "std_msgs/Duration.h" #include - - +#include +#include #include -using std::string; +#include + +using std::string; +using namespace std; class CStockage{ private: string m_sName, m_sTopic_In, m_sTopic_Out; bool m_bState; + ros::Time essai; std_msgs::Time m_tTps_Reception; std_msgs::Duration m_dDead_line; ros::Publisher m_pubEch; ros::Subscriber m_subEch; - ros::NodeHandle m_nohNode; + ros::NodeHandle* m_nohNode; public: CStockage(void); - CStockage(string, string, string, ros::Time , ros::Duration); + CStockage(string, string, string, ros::Time , ros::Duration, ros::NodeHandle*); ~CStockage(void); void callback(const std_msgs::Time&); void subscribe(void); void transmission(void); void repub(void); + void setData(ros::Time temps){essai = temps;}; void setTime(ros::Time temps){m_tTps_Reception.data = temps;}; void setDuration(ros::Duration dur){m_dDead_line.data = dur;}; void setState(bool etat){m_bState = etat;}; diff --git a/supervizer/src/CStockage.cpp b/supervizer/src/CStockage.cpp index 8d1359f..77e1a8b 100644 --- a/supervizer/src/CStockage.cpp +++ b/supervizer/src/CStockage.cpp @@ -6,13 +6,15 @@ CStockage::CStockage(void) m_tTps_Reception.data = ros::Time(0); m_dDead_line.data= ros::Duration(60); } - CStockage::CStockage(string sName, string sTopic_In, string sTopic_Out, ros::Time temps = ros::Time::now(), ros::Duration dead_line = ros::Duration(60)) - :m_sName(sName),m_sTopic_In(sTopic_In),m_sTopic_Out(sTopic_Out),m_bState(false) + CStockage::CStockage(string sName, string sTopic_In, string sTopic_Out, + ros::Time temps = ros::Time::now(), ros::Duration dead_line = ros::Duration(60),ros::NodeHandle* pnh = NULL) + :m_sName(sName),m_sTopic_In(sTopic_In),m_sTopic_Out(sTopic_Out),m_bState(false),m_nohNode(pnh) { + essai = ros::Time(0); m_tTps_Reception.data = temps; m_dDead_line.data= dead_line; this->subscribe(); - m_pubEch = m_nohNode.advertise(m_sTopic_Out, 1000); + m_pubEch = m_nohNode->advertise(m_sTopic_Out, 1000); } CStockage::~CStockage(void) { @@ -21,19 +23,23 @@ CStockage::~CStockage(void) void CStockage::callback(const std_msgs::Time &msg) { //TODO Adapter aux echanges complets + // ROS_INFO_STREAM(endl<<"Reception : " << this->getName() << endl); + ros::Time tmp = msg.data; - ROS_INFO_STREAM("Temps :"<setData(tmp); + ROS_INFO_STREAM("Temps: "<< this->essai<<" Node :"<< this ->m_sName << " I/O : "<< m_sTopic_In << " "<< m_sTopic_Out); } void CStockage::subscribe() { - m_subEch = m_nohNode.subscribe(m_sTopic_In, 10, &CStockage::callback,this); + m_subEch = m_nohNode->subscribe(m_sTopic_In, 10,&CStockage::callback,this); } void CStockage::repub(void) { //TODO Réecrire pour le message complet - this->m_pubEch.publish(m_tTps_Reception); + ROS_INFO_STREAM("J'envoie de "<< this-> m_sName); + this->m_pubEch.publish(this->m_tTps_Reception); } void CStockage::transmission(void) diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 5bed749..808d5b6 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -13,7 +13,7 @@ using std::string; using std::vector; using namespace topic_tools; using namespace std; -std::vector g_tab_nodes; +std::vector g_tab_nodes; ros::NodeHandle* g_node; /* @@ -51,38 +51,45 @@ std_msgs::String } } */ - void chatterCallback(const supervizer::beacon::ConstPtr& msg) + void beaconCallback(const supervizer::beacon::ConstPtr& msg) { - ROS_INFO_STREAM("I heard: "<< msg->name.c_str() <<" " << msg->In_topic.c_str() << " " + ROS_INFO_STREAM("I heard: "<< msg->name.c_str() <<" " << msg->In_topic.c_str() << endl << msg->Out_topic.c_str()<< " " << (msg->state?"Actif!":"Idle!")<< " "<r_time.toSec()<< " " << msg->dead_line.toSec()<name.c_str()) + if(g_tab_nodes.size() != 0 && g_tab_nodes[i]->getName() == msg->name.c_str()) + { + ROS_INFO("Modification"); + g_tab_nodes[i]->setTime(msg->r_time); + ROS_INFO_STREAM("Temps enregistré " << g_tab_nodes[i]->getTime()); + g_tab_nodes[i]->setDuration(msg->dead_line); + g_tab_nodes[i]->setState(msg->state); + + ROS_INFO_STREAM("Ici on gere" << g_tab_nodes[i]->getName()); + research = true; + } + else if(g_tab_nodes.size()!= 0 && g_tab_nodes[i]->getName() != msg->name.c_str()) { + ROS_INFO("Test ++"); i++; } - - - if(g_tab_nodes[i].getName() == msg->name.c_str()) + else if (g_tab_nodes.size() == 0 || i>=taille) { - g_tab_nodes[i].setTime(msg->r_time); - g_tab_nodes[i].setDuration(msg->dead_line); - g_tab_nodes[i].setState(msg->state); + ROS_INFO("Ajout"); + CStockage* S2 = new CStockage(msg->name.c_str(),msg->Out_topic.c_str(), msg->In_topic.c_str(), + msg->r_time, msg->dead_line, g_node); + g_tab_nodes.push_back(S2); + research = true; + } - else + else { - CStockage S1(msg->name.c_str(),msg->Out_topic.c_str(), msg->In_topic.c_str(),msg->r_time, msg->dead_line); - g_tab_nodes.push_back(S1); - } + ROS_INFO("Error IF beacon callBack out of range"); + } } - else - { - CStockage S2 (msg->name.c_str(),msg->Out_topic.c_str(), msg->In_topic.c_str(), - msg->r_time, msg->dead_line); - g_tab_nodes.push_back(S2); - } + } @@ -92,7 +99,7 @@ int main(int argc, char **argv) ros::NodeHandle n; g_node = &n; - ros::Subscriber sub = g_node->subscribe("beacon", 10, chatterCallback); + ros::Subscriber sub = g_node->subscribe("beacon", 10, beaconCallback); while(ros::ok()) { @@ -102,12 +109,18 @@ int main(int argc, char **argv) int taille = g_tab_nodes.size(),i=0; ROS_INFO("Taille vecteur : %d", taille); { - g_tab_nodes[i].repub(); + g_tab_nodes[i]->repub(); i++; } } loop_rate.sleep(); ros::spinOnce(); } + while(g_tab_nodes.size()!=0) + { + delete(g_tab_nodes[g_tab_nodes.size()-1]); + g_tab_nodes.pop_back(); + + } return 0; } From 967d76cd82aaf3c38a65250bb012571be009114f Mon Sep 17 00:00:00 2001 From: french1802 Date: Mon, 8 Aug 2016 12:39:59 +0200 Subject: [PATCH 13/13] =?UTF-8?q?adaptation=20avec=20la=20nouvelle=20node?= =?UTF-8?q?=20de=20test=20deuxio=20et=20ajout=20d'une=20fr=C3=A8le=20esqui?= =?UTF-8?q?sse=20du=20rapport=20de=20fonctionnement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rapport fonctionnemet.odt | Bin 0 -> 15865 bytes supervizer/CMakeLists.txt | 5 ++ supervizer/src/deuxio.cpp | 88 ++++++++++++++++++++++++++++++++++ supervizer/src/supervizer.cpp | 2 +- 4 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 Rapport fonctionnemet.odt create mode 100644 supervizer/src/deuxio.cpp diff --git a/Rapport fonctionnemet.odt b/Rapport fonctionnemet.odt new file mode 100644 index 0000000000000000000000000000000000000000..fae66db412773ee2fa257d125e4276a18fbe5d51 GIT binary patch literal 15865 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 K9|w+KNB<88F8qc7 literal 0 HcmV?d00001 diff --git a/supervizer/CMakeLists.txt b/supervizer/CMakeLists.txt index 702674a..ab81ce6 100644 --- a/supervizer/CMakeLists.txt +++ b/supervizer/CMakeLists.txt @@ -209,3 +209,8 @@ target_link_libraries(node_test ${catkin_LIBRARIES}) add_dependencies(node_test supervizer_generate_messages_cpp) +add_executable(deuxio + src/deuxio.cpp + ) +target_link_libraries(deuxio ${catkin_LIBRARIES}) +add_dependencies(deuxio supervizer_generate_messages_cpp) \ No newline at end of file diff --git a/supervizer/src/deuxio.cpp b/supervizer/src/deuxio.cpp new file mode 100644 index 0000000..7e3bc3c --- /dev/null +++ b/supervizer/src/deuxio.cpp @@ -0,0 +1,88 @@ +#include "ros/ros.h" +#include "supervizer/beacon.h" +#include "std_msgs/Time.h" +#include "std_msgs/Duration.h" +#include + + +#include +using std::string; +using std::vector; +using namespace std; + +ros::Publisher beacon_pub ; +ros::Publisher stockage_pub ; +ros::Time tpsmemoire = ros::Time(0); +std::string g_sNomNode, g_sNomIn, g_sNomOut; +ros::NodeHandle* g_nhNode; +void transmission_stockage(void) +{ + + + std_msgs::Time msg; + msg.data = tpsmemoire; + stockage_pub.publish(msg); + ROS_INFO_STREAM("Send time : " <advertise("beacon", 1000); + stockage_pub = g_nhNode->advertise(g_sNomOut, 1000); + + ros::Subscriber sub = g_nhNode->subscribe(g_sNomIn, 10, chatterCallback); + + ros::Rate loop_rate(1); + + while (ros::ok()) + { + transmission_beacon(); + transmission_stockage(); + tpsmemoire = tpsmemoire +ros::Duration(100); + ros::spinOnce(); + loop_rate.sleep(); + } + + return 0; + } \ No newline at end of file diff --git a/supervizer/src/supervizer.cpp b/supervizer/src/supervizer.cpp index 808d5b6..1f0a58c 100644 --- a/supervizer/src/supervizer.cpp +++ b/supervizer/src/supervizer.cpp @@ -70,7 +70,7 @@ std_msgs::String ROS_INFO_STREAM("Ici on gere" << g_tab_nodes[i]->getName()); research = true; } - else if(g_tab_nodes.size()!= 0 && g_tab_nodes[i]->getName() != msg->name.c_str()) + else if(g_tab_nodes.size()!= 0 && igetName() != msg->name.c_str()) { ROS_INFO("Test ++"); i++;