diff --git a/algorithm_templates/CMakeLists.txt b/algorithm_templates/CMakeLists.txt index 1566d7f3447db22049c1a87d7d57f0f040a8cfa1..bf2362d94e42268e95b10a1257abbf54c94f015b 100644 --- a/algorithm_templates/CMakeLists.txt +++ b/algorithm_templates/CMakeLists.txt @@ -76,7 +76,7 @@ catkin_package( # ******************************************************************** include_directories(include) include_directories(${catkin_INCLUDE_DIRS}) -# include_directories(${<dependency>_INCLUDE_DIR}) +# include_directories(${<dependency>_INCLUDE_DIRS}) ## Declare a cpp library # add_library(${PROJECT_NAME} <list of source files>) @@ -88,7 +88,7 @@ add_executable(${PROJECT_NAME} src/template_alg.cpp src/template_alg_node.cpp) # Add the libraries # ******************************************************************** target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) -# target_link_libraries(${PROJECT_NAME} ${<dependency>_LIBRARY}) +# target_link_libraries(${PROJECT_NAME} ${<dependency>_LIBRARIES}) # ******************************************************************** # Add message headers dependencies diff --git a/algorithm_templates/template_alg.cfg b/algorithm_templates/template_alg.cfg index ac1db9d0e7d4dea9520332db055f8876a7a10ceb..d370aef588f019bcc99e8c9d07e710b100c1f9c2 100644 --- a/algorithm_templates/template_alg.cfg +++ b/algorithm_templates/template_alg.cfg @@ -37,7 +37,7 @@ from dynamic_reconfigure.parameter_generator_catkin import * gen = ParameterGenerator() -# Name Type Reconfiguration level Description Default Min Max -#gen.add("velocity_scale_factor", double_t, 0, "Maximum velocity scale factor", 0.5, 0.0, 1.0) +# Name Type Reconf.level Description Default Min Max +gen.add("rate", double_t, 0, "Main loop rate (Hz)", 10.0, 0.1, 1000.0) -exit(gen.generate(PACKAGE, "TemplateAlg", "Template")) +exit(gen.generate(PACKAGE, "TemplateAlg", "Template")) \ No newline at end of file diff --git a/algorithm_templates/template_alg_node.cpp b/algorithm_templates/template_alg_node.cpp index 9aaf175b9635de63a7384d5b432676790db19387..2748a0309b89b2dc1ffc7ceb2f12282d0e939549 100644 --- a/algorithm_templates/template_alg_node.cpp +++ b/algorithm_templates/template_alg_node.cpp @@ -4,7 +4,12 @@ TemplateNode::TemplateNode(void) : algorithm_base::IriBaseAlgorithm<TemplateAlg>() { //init class attributes if necessary - //this->setRate(10);//in [Hz] + if(!this->private_node_handle_.getParam("rate", this->config_.rate)) + { + ROS_WARN("TemplateNode::TemplateNode: param 'rate' not found"); + } + else + this->setRate(this->config_.rate); // [init publishers] @@ -26,6 +31,7 @@ TemplateNode::~TemplateNode(void) void TemplateNode::mainNodeThread(void) { + ROS_INFO("TemplateNode::mainNodeThread"); // [fill msg structures] // [fill srv structure and make request to the server] @@ -46,6 +52,8 @@ void TemplateNode::mainNodeThread(void) void TemplateNode::node_config_update(Config &config, uint32_t level) { this->alg_.lock(); + if(config.rate!=this->getRate()) + this->setRate(config.rate); this->config_=config; this->alg_.unlock(); } diff --git a/common_templates/LICENSE b/common_templates/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..65c5ca88a67c30becee01c5a8816d964b03862f9 --- /dev/null +++ b/common_templates/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/common_templates/README.md b/common_templates/README.md new file mode 100644 index 0000000000000000000000000000000000000000..61d155ef4946f953541f5ce5930347d20e4d03ad --- /dev/null +++ b/common_templates/README.md @@ -0,0 +1,18 @@ +# template + +## Description + +The template project description + +Developed at Institut de Robòtica i Informà tica Industrial (IRI, CSIC-UPC) (www.iri.upc.edu) +Contact: labrobotica@iri.upc.edu + +## Installation + +Clone the package inside a ROS workspace, although it will normally come within a rosinstall file. + +## How to use it + +- Standalone test + + `roslaunch template test.launch` \ No newline at end of file diff --git a/common_templates/node.launch b/common_templates/node.launch new file mode 100644 index 0000000000000000000000000000000000000000..8dd68bb77fff1a596976d42112ad382d69754e7a --- /dev/null +++ b/common_templates/node.launch @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<launch> + + <arg name="node_name" default="template"/> + <arg name="output" default="screen"/> + <arg name="launch_prefix" default=""/> + <arg name="config_file" default="$(find template)/config/params.yaml"/> + <!-- <arg name="topic_name" default="new_topic_name"/> --> + + <node name="$(arg node_name)" + pkg ="template" + type="template" + output="$(arg output)" + launch-prefix="$(arg launch_prefix)"> + <rosparam file="$(arg config_file)" command="load"/> + <!--<remap from="~/topic" to="$(arg topic_name)"/>--> + </node> + +</launch> \ No newline at end of file diff --git a/common_templates/params.yaml b/common_templates/params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b0ca445c9073d619a64ce9fdb5d390018783d3cc --- /dev/null +++ b/common_templates/params.yaml @@ -0,0 +1 @@ +rate: 10 \ No newline at end of file diff --git a/common_templates/test.launch b/common_templates/test.launch new file mode 100644 index 0000000000000000000000000000000000000000..8be738778f4fdc0d8c47374c38da981a6ffcc973 --- /dev/null +++ b/common_templates/test.launch @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<launch> + + <arg name="output" default="screen"/> + <arg name="launch_prefix" default=""/> + <arg name="dr" default="true"/> + + <include file="$(find template)/launch/node.launch"> + <arg name="node_name" value="template"/> + <arg name="output" value="$(arg output)"/> + <arg name="launch_prefix" value="$(arg launch_prefix)"/> + </include> + + <node name="rqt_reconfigure_template" + pkg ="rqt_reconfigure" + type="rqt_reconfigure" + if ="$(arg dr)" + args="template"> + </node> + +</launch> \ No newline at end of file diff --git a/create_algorithm_package.sh b/create_algorithm_package.sh index b7ad096a7fb46c8cf22915852433e73e8bff9c61..68d13cb5ffa813b2f177a4f5d95e1a6fc2ceed4e 100755 --- a/create_algorithm_package.sh +++ b/create_algorithm_package.sh @@ -173,9 +173,31 @@ sed -e "s/template/${project_name}/g" \ -e "s/Template/${basename}/g" <${temps_folder}/template_alg.cfg >"${project_name}/cfg/${basename}.cfg" eval "chmod 775 ${project_name}/cfg/${basename}.cfg" echo "Creating ${cfg_filename}.cfg file..." +echo "" ################################################################################ -echo "" + +################################################################################ +#create launch/config directory +mkdir -p ${project_name}/launch/ + +sed -e "s/template/${project_name}/g" <${IRI_ROS_SCRIPTS_PATH}/common_templates/node.launch >"${project_name}/launch/node.launch" +sed -e "s/template/${project_name}/g" <${IRI_ROS_SCRIPTS_PATH}/common_templates/test.launch >"${project_name}/launch/test.launch" + +mkdir -p ${project_name}/config/ +cp ${IRI_ROS_SCRIPTS_PATH}/common_templates/params.yaml ${project_name}/config/params.yaml +################################################################################ + + +################################################################################ +#add license and readme +cp ${IRI_ROS_SCRIPTS_PATH}/common_templates/LICENSE ${project_name}/LICENSE + +sed -e "s/template/${project_name}/g" < ${IRI_ROS_SCRIPTS_PATH}/common_templates/README.md > "${project_name}/README.md" +################################################################################ + + +################################################################################ echo "" echo "Project ${project_name} has been successfully created!!" @@ -185,5 +207,4 @@ popd # WET goto_catkin_workspace -catkin_make --only-pkg-with-deps ${project_name} - +catkin_make --only-pkg-with-deps ${project_name} \ No newline at end of file diff --git a/create_driver_package.sh b/create_driver_package.sh index 72a6d87c5de34568c4ecca87a541bab3920fc992..109d76caae1bdfebeb5ff263087e442264c2d9ef 100755 --- a/create_driver_package.sh +++ b/create_driver_package.sh @@ -175,9 +175,22 @@ sed -e "s/template_driver/${driver_filename}/g" \ -e "s/Template/${basename}/g" <${IRI_ROS_SCRIPTS_PATH}/driver_templates/template_driver.cfg >"${project_name}/cfg/${basename}.cfg" eval "chmod 775 ${project_name}/cfg/${basename}.cfg" echo "Creating ${basename}.cfg file..." +echo "" ################################################################################ ++#create launch directory ++mkdir -p ${project_name}/launch/ + +-echo "" ++sed -e "s/template/${project_name}/g" <${temps_folder}/node.launch >"${project_name}/launch/node.launch" ++sed -e "s/template/${project_name}/g" <${temps_folder}/test.launch >"${project_name}/launch/test.launch" ++################################################################################ ++#add license and readme ++cp ${IRI_ROS_SCRIPTS_PATH}/common_templates/LICENSE ${project_name}/LICENSE ++ ++sed -e "s/template/${project_name}/g" < ${temps_folder}/README.md > "${project_name}/README.md" ++ ++################################################################################ -echo "" echo "" echo "Project ${project_name} has been successfully created!!" diff --git a/driver_templates/CMakeLists.txt b/driver_templates/CMakeLists.txt index 8cd199604b546a7165d1c354dfdfd84c9578e81f..800a07b2189b46bc2764d3ea459ce36fc204afa5 100644 --- a/driver_templates/CMakeLists.txt +++ b/driver_templates/CMakeLists.txt @@ -76,7 +76,7 @@ catkin_package( # ******************************************************************** include_directories(include) include_directories(${catkin_INCLUDE_DIRS}) -# include_directories(${<dependency>_INCLUDE_DIR}) +# include_directories(${<dependency>_INCLUDE_DIRS}) ## Declare a cpp library # add_library(${PROJECT_NAME} <list of source files>) @@ -88,7 +88,7 @@ add_executable(${PROJECT_NAME} src/template_driver.cpp src/template_driver_node. # Add the libraries # ******************************************************************** target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}) -# target_link_libraries(${PROJECT_NAME} ${<dependency>_LIBRARY}) +# target_link_libraries(${PROJECT_NAME} ${<dependency>_LIBRARIES}) # ******************************************************************** # Add message headers dependencies