From 875f75e336d7ceee622f3c6d580afb59b1985da9 Mon Sep 17 00:00:00 2001 From: Ivan Shalnov Date: Wed, 13 Jan 2021 23:41:47 +0300 Subject: [PATCH 1/2] Added model parameter to the install script, inspired by TURTLEBOT3_MODEL env variable --- src/robot_upstart/install_script.py | 5 +++-- src/robot_upstart/job.py | 15 +++++++++++++-- templates/job-start.em | 3 +++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/robot_upstart/install_script.py b/src/robot_upstart/install_script.py index 29fbd77..facecb4 100644 --- a/src/robot_upstart/install_script.py +++ b/src/robot_upstart/install_script.py @@ -71,6 +71,8 @@ def get_argument_parser(): p.add_argument("--systemd-after", type=str, metavar="After=", help="Set the string of the After= section" "of the generated Systemd service file") + p.add_argument("--model", type=str, metavar="MODEL", + help="Specify the model of your robot if not specified under ROBOT_MODEL") return p @@ -88,8 +90,7 @@ def main(): j = robot_upstart.Job( name=job_name, interface=args.interface, user=args.user, workspace_setup=args.setup, rosdistro=args.rosdistro, - master_uri=args.master, log_path=args.logdir, - systemd_after=args.systemd_after) + master_uri=args.master, log_path=args.logdir, model=args.model, systemd_after=args.systemd_after) for this_pkgpath in args.pkgpath: pkg, pkgpath = this_pkgpath.split('/', 1) diff --git a/src/robot_upstart/job.py b/src/robot_upstart/job.py index 895525c..28200a5 100644 --- a/src/robot_upstart/job.py +++ b/src/robot_upstart/job.py @@ -40,8 +40,7 @@ class Job(object): """ Represents a ROS configuration to launch on machine startup. """ def __init__(self, name="ros", interface=None, user=None, workspace_setup=None, - rosdistro=None, master_uri=None, log_path=None, - systemd_after=None): + rosdistro=None, master_uri=None, log_path=None, model=None, systemd_after=None): """Construct a new Job definition. :param name: Name of job to create. Defaults to "ros", but you might @@ -68,6 +67,8 @@ def __init__(self, name="ros", interface=None, user=None, workspace_setup=None, default of using /tmp, it is the user's responsibility to manage log rotation. :type log_path: str + :param model: Your robot model if not specified under ROBOT_MODEL. + :type model: str """ self.name = name @@ -110,6 +111,16 @@ def __init__(self, name="ros", interface=None, user=None, workspace_setup=None, # startup job itself. List of strs. self.files = [] + # Sets the model environment variable if provided, else results in + # ROBOT_MODEL=ROBOT + if model: + self.model = name.upper() + '_MODEL=' + model + else: + try: + self.model = name.upper() + '_MODEL=' + os.environ[name.upper() + '_MODEL'] + except KeyError: + self.model = name.upper() + '_MODEL=ROBOT' + def add(self, package=None, filename=None, glob=None): """ Add launch or other configuration files to Job. diff --git a/templates/job-start.em b/templates/job-start.em index bdf9f1a..4b38679 100644 --- a/templates/job-start.em +++ b/templates/job-start.em @@ -67,6 +67,9 @@ export ROS_MASTER_URI=@(master_uri) @[else]@ export ROS_MASTER_URI=http://127.0.0.1:11311 @[end if]@ +@[if model]@ +export @(model) +@[end if]@ export ROS_HOME=${ROS_HOME:=$(echo ~@(user))/.ros} export ROS_LOG_DIR=$log_path From 0d90749f22421d6c16bd9ea0cc2f35d96f970ae5 Mon Sep 17 00:00:00 2001 From: Ivan Shalnov Date: Wed, 30 Jun 2021 17:42:30 +0300 Subject: [PATCH 2/2] map parameter added --- src/robot_upstart/install_script.py | 2 ++ src/robot_upstart/job.py | 10 +++++++++- templates/job-start.em | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/robot_upstart/install_script.py b/src/robot_upstart/install_script.py index facecb4..56433e4 100644 --- a/src/robot_upstart/install_script.py +++ b/src/robot_upstart/install_script.py @@ -73,6 +73,8 @@ def get_argument_parser(): "of the generated Systemd service file") p.add_argument("--model", type=str, metavar="MODEL", help="Specify the model of your robot if not specified under ROBOT_MODEL") + p.add_argument("--map_name", type=str, metavar="MODEL", + help="Specify the map name for your robot") return p diff --git a/src/robot_upstart/job.py b/src/robot_upstart/job.py index 28200a5..25d6749 100644 --- a/src/robot_upstart/job.py +++ b/src/robot_upstart/job.py @@ -40,7 +40,7 @@ class Job(object): """ Represents a ROS configuration to launch on machine startup. """ def __init__(self, name="ros", interface=None, user=None, workspace_setup=None, - rosdistro=None, master_uri=None, log_path=None, model=None, systemd_after=None): + rosdistro=None, master_uri=None, log_path=None, model=None, map_name=None, systemd_after=None): """Construct a new Job definition. :param name: Name of job to create. Defaults to "ros", but you might @@ -121,6 +121,14 @@ def __init__(self, name="ros", interface=None, user=None, workspace_setup=None, except KeyError: self.model = name.upper() + '_MODEL=ROBOT' + if map_name: + self.map_name = name.upper() + '_MAP=' + map_name + else: + try: + self.map_name = name.upper() + '_MAP=' + os.environ[name.upper() + '_MAP'] + except KeyError: + self.map_name = name.upper() + '_MAP=ROBOT' + def add(self, package=None, filename=None, glob=None): """ Add launch or other configuration files to Job. diff --git a/templates/job-start.em b/templates/job-start.em index 4b38679..8808d8d 100644 --- a/templates/job-start.em +++ b/templates/job-start.em @@ -70,6 +70,9 @@ export ROS_MASTER_URI=http://127.0.0.1:11311 @[if model]@ export @(model) @[end if]@ +@[if map_name]@ +export @(map_name) +@[end if]@ export ROS_HOME=${ROS_HOME:=$(echo ~@(user))/.ros} export ROS_LOG_DIR=$log_path