Simple longitudinal maneuver summary (#33553)

* check for overrides as well

* only used twice

* longActive is false for gas pressed

* label cross time

* love pycharm

* quick summary

* add min/max

* show unreached maneuvers
pull/33556/head
Shane Smiskol 12 months ago committed by GitHub
parent f89b59baa8
commit fa892a9755
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 12
      tools/longitudinal_maneuvers/generate_report.py

@ -4,6 +4,7 @@ import base64
import io
import os
import pprint
from collections import defaultdict
from pathlib import Path
import matplotlib.pyplot as plt
@ -19,6 +20,7 @@ def report(platform, route, CP, maneuvers):
output_path = Path(__file__).resolve().parent / "longitudinal_reports"
output_fn = output_path / f"{platform}_{route.replace('/', '_')}.html"
output_path.mkdir(exist_ok=True)
target_cross_times = defaultdict(list)
with open(output_fn, "w") as f:
f.write("<h1>Longitudinal maneuver report</h1>\n")
f.write(f"<h3>{platform}</h3>\n")
@ -57,6 +59,8 @@ def report(platform, route, CP, maneuvers):
if (0 < aTarget < cs.aEgo) or (0 > aTarget > cs.aEgo):
f.write(f', <strong>crossed in {t:.3f}s</strong>')
target_cross_time = t
if maneuver_valid:
target_cross_times[description].append(t)
break
else:
f.write(', <strong>not crossed</strong>')
@ -101,6 +105,14 @@ def report(platform, route, CP, maneuvers):
f.write(f"<img src='data:image/png;base64,{base64.b64encode(buffer.getvalue()).decode()}' style='width:100%; max-width:800px;'>\n")
f.write("</details>\n")
f.write("<h2>Summary</h2>\n")
for description, runs in maneuvers:
times = target_cross_times[description]
f.write(f"<h3>{description}</h3>\n")
f.write(f"<p>Target crossed {len(times)} out of {len(runs)} runs</p>\n")
if len(times):
f.write(f"<p>Mean time to cross: {sum(times) / len(times):.3f}s, min: {min(times):.3f}s, max: {max(times):.3f}s</p>\n")
print(f"\nReport written to {output_fn}\n")

Loading…
Cancel
Save