argparser for plotjuggler (#20103)

* argparse

* import os

* need rest of env

* update readme

* style fix

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 4d46c521d1
commatwo_master
iejMac 4 years ago committed by GitHub
parent 48fe1c6d29
commit 162814cdd9
  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