diff --git a/tools/plotjuggler/README.md b/tools/plotjuggler/README.md index 18833e579e..022fcfcf7e 100644 --- a/tools/plotjuggler/README.md +++ b/tools/plotjuggler/README.md @@ -11,8 +11,20 @@ Once you've cloned openpilot, run this command inside this directory: ## Usage -`./juggle.py ` +``` +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: -`./juggle.py "0982d79ebb0de295|2021-01-17--17-13-08" 0` +`./juggle.py "0982d79ebb0de295|2021-01-17--17-13-08"` diff --git a/tools/plotjuggler/juggle.py b/tools/plotjuggler/juggle.py index 439d9a629b..1f049b656d 100755 --- a/tools/plotjuggler/juggle.py +++ b/tools/plotjuggler/juggle.py @@ -1,16 +1,18 @@ #!/usr/bin/env python3 - +import os import sys import multiprocessing import subprocess +import argparse 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.logreader import LogReader -from selfdrive.test.process_replay.compare_logs import save_log from tools.lib.url_file import URLFile - def load_segment(segment_name): print(f"Loading {segment_name}") lr = LogReader(segment_name) @@ -19,8 +21,10 @@ def load_segment(segment_name): return r def juggle_file(fn): - subprocess.call(f"bin/plotjuggler -d {fn}", shell=True) - # subprocess.call(f"/home/batman/PlotJuggler/build/bin/plotjuggler -d {fn}", shell=True) + env = os.environ.copy() + 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): r = Route(route_name) @@ -49,9 +53,18 @@ def juggle_segment(route_name, segment_nr): uf = URLFile(lp) 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 len(sys.argv) == 2: - juggle_route(sys.argv[1]) - elif len(sys.argv) == 3: - juggle_segment(sys.argv[1], int(sys.argv[2])) + + args = get_arg_parser().parse_args(sys.argv[1:]) + if args.segment_number is None: + juggle_route(args.route_name) + else: + juggle_segment(args.route_name, args.segment_number)