mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-09-30 11:23:44 +08:00
regen: send wideRoadCameraState (#24863)
* fix camera malfunction * revert * send in one process to fix frames out of sync * not used * revert * fix and add --no-upload for CI testing * fingerprint if source is fw * no FW versions
This commit is contained in:
@@ -15,7 +15,6 @@ from cereal.services import service_list
|
||||
from common.params import Params
|
||||
from common.timeout import Timeout
|
||||
from panda.python import ALTERNATIVE_EXPERIENCE
|
||||
from selfdrive.car.fingerprints import FW_VERSIONS
|
||||
from selfdrive.car.car_helpers import get_car, interfaces
|
||||
from selfdrive.test.process_replay.helpers import OpenpilotPrefix
|
||||
from selfdrive.manager.process import PythonProcess
|
||||
@@ -372,7 +371,7 @@ def setup_env(simulation=False, CP=None):
|
||||
if CP.alternativeExperience == ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS:
|
||||
params.put_bool("DisengageOnAccelerator", False)
|
||||
|
||||
if CP.fingerprintSource == "fw" and CP.carFingerprint in FW_VERSIONS:
|
||||
if CP.fingerprintSource == "fw":
|
||||
params.put("CarParamsCache", CP.as_builder().to_bytes())
|
||||
else:
|
||||
os.environ['SKIP_FW_QUERY'] = "1"
|
||||
|
||||
@@ -127,7 +127,10 @@ def replay_cameras(lr, frs, disable_tqdm=False):
|
||||
]
|
||||
|
||||
def replay_camera(s, stream, dt, vipc_server, frames, size, use_extra_client):
|
||||
pm = messaging.PubMaster([s, ])
|
||||
services = [(s, stream)]
|
||||
if use_extra_client:
|
||||
services.append(("wideRoadCameraState", VisionStreamType.VISION_STREAM_WIDE_ROAD))
|
||||
pm = messaging.PubMaster([s for s, _ in services])
|
||||
rk = Ratekeeper(1 / dt, print_delay_threshold=None)
|
||||
|
||||
img = b"\x00" * int(size[0] * size[1] * 3 / 2)
|
||||
@@ -137,16 +140,15 @@ def replay_cameras(lr, frs, disable_tqdm=False):
|
||||
|
||||
rk.keep_time()
|
||||
|
||||
m = messaging.new_message(s)
|
||||
msg = getattr(m, s)
|
||||
msg.frameId = rk.frame
|
||||
msg.timestampSof = m.logMonoTime
|
||||
msg.timestampEof = m.logMonoTime
|
||||
pm.send(s, m)
|
||||
for s, stream in services:
|
||||
m = messaging.new_message(s)
|
||||
msg = getattr(m, s)
|
||||
msg.frameId = rk.frame
|
||||
msg.timestampSof = m.logMonoTime
|
||||
msg.timestampEof = m.logMonoTime
|
||||
pm.send(s, m)
|
||||
|
||||
vipc_server.send(stream, img, msg.frameId, msg.timestampSof, msg.timestampEof)
|
||||
if use_extra_client:
|
||||
vipc_server.send(VisionStreamType.VISION_STREAM_WIDE_ROAD, img, msg.frameId, msg.timestampSof, msg.timestampEof)
|
||||
vipc_server.send(stream, img, msg.frameId, msg.timestampSof, msg.timestampEof)
|
||||
|
||||
init_data = [m for m in lr if m.which() == 'initData'][0]
|
||||
cameras = tici_cameras if (init_data.initData.deviceType == 'tici') else eon_cameras
|
||||
|
||||
@@ -11,12 +11,12 @@ from selfdrive.test.process_replay.test_processes import FAKEDATA, original_segm
|
||||
from tools.lib.route import SegmentName
|
||||
|
||||
|
||||
def regen_job(segment, disable_tqdm):
|
||||
def regen_job(segment, upload, disable_tqdm):
|
||||
with OpenpilotPrefix():
|
||||
sn = SegmentName(segment[1])
|
||||
fake_dongle_id = 'regen' + ''.join(random.choice('0123456789ABCDEF') for _ in range(11))
|
||||
try:
|
||||
relr = regen_and_save(sn.route_name.canonical_name, sn.segment_num, upload=True, use_route_meta=False, outdir=os.path.join(FAKEDATA, fake_dongle_id), disable_tqdm=disable_tqdm)
|
||||
relr = regen_and_save(sn.route_name.canonical_name, sn.segment_num, upload=upload, use_route_meta=False, outdir=os.path.join(FAKEDATA, fake_dongle_id), disable_tqdm=disable_tqdm)
|
||||
relr = '|'.join(relr.split('/')[-2:])
|
||||
return f' ("{segment[0]}", "{relr}"), '
|
||||
except Exception as e:
|
||||
@@ -26,12 +26,13 @@ def regen_job(segment, disable_tqdm):
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Generate new segments from old ones")
|
||||
parser.add_argument("-j", "--jobs", type=int, default=1)
|
||||
parser.add_argument("--no-upload", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
with concurrent.futures.ProcessPoolExecutor(max_workers=args.jobs) as pool:
|
||||
p = list(pool.map(regen_job, segments, [args.jobs > 1] * args.jobs))
|
||||
p = pool.map(regen_job, segments, [not args.no_upload] * len(segments), [args.jobs > 1] * len(segments))
|
||||
msg = "Copy these new segments into test_processes.py:"
|
||||
for seg in tqdm(p, desc="Generating segments"):
|
||||
for seg in tqdm(p, desc="Generating segments", total=len(segments)):
|
||||
msg += "\n" + str(seg)
|
||||
print()
|
||||
print()
|
||||
|
||||
Reference in New Issue
Block a user