Source code for state_space_setup_assistant.cli
"""Entry point: run the setup assistant web server and open the browser.
ros2 run state_space_setup_assistant ss_setup_assistant \\
--urdf package://rws_description/urdf/rws.urdf
Serves on 127.0.0.1 by default (single local user; see README: one browser
tab at a time).
"""
import argparse
import sys
import threading
import webbrowser
from .app import create_app
from .session import WizardSession
[docs]
def main(argv=None) -> int:
parser = argparse.ArgumentParser(
prog='ss_setup_assistant',
description='Web setup wizard: URDF -> validation -> operating point '
'-> linearization -> controller design/benchmark -> '
'exported configs.')
parser.add_argument('--host', default='127.0.0.1')
parser.add_argument('--port', type=int, default=8060)
parser.add_argument('--urdf', default=None,
help='URDF path or package:// URI to preload in step 1')
parser.add_argument('--output-dir', default=None,
help='default export directory for the last step')
parser.add_argument('--no-browser', action='store_true',
help='do not open a web browser automatically')
args = parser.parse_args(argv)
session = WizardSession()
session.output_dir = args.output_dir
app = create_app(session, prefill_urdf=args.urdf)
url = f'http://{args.host}:{args.port}/'
print(f'state_space_setup_assistant serving on {url}')
if not args.no_browser:
threading.Timer(0.8, webbrowser.open, args=(url,)).start()
app.run(host=args.host, port=args.port, threaded=True)
return 0
if __name__ == '__main__':
sys.exit(main())