Source code for launch_tools.argument_parsing

  1"""
  2Argument parsers for arguments used by CARLA examples.
  3
  4.. deprecated:: _
  5    In favor of Hydra_.
  6"""
  7import argparse
  8from functools import wraps
  9from typing import Optional
 10
 11# maybe later: add some more flexible way to construct a parser.
 12# i.e. combine certain subparsers, e.g. one for port& host another one for settings
 13
 14
[docs] 15def subparser(func) -> argparse.ArgumentParser: 16 """This decorator allows to join multiple subparsers in a flexible way.""" 17 18 @wraps(func) 19 def wrapper(parser: Optional[argparse.ArgumentParser] = None, *args, **kwargs) -> argparse.ArgumentParser: 20 if parser is None: # create a parser if none is given 21 parser = argparse.ArgumentParser() 22 # else: TODO: are subparsers useful? 23 func(parser, *args, **kwargs) 24 return parser # return the parser object again 25 26 # allows to circumvent calling the function. 27 # i.e. parser_function.parse_args() instead of parser_function().parse_args() 28 wrapper.parse_args = lambda: wrapper(parser=None).parse_args() # type: ignore[attr-defined] 29 # allows to adjust parsers by adding another parser or by adding a parser function 30 wrapper.add = lambda parser: wrapper(parser) if isinstance(parser, argparse.ArgumentParser) else wrapper(parser()) # type: ignore[attr-defined] 31 return wrapper
32 33
[docs] 34@subparser 35def client_settings(parser: argparse.ArgumentParser): 36 parser.add_argument( 37 '--host', 38 metavar='H', 39 default='127.0.0.1', 40 help='IP of the host server (default: 127.0.0.1)') 41 parser.add_argument( 42 '-p', '--port', 43 metavar='P', 44 default=2000, 45 type=int, 46 help='TCP port to listen to (default: 2000)') 47 parser.add_argument('-m', '--map', help='Map', default="Town04_Opt", type=str) 48 parser.add_argument('--fps', help='Frames per second.', default=20, type=int)
49 50
[docs] 51@subparser 52def interactive_mode(parser: argparse.ArgumentParser): 53 parser.add_argument('-I', '--interactive', action='store_true', help='Interactive mode', default=False)
54 55
[docs] 56@subparser 57def interactive_control_example(parser: argparse.ArgumentParser): 58 parser.add_argument( 59 '--rolename', 60 metavar='NAME', 61 default='hero', 62 help='actor role name (default: "hero")') 63 parser.add_argument( 64 '--gamma', 65 default=2.2, 66 type=float, 67 help='Gamma correction of the camera (default: 2.2)') 68 parser.add_argument( 69 '--externalActor', 70 action='store_true', 71 help='attaches to externally created actor by role name')
72 73
[docs] 74@subparser 75def automatic_control_example(argparser: argparse.ArgumentParser): 76 argparser.description = 'CARLA Lunatic Agent Example' 77 argparser.add_argument( 78 '-v', '--verbose', 79 action='store_true', 80 dest='debug', 81 help='Print debug information') 82 argparser.add_argument( 83 '--res', 84 metavar='WIDTHxHEIGHT', 85 default='1280x720', 86 help='Window resolution (default: 1280x720)') 87 argparser.add_argument( 88 '--sync', 89 action='store_true', 90 help='Synchronous mode execution') 91 argparser.add_argument( 92 '--filter', 93 metavar='PATTERN', 94 default='vehicle.*', 95 help='Actor filter (default: "vehicle.*")') 96 argparser.add_argument( 97 '--generation', 98 metavar='G', 99 default='2', 100 help='restrict to certain actor generation (values: "1","2","All" - default: "2")') 101 argparser.add_argument( 102 '-l', '--loop', 103 action='store_true', 104 dest='loop', 105 help='Sets a new random destination upon reaching the previous one (default: False)') 106 107 # TODO: separate into subparsers 108 argparser.add_argument( 109 "-a", "--agent", type=str, 110 choices=["Behavior", "Basic", "Constant"], 111 help="select which agent to run", 112 default="Behavior") 113 argparser.add_argument( 114 '-b', '--behavior', type=str, 115 # choices=["cautious", "normal", "aggressive"], 116 help='Choose one of the possible agent behaviors (default: normal) ', 117 default='normal') 118 119 argparser.add_argument( 120 '-s', '--seed', 121 help='Set seed for repeating executions (default: None)', 122 default=None, 123 type=int) 124 argparser.add_argument( 125 '-I', '--interactive', 126 help='Enter interactive mode after initialization', 127 action="store_true") 128 argparser.add_argument( 129 '-ap', '--autopilot', 130 action='store_true', 131 help='enable autopilot')
132 133
[docs] 134def main_parser(): 135 parser = argparse.ArgumentParser() 136 client_settings.add(parser) # type: ignore[attr-defined] 137 automatic_control_example.add(parser) # type: ignore[attr-defined] 138 interactive_control_example.add(parser) # type: ignore[attr-defined] 139 return parser