argparser for plotjuggler (#20103)

* argparse

* import os

* need rest of env

* update readme

* style fix

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
pull/20108/head
iejMac 4 years ago committed by GitHub
parent 3538e2060a
commit 4d46c521d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      tools/plotjuggler/README.md
  2. 31
      tools/plotjuggler/juggle.py

@ -11,8 +11,20 @@ Once you've cloned openpilot, run this command inside this directory:
## Usage ## Usage
`./juggle.py <route> <segment number>` ```
batman@z840-openpilot:~/openpilot/tools/plotjuggler$ ./juggle.py -h
usage: juggle.py [-h] [route_name] [segment_number]
PlotJuggler plugin for reading rlogs
positional arguments:
route_name The name of the route that will be plotted. (default: None)
segment_number The index of the segment that will be plotted (default: None)
optional arguments:
-h, --help show this help message and exit
```
Example: Example:
`./juggle.py "0982d79ebb0de295|2021-01-17--17-13-08" 0` `./juggle.py "0982d79ebb0de295|2021-01-17--17-13-08"`

@ -1,16 +1,18 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import os
import sys import sys
import multiprocessing import multiprocessing
import subprocess import subprocess
import argparse
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
from common.basedir import BASEDIR
from selfdrive.test.process_replay.compare_logs import save_log
from tools.lib.route import Route from tools.lib.route import Route
from tools.lib.logreader import LogReader from tools.lib.logreader import LogReader
from selfdrive.test.process_replay.compare_logs import save_log
from tools.lib.url_file import URLFile from tools.lib.url_file import URLFile
def load_segment(segment_name): def load_segment(segment_name):
print(f"Loading {segment_name}") print(f"Loading {segment_name}")
lr = LogReader(segment_name) lr = LogReader(segment_name)
@ -19,8 +21,10 @@ def load_segment(segment_name):
return r return r
def juggle_file(fn): def juggle_file(fn):
subprocess.call(f"bin/plotjuggler -d {fn}", shell=True) env = os.environ.copy()
# subprocess.call(f"/home/batman/PlotJuggler/build/bin/plotjuggler -d {fn}", shell=True) env["BASEDIR"] = BASEDIR
juggle_dir = os.path.dirname(os.path.realpath(__file__))
subprocess.call(f"bin/plotjuggler -d {fn}", shell=True, env=env, cwd=juggle_dir)
def juggle_route(route_name): def juggle_route(route_name):
r = Route(route_name) r = Route(route_name)
@ -49,9 +53,18 @@ def juggle_segment(route_name, segment_nr):
uf = URLFile(lp) uf = URLFile(lp)
juggle_file(uf.name) juggle_file(uf.name)
def get_arg_parser():
parser = argparse.ArgumentParser(description="PlotJuggler plugin for reading rlogs",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("route_name", nargs='?', help="The name of the route that will be plotted.")
parser.add_argument("segment_number", type=int, nargs='?', help="The index of the segment that will be plotted")
return parser
if __name__ == "__main__": if __name__ == "__main__":
if len(sys.argv) == 2:
juggle_route(sys.argv[1]) args = get_arg_parser().parse_args(sys.argv[1:])
elif len(sys.argv) == 3: if args.segment_number is None:
juggle_segment(sys.argv[1], int(sys.argv[2])) juggle_route(args.route_name)
else:
juggle_segment(args.route_name, args.segment_number)

Loading…
Cancel
Save