From 4477ed29d36bff92482479692078c63dace7188e Mon Sep 17 00:00:00 2001 From: fherrero <fherrero@iri.upc.edu> Date: Thu, 11 Jan 2018 16:13:28 +0100 Subject: [PATCH] Changed script names: added 'topic' and 'service' --- add_service_server_client.sh | 121 +++++++++++++++++++++++++ add_topic_publisher_subscriber.sh | 145 ++++++++++++++++++++++++++++++ 2 files changed, 266 insertions(+) create mode 100755 add_service_server_client.sh create mode 100755 add_topic_publisher_subscriber.sh diff --git a/add_service_server_client.sh b/add_service_server_client.sh new file mode 100755 index 0000000..d8321b6 --- /dev/null +++ b/add_service_server_client.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +# WET + +# check wether the scripts path environment variable has been defined +scripts_path=`echo "${IRI_ROS_SCRIPTS_PATH}"` +if [[ -z "${scripts_path}" ]] +then + echo "The scripts path environment variable has not been defined. Please see the wiki documentation for instructions on how to create it." + exit +else + echo "The scripts path environment variable has been properly defined." +fi + +source "${IRI_ROS_SCRIPTS_PATH}/libraries/scripts_library.sh" +source "${IRI_ROS_SCRIPTS_PATH}/libraries/create_server.sh" +source "${IRI_ROS_SCRIPTS_PATH}/libraries/create_client.sh" + +check_libraries +check_templates + +echo "" +echo "/*********************************************/" +echo "/* Creating New ROS Server/Client */" +echo "/*********************************************/" + +server_client= +ros_pkg= +service_name= +srv_file= + +#check for input project name paramenter +while getopts “:o:p:s:m:†OPTION +do + case $OPTION in + o) + server_client=$OPTARG + ;; + p) + ros_pkg=$OPTARG + ;; + s) + service_name=$OPTARG + ;; + m) + srv_file=$OPTARG + ;; + ?) + echo "invalid input argument ${OPTION}" + kill_exit "Usage: add_service_server_client.sh -o [server,client] -p ros_pkg -s service_name -m service.srv" + exit + ;; + esac +done + +#check if publisher name parameter is filled up +if [ ! "${server_client}" ] || [ ! "${ros_pkg}" ] || [ ! "${service_name}" ] || [ ! "${srv_file}" ] +then + echo "Missing input parameters..." + kill_exit "Usage: add_service_server_client.sh -o [server,client] -p ros_pkg -s service_name -m service.srv" +fi + +#check server client parameter +if [[ ! "${server_client}" = "server" ]] && [[ ! "${server_client}" = "client" ]] +then + kill_exit "First parameter must be either \"server\" or \"client\", aborting ..." +fi + +#check if package exists +check_package "${ros_pkg}" +if [[ ${pkg_exists} == true ]] +then + roscd ${ros_pkg} +else + kill_exit "ROS package ${ros_pkg} does NOT exist yet, please first run iri_ros_create_package.sh" +fi + +#validate file extension .srv +srv="srv" +ext=${srv_file##*.} +ext=$(echo ${ext} | tr "[:upper:]" "[:lower:]") + +#check extension +if [[ ! "${ext}" = "${srv}" ]] +then + kill_exit "Wrong file extension, please provide a .srv file, aborting ..." +fi + +#look for SRV file +find_ros_message ${srv_file} ${srv} ${ros_pkg} +if ${found_it} +then + srv_file=${my_file} + echo "SRV file ${srv_file} found!" +else + echo "SRV file ${srv_file} does NOT exist, please check if file is in valid directories" + kill_exit "Aborting ..." +fi + +#retrieve header and source files and pkg kind (algorithm/driver) +get_h_cpp_files ${ros_pkg} +is_driver_or_alg_node ${ros_pkg} +echo "node_h=${node_h}" +echo "node_c=${node_c}" +echo "driver_alg=${driver_alg}" + +if [[ -z ${node_h} ]] || [[ -z ${node_c} ]] || [[ -z ${driver_alg} ]] +then + kill_exit "Problems with headers and/or source files" +fi + +#go to package folder +roscd "${ros_pkg}" + +#modify node files adding server/client parameters +if [[ "${server_client}" = "server" ]] +then + create_server ${ros_pkg} ${service_name} ${srv_file%.srv} ${file_pkg} ${node_h} ${node_c} ${driver_alg} +else + create_client ${ros_pkg} ${service_name} ${srv_file%.srv} ${file_pkg} ${node_h} ${node_c} ${driver_alg} +fi diff --git a/add_topic_publisher_subscriber.sh b/add_topic_publisher_subscriber.sh new file mode 100755 index 0000000..8630e11 --- /dev/null +++ b/add_topic_publisher_subscriber.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +# WET + +# check wether the scripts path environment variable has been defined +scripts_path=`echo "${IRI_ROS_SCRIPTS_PATH}"` +if [[ -z "${scripts_path}" ]] +then + echo "The scripts path environment varibale has not been defined. Please see the wiki documentation for instructions on how to create it." + exit +else + echo "The scripts path environment variable has been properly defined." +fi + +source "${IRI_ROS_SCRIPTS_PATH}/libraries/scripts_library.sh" +source "${IRI_ROS_SCRIPTS_PATH}/libraries/create_publisher.sh" +source "${IRI_ROS_SCRIPTS_PATH}/libraries/create_subscriber.sh" + +check_libraries +check_templates + +echo "" +echo "/*********************************************/" +echo "/* Creating New ROS Publisher/Subscriber */" +echo "/*********************************************/" + +pub_subs= +ros_pkg= +topic_name= +msg_file= +buffer= + +#check for input project name paramenter +while getopts “:o:p:t:m:b:†OPTION +do + case $OPTION in + o) + pub_subs=$OPTARG + ;; + p) + ros_pkg=$OPTARG + ;; + t) + topic_name=$OPTARG + ;; + m) + msg_file=$OPTARG + ;; + b) + buffer=$OPTARG + ;; + ?) + echo "invalid input argument ${OPTION}" + kill_exit "Usage: add_topic_publisher_subscriber.sh -o [publisher,subscriber] -p ros_pkg -t topic_name -m message.msg -b 100" + exit + ;; + esac +done + +#check if publisher name parameter is filled up +if [ ! "${pub_subs}" ] || [ ! "${ros_pkg}" ] || [ ! "${topic_name}" ] || [ ! "${msg_file}" ] || [ ! "${buffer}" ] +then + echo "Missing input parameters..." + kill_exit "Usage: add_topic_publisher_subscriber.sh -o [publisher,subscriber] -p ros_pkg -t topic_name -m message.msg -b 100" +fi + +#check publisher subscriber parameter +if [[ ! "${pub_subs}" = "publisher" ]] && [[ ! "${pub_subs}" = "subscriber" ]] +then + kill_exit "First parameter must be either \"publisher\" or \"subscriber\", aborting ..." +fi + +#check if package exists +result=`roscd ${ros_pkg}` +if [[ -z "${result}" ]] +then + roscd ${ros_pkg} +else + kill_exit "ROS package ${ros_pkg} does NOT exist yet, please first run iri_ros_create_package.sh" +fi + +check_package "${ros_pkg}" +if [[ ${pkg_exists} == true ]] +then + roscd ${ros_pkg} +else + kill_exit "ROS package ${ros_pkg} does NOT exist yet, please first run iri_ros_create_package.sh" +fi + +#validate file extension .msg +msg="msg" +ext=${msg_file##*.} +ext=$(echo ${ext} | tr "[:upper:]" "[:lower:]") + +#check extension +if [[ ! "${ext}" = "${msg}" ]] +then + kill_exit "Wrong file extension, please provide a .msg file, aborting ..." +fi + +#look for MSG file +find_ros_message ${msg_file} ${msg} ${ros_pkg} +if ${found_it} +then + msg_file=${my_file} + echo "MSG file ${msg_file} found!" +else + echo "MSG file ${msg_file} does NOT exist, please check if file is in valid directories" + kill_exit "Aborting ..." +fi + +# Sanitize input and assign to new variable +export clean_buffer=`echo "${buffer}" | tr -cd '[:digit:]'` + +#check if buffer parameter is filled up +if [ "$clean_buffer" ] && [ "$clean_buffer -gt 0" ] +then + echo "Setting buffer length to $clean_buffer" +else + kill_exit "No buffer provided, aborting ..." +fi + +#retrieve header and source files and pkg kind (algorithm/driver) +get_h_cpp_files ${ros_pkg} +is_driver_or_alg_node ${ros_pkg} +echo "node_h=${node_h}" +echo "node_c=${node_c}" +echo "driver_alg=${driver_alg}" + +if [[ -z ${node_h} ]] || [[ -z ${node_c} ]] || [[ -z ${driver_alg} ]] +then + kill_exit "Problems with headers and/or source files" +fi + +#go to package folder +roscd "${ros_pkg}" + +#modify node files adding server/client parameters +if [[ "${pub_subs}" = "publisher" ]] +then + create_publisher ${ros_pkg} ${topic_name} ${msg_file%.msg} ${file_pkg} ${buffer} ${node_h} ${node_c} ${driver_alg} +else + create_subscriber ${ros_pkg} ${topic_name} ${msg_file%.msg} ${file_pkg} ${buffer} ${node_h} ${node_c} ${driver_alg} +fi + -- GitLab