openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.

43 lines
1.4 KiB

#!/usr/bin/env python3
import cProfile
import pprofile
import pyprof2calltree
from tools.lib.logreader import LogReader
from selfdrive.controls.controlsd import controlsd_thread
from selfdrive.test.profiling.lib import SubMaster, PubMaster, SubSocket, ReplayDone
BASE_URL = "https://commadataci.blob.core.windows.net/openpilotci/"
SEGMENT = "99c94dc769b5d96e|2019-08-03--14-19-59/2"
if __name__ == "__main__":
segment = SEGMENT.replace('|', '/')
rlog_url = f"{BASE_URL}{segment}/rlog.bz2"
msgs = list(LogReader(rlog_url))
pm = PubMaster(['sendcan', 'controlsState', 'carState', 'carControl', 'carEvents', 'carParams'])
sm = SubMaster(msgs, 'can', ['thermal', 'health', 'liveCalibration', 'dMonitoringState', 'plan', 'pathPlan', 'model'])
can_sock = SubSocket(msgs, 'can')
# Statistical
with pprofile.StatisticalProfile()(period=0.00001) as pr:
try:
controlsd_thread(sm, pm, can_sock)
except ReplayDone:
pass
pr.dump_stats('cachegrind.out.controlsd_statistical')
# Deterministic
pm = PubMaster(['sendcan', 'controlsState', 'carState', 'carControl', 'carEvents', 'carParams'])
sm = SubMaster(msgs, 'can', ['thermal', 'health', 'liveCalibration', 'dMonitoringState', 'plan', 'pathPlan', 'model'])
can_sock = SubSocket(msgs, 'can')
with cProfile.Profile() as pr:
try:
controlsd_thread(sm, pm, can_sock)
except ReplayDone:
pass
pyprof2calltree.convert(pr.getstats(), 'cachegrind.out.controlsd_deterministic')