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())