mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-08-21 08:03:42 +08:00
openpilot v0.8.2 release
This commit is contained in:
@@ -24,23 +24,19 @@ import argparse
|
||||
import re
|
||||
from collections import defaultdict
|
||||
|
||||
import selfdrive.manager as manager
|
||||
|
||||
# Do statistics every 5 seconds
|
||||
PRINT_INTERVAL = 5
|
||||
SLEEP_INTERVAL = 0.2
|
||||
|
||||
monitored_proc_names = [
|
||||
# openpilot procs
|
||||
'controlsd', 'locationd', 'loggerd','plannerd',
|
||||
'ubloxd', 'thermald', 'uploader', 'deleter', 'radard', 'logmessaged', 'tombstoned',
|
||||
'logcatd', 'proclogd', 'boardd', 'pandad', './ui', 'ui', 'calibrationd', 'params_learner', 'modeld', 'dmonitoringd',
|
||||
'dmonitoringmodeld', 'camerad', 'sensord', 'updated', 'gpsd', 'athena', 'locationd', 'paramsd',
|
||||
|
||||
# offroad APK
|
||||
'ai.comma.plus.offroad',
|
||||
|
||||
# android procs
|
||||
'SurfaceFlinger', 'sensors.qcom'
|
||||
]
|
||||
] + manager.car_started_processes + manager.persistent_processes
|
||||
|
||||
cpu_time_names = ['user', 'system', 'children_user', 'children_system']
|
||||
|
||||
@@ -48,9 +44,7 @@ timer = getattr(time, 'monotonic', time.time)
|
||||
|
||||
|
||||
def get_arg_parser():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Unlogger and UI",
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
|
||||
parser.add_argument("proc_names", nargs="?", default='',
|
||||
help="Process names to be monitored, comma seperated")
|
||||
|
||||
@@ -16,11 +16,11 @@ def cycle_alerts(duration=200, is_metric=False):
|
||||
print(alerts)
|
||||
|
||||
CP = CarInterface.get_params("HONDA CIVIC 2016 TOURING")
|
||||
sm = messaging.SubMaster(['thermal', 'health', 'frame', 'model', 'liveCalibration',
|
||||
'dMonitoringState', 'plan', 'pathPlan', 'liveLocationKalman'])
|
||||
sm = messaging.SubMaster(['deviceState', 'pandaState', 'roadCameraState', 'modelV2', 'liveCalibration',
|
||||
'driverMonitoringState', 'longitudinalPlan', 'lateralPlan', 'liveLocationKalman'])
|
||||
|
||||
controls_state = messaging.pub_sock('controlsState')
|
||||
thermal = messaging.pub_sock('thermal')
|
||||
deviceState = messaging.pub_sock('deviceState')
|
||||
|
||||
idx, last_alert_millis = 0, 0
|
||||
|
||||
@@ -56,9 +56,9 @@ def cycle_alerts(duration=200, is_metric=False):
|
||||
controls_state.send(dat.to_bytes())
|
||||
|
||||
dat = messaging.new_message()
|
||||
dat.init('thermal')
|
||||
dat.thermal.started = True
|
||||
thermal.send(dat.to_bytes())
|
||||
dat.init('deviceState')
|
||||
dat.deviceState.started = True
|
||||
deviceState.send(dat.to_bytes())
|
||||
|
||||
frame += 1
|
||||
time.sleep(0.01)
|
||||
|
||||
@@ -3,7 +3,8 @@ import argparse
|
||||
import json
|
||||
|
||||
import cereal.messaging as messaging
|
||||
|
||||
from tools.lib.logreader import LogReader
|
||||
from tools.lib.route import Route
|
||||
|
||||
LEVELS = {
|
||||
"DEBUG": 10,
|
||||
@@ -23,32 +24,55 @@ ANDROID_LOG_SOURCE = {
|
||||
}
|
||||
|
||||
|
||||
def print_logmessage(t, msg, min_level):
|
||||
try:
|
||||
log = json.loads(msg)
|
||||
if log['levelnum'] >= min_level:
|
||||
print(f"[{t / 1e9:.6f}] {log['filename']}:{log.get('lineno', '')} - {log.get('funcname', '')}: {log['msg']}")
|
||||
except json.decoder.JSONDecodeError:
|
||||
print(f"[{t / 1e9:.6f}] decode error: {msg}")
|
||||
|
||||
|
||||
def print_androidlog(t, msg):
|
||||
source = ANDROID_LOG_SOURCE[msg.id]
|
||||
print(f"[{t / 1e9:.6f}] {source} {msg.pid} {msg.tag} - {msg.message}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--level', default='DEBUG')
|
||||
parser.add_argument('--addr', default='127.0.0.1')
|
||||
parser.add_argument("socket", type=str, nargs='*', help="socket name")
|
||||
parser.add_argument("route", type=str, nargs='*', help="route name + segment number for offline usage")
|
||||
args = parser.parse_args()
|
||||
|
||||
sm = messaging.SubMaster(['logMessage', 'androidLog'], addr=args.addr)
|
||||
logs = None
|
||||
if len(args.route):
|
||||
r = Route(args.route[0])
|
||||
logs = r.log_paths() # TODO: switch to qlogs when logs are in there
|
||||
|
||||
if len(args.route) == 2 and logs:
|
||||
n = int(args.route[1])
|
||||
logs = [logs[n]]
|
||||
|
||||
min_level = LEVELS[args.level]
|
||||
|
||||
while True:
|
||||
sm.update()
|
||||
if logs:
|
||||
for log in logs:
|
||||
if log:
|
||||
lr = LogReader(log)
|
||||
for m in lr:
|
||||
if m.which() == 'logMessage':
|
||||
print_logmessage(m.logMonoTime, m.logMessage, min_level)
|
||||
elif m.which() == 'androidLog':
|
||||
print_androidlog(m.logMonoTime, m.androidLog)
|
||||
else:
|
||||
sm = messaging.SubMaster(['logMessage', 'androidLog'], addr=args.addr)
|
||||
while True:
|
||||
sm.update()
|
||||
|
||||
if sm.updated['logMessage']:
|
||||
t = sm.logMonoTime['logMessage']
|
||||
try:
|
||||
log = json.loads(sm['logMessage'])
|
||||
if log['levelnum'] >= min_level:
|
||||
print(f"[{t / 1e9:.6f}] {log['filename']}:{log.get('lineno', '')} - {log.get('funcname', '')}: {log['msg']}")
|
||||
except json.decoder.JSONDecodeError:
|
||||
print(f"[{t / 1e9:.6f}] decode error: {sm['logMessage']}")
|
||||
if sm.updated['logMessage']:
|
||||
print_logmessage(sm.logMonoTime['logMessage'], sm['logMessage'], min_level)
|
||||
|
||||
if sm.updated['androidLog']:
|
||||
t = sm.logMonoTime['androidLog']
|
||||
m = sm['androidLog']
|
||||
source = ANDROID_LOG_SOURCE[m.id]
|
||||
print(f"[{t / 1e9:.6f}] {source} {m.pid} {m.tag} - {m.message}")
|
||||
if sm.updated['androidLog']:
|
||||
print_androidlog(sm.logMonoTime['androidLog'], sm['androidLog'])
|
||||
|
||||
@@ -37,7 +37,7 @@ def get_fingerprint(lr):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: ./get_fingerprint_internal.py <route>")
|
||||
print("Usage: ./fingerprint_from_route.py <route>")
|
||||
sys.exit(1)
|
||||
|
||||
route = Route(sys.argv[1])
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
|
||||
import numpy as np
|
||||
|
||||
from cereal.messaging import SubMaster
|
||||
from common.numpy_fast import mean
|
||||
|
||||
|
||||
def cputime_total(ct):
|
||||
@@ -34,7 +33,7 @@ if __name__ == "__main__":
|
||||
parser.add_argument('--cpu', action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
sm = SubMaster(['thermal', 'procLog'])
|
||||
sm = SubMaster(['deviceState', 'procLog'])
|
||||
|
||||
last_temp = 0.0
|
||||
last_mem = 0.0
|
||||
@@ -47,10 +46,10 @@ if __name__ == "__main__":
|
||||
while True:
|
||||
sm.update()
|
||||
|
||||
if sm.updated['thermal']:
|
||||
t = sm['thermal']
|
||||
last_temp = np.mean(t.cpu)
|
||||
last_mem = t.memUsedPercent
|
||||
if sm.updated['deviceState']:
|
||||
t = sm['deviceState']
|
||||
last_temp = mean(t.cpuTempC)
|
||||
last_mem = t.memoryUsagePercent
|
||||
|
||||
if sm.updated['procLog']:
|
||||
m = sm['procLog']
|
||||
@@ -72,7 +71,7 @@ if __name__ == "__main__":
|
||||
total_times = total_times_new[:]
|
||||
busy_times = busy_times_new[:]
|
||||
|
||||
print("CPU %.2f%% - RAM: %.2f - Temp %.2f" % (100. * np.mean(cores), last_mem, last_temp))
|
||||
print("CPU %.2f%% - RAM: %.2f - Temp %.2f" % (100. * mean(cores), last_mem, last_temp))
|
||||
|
||||
if args.cpu and prev_proclog is not None:
|
||||
procs = {}
|
||||
|
||||
@@ -46,8 +46,8 @@ if __name__ == "__main__":
|
||||
lr = LogReader(qlog_path)
|
||||
|
||||
for msg in lr:
|
||||
if msg.which() == "health":
|
||||
if msg.health.hwType not in ['uno', 'blackPanda']:
|
||||
if msg.which() == "pandaState":
|
||||
if msg.pandaState.pandaType not in ['uno', 'blackPanda']:
|
||||
dongles.append(dongle_id)
|
||||
break
|
||||
|
||||
|
||||
@@ -3,20 +3,20 @@ import time
|
||||
import cereal.messaging as messaging
|
||||
from selfdrive.manager import start_managed_process, kill_managed_process
|
||||
|
||||
services = ['controlsState', 'thermal', 'radarState'] # the services needed to be spoofed to start ui offroad
|
||||
services = ['controlsState', 'deviceState', 'radarState'] # the services needed to be spoofed to start ui offroad
|
||||
procs = ['camerad', 'ui', 'modeld', 'calibrationd']
|
||||
[start_managed_process(p) for p in procs] # start needed processes
|
||||
pm = messaging.PubMaster(services)
|
||||
|
||||
dat_cs, dat_thermal, dat_radar = [messaging.new_message(s) for s in services]
|
||||
dat_cs, dat_deviceState, dat_radar = [messaging.new_message(s) for s in services]
|
||||
dat_cs.controlsState.rearViewCam = False # ui checks for these two messages
|
||||
dat_thermal.thermal.started = True
|
||||
dat_deviceState.deviceState.started = True
|
||||
|
||||
try:
|
||||
while True:
|
||||
pm.send('controlsState', dat_cs)
|
||||
pm.send('thermal', dat_thermal)
|
||||
pm.send('deviceState', dat_deviceState)
|
||||
pm.send('radarState', dat_radar)
|
||||
time.sleep(1 / 100) # continually send, rate doesn't matter for thermal
|
||||
time.sleep(1 / 100) # continually send, rate doesn't matter for deviceState
|
||||
except KeyboardInterrupt:
|
||||
[kill_managed_process(p) for p in procs]
|
||||
|
||||
Reference in New Issue
Block a user