Example #1
0
def test_myargv():
    orig_argv = sys.argv
    try:
        from rosgraph import myargv
        args = myargv()
        assert args == sys.argv
        assert ['foo', 'bar', 'baz'] == myargv(['foo','bar', 'baz'])
        assert ['-foo', 'bar', '-baz'] == myargv(['-foo','bar', '-baz'])
            
        assert ['foo'] == myargv(['foo','bar:=baz'])
        assert ['foo'] == myargv(['foo','-bar:=baz'])
    finally:
        sys.argv = orig_argv
Example #2
0
def resolve_launch_arguments(args):
    """
    Resolve command-line args to roslaunch filenames.

    :returns: resolved filenames, ``[str]``
    """

    # strip remapping args for processing
    args = rosgraph.myargv(args)
    
    # user can either specify:
    #  - filename + launch args
    #  - package + relative-filename + launch args
    if not args:
        return args
    resolved_args = None
    top = args[0]
    if os.path.isfile(top):
        resolved_args = [top] + args[1:]
    elif len(args) == 1:
        raise roslaunch.core.RLException("[%s] does not exist. please specify a package and launch file"%(top))
    else:
        try:
            resolved = roslib.packages.find_resource(top, args[1])
            if len(resolved) == 1:
                resolved = resolved[0]
            elif len(resolved) > 1:
                raise roslaunch.core.RLException("multiple files named [%s] in package [%s]:%s\nPlease specify full path instead" % (args[1], top, ''.join(['\n- %s' % r for r in resolved])))
        except rospkg.ResourceNotFound as e:
            raise roslaunch.core.RLException("[%s] is not a package or launch file name"%top)
        if not resolved:
            raise roslaunch.core.RLException("cannot locate [%s] in package [%s]"%(args[1], top))
        else:
            resolved_args = [resolved] + args[2:]
    return resolved_args
Example #3
0
def parse_argument(argv):
    """
    argument parser for roswww server configuration
    """
    parser = argparse.ArgumentParser(description="ROSWWW Server")
    parser.add_argument('-n', '--name', default='80', help='Webserver name')
    parser.add_argument('-p',
                        '--port',
                        default='80',
                        help='Webserver Port number')
    parser.add_argument('-w',
                        '--webpath',
                        default='www',
                        help='package relative path to web pages')
    parser.add_argument('--start_port',
                        default='8000',
                        help='setting up port scan range')
    parser.add_argument('--end_port',
                        default='9000',
                        help='setting up port scan range')

    myargs = rosgraph.myargv(sys.argv[1:])  # strips ros arguements
    parsed_args = parser.parse_args(myargs)

    return parsed_args.name, parsed_args.webpath, (parsed_args.port,
                                                   parsed_args.start_port,
                                                   parsed_args.end_port)
Example #4
0
def parse_arguments():
    """
    Argument parser for the rocon_launch script.
    """
    parser = argparse.ArgumentParser(description="Rocon's multi-roslauncher.")
    terminal_group = parser.add_mutually_exclusive_group()
    terminal_group.add_argument(
        '-k',
        '--konsole',
        default=False,
        action='store_true',
        help='spawn individual ros systems via multiple konsole terminals')
    terminal_group.add_argument(
        '-g',
        '--gnome',
        default=False,
        action='store_true',
        help='spawn individual ros systems via multiple gnome terminals')
    parser.add_argument('--screen',
                        action='store_true',
                        help='run each roslaunch with the --screen option')
    parser.add_argument('--no-terminals',
                        action='store_true',
                        help='do not spawn terminals for each roslaunch')
    parser.add_argument(
        '--hold',
        action='store_true',
        help=
        'hold terminals open after upon completion (incompatible with --no-terminals)'
    )
    # Force package, launcher pairs, I like this better than roslaunch style which is a bit vague
    parser.add_argument(
        'package',
        nargs='?',
        default='',
        help='name of the package in which to find the concert launcher')
    parser.add_argument(
        'launcher',
        nargs=1,
        help='name of the concert launch configuration (xml) file')
    #parser.add_argument('launchers', nargs='+', help='package and concert launch configuration (xml) file configurations, roslaunch style')
    mappings = rosgraph.names.load_mappings(
        sys.argv)  # gets the arg mappings, e.g. scheduler_type:=simple
    argv = rosgraph.myargv(sys.argv[1:])  # strips the mappings
    args = parser.parse_args(argv)
    if args.no_terminals:
        args.terminal_name = terminals.active
    elif args.konsole:
        args.terminal_name = terminals.konsole
    elif args.gnome:
        args.terminal_name = terminals.gnome_terminal
    else:
        args.terminal_name = None
    return (args, mappings)
Example #5
0
def resolve_launch_arguments(args):
    """
    Resolve command-line args to roslaunch filenames.

    :returns: resolved filenames, ``[str]``
    """

    # strip remapping args for processing
    args = rosgraph.myargv(args)

    # user can either specify:
    #  - filename + launch args
    #  - package + relative-filename + launch args
    if not args:
        return args
    resolved_args = None

    # try to resolve launch file in package first
    if len(args) >= 2:
        try:
            resolved = roslib.packages.find_resource(args[0], args[1])
            if len(resolved) > 1:
                raise roslaunch.core.RLException(
                    "multiple files named [%s] in package [%s]:%s\nPlease specify full path instead"
                    % (args[1], args[0], ''.join(
                        ['\n- %s' % r for r in resolved])))
            if len(resolved) == 1:
                resolved_args = [resolved[0]] + args[2:]
        except rospkg.ResourceNotFound:
            pass
    # try to resolve launch file
    if resolved_args is None and os.path.isfile(args[0]):
        resolved_args = [args[0]] + args[1:]
    # raise if unable to resolve
    if resolved_args is None:
        if len(args) >= 2:
            raise roslaunch.core.RLException(
                "[%s] is neither a launch file in package [%s] nor is [%s] a launch file name"
                % (args[1], args[0], args[0]))
        else:
            raise roslaunch.core.RLException("[%s] is not a launch file name" %
                                             args[0])
    return resolved_args
Example #6
0
def resolve_launch_arguments(args):
    """
    Resolve command-line args to roslaunch filenames.

    :returns: resolved filenames, ``[str]``
    """

    # strip remapping args for processing
    args = rosgraph.myargv(args)
    
    # user can either specify:
    #  - filename + launch args
    #  - package + relative-filename + launch args
    if not args:
        return args
    resolved_args = None

    # try to resolve launch file in package first
    if len(args) >= 2:
        try:
            resolved = roslib.packages.find_resource(args[0], args[1])
            if len(resolved) > 1:
                raise roslaunch.core.RLException("multiple files named [%s] in package [%s]:%s\nPlease specify full path instead" % (args[1], args[0], ''.join(['\n- %s' % r for r in resolved])))
            if len(resolved) == 1:
                resolved_args = [resolved[0]] + args[2:]
        except rospkg.ResourceNotFound:
            pass
    # try to resolve launch file
    if resolved_args is None and (args[0] == '-' or os.path.isfile(args[0])):
        resolved_args = [args[0]] + args[1:]
    # raise if unable to resolve
    if resolved_args is None:
        if len(args) >= 2:
            raise roslaunch.core.RLException("[%s] is neither a launch file in package [%s] nor is [%s] a launch file name" % (args[1], args[0], args[0]))
        else:
            raise roslaunch.core.RLException("[%s] is not a launch file name" % args[0])
    return resolved_args