|
|
|
@ -2,9 +2,11 @@ |
|
|
|
|
import unittest |
|
|
|
|
import time |
|
|
|
|
import math |
|
|
|
|
import threading |
|
|
|
|
from dataclasses import dataclass |
|
|
|
|
from tabulate import tabulate |
|
|
|
|
|
|
|
|
|
import cereal.messaging as messaging |
|
|
|
|
from system.hardware import HARDWARE, TICI |
|
|
|
|
from system.hardware.tici.power_monitor import get_power |
|
|
|
|
from selfdrive.manager.process_config import managed_processes |
|
|
|
@ -24,8 +26,22 @@ PROCS = [ |
|
|
|
|
Proc('modeld', 0.93, atol=0.2), |
|
|
|
|
Proc('dmonitoringmodeld', 0.4), |
|
|
|
|
Proc('encoderd', 0.23), |
|
|
|
|
Proc('mapsd', 0.1), |
|
|
|
|
Proc('navmodeld', 0.05), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
def send_llk_msg(done): |
|
|
|
|
pm = messaging.PubMaster(['liveLocationKalman']) |
|
|
|
|
msg = messaging.new_message('liveLocationKalman') |
|
|
|
|
msg.liveLocationKalman.positionGeodetic = {'value': [32.7174, -117.16277, 0], 'std': [0., 0., 0.], 'valid': True} |
|
|
|
|
msg.liveLocationKalman.calibratedOrientationNED = {'value': [0., 0., 0.], 'std': [0., 0., 0.], 'valid': True} |
|
|
|
|
msg.liveLocationKalman.status = 'valid' |
|
|
|
|
|
|
|
|
|
# Send liveLocationKalman at 20hz |
|
|
|
|
while not done.is_set(): |
|
|
|
|
pm.send('liveLocationKalman', msg) |
|
|
|
|
time.sleep(1/20) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestPowerDraw(unittest.TestCase): |
|
|
|
|
|
|
|
|
@ -46,6 +62,9 @@ class TestPowerDraw(unittest.TestCase): |
|
|
|
|
|
|
|
|
|
def test_camera_procs(self): |
|
|
|
|
baseline = get_power() |
|
|
|
|
done = threading.Event() |
|
|
|
|
thread = threading.Thread(target=send_llk_msg, args=(done,), daemon=True) |
|
|
|
|
thread.start() |
|
|
|
|
|
|
|
|
|
prev = baseline |
|
|
|
|
used = {} |
|
|
|
@ -57,6 +76,7 @@ class TestPowerDraw(unittest.TestCase): |
|
|
|
|
used[proc.name] = now - prev |
|
|
|
|
prev = now |
|
|
|
|
|
|
|
|
|
done.set() |
|
|
|
|
manager_cleanup() |
|
|
|
|
|
|
|
|
|
tab = [] |
|
|
|
|