mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-21 14:02:05 +08:00
regen: ecamera support (#27999)
* Add wideRoadCameraState support in regen * Fix for ecam FrameReader when use_route_meta * Pylint fixes
This commit is contained in:
@@ -279,7 +279,7 @@ CONFIGS = [
|
||||
fake_pubsubmaster=True,
|
||||
submaster_config={
|
||||
'ignore_avg_freq': ['radarState', 'longitudinalPlan', 'driverCameraState', 'driverMonitoringState'], # dcam is expected at 20 Hz
|
||||
'ignore_alive': ['wideRoadCameraState'], # TODO: Add to regen
|
||||
'ignore_alive': [],
|
||||
}
|
||||
),
|
||||
ProcessConfig(
|
||||
|
||||
@@ -14,7 +14,7 @@ from cereal.services import service_list
|
||||
from cereal.visionipc import VisionIpcServer, VisionStreamType
|
||||
from common.params import Params
|
||||
from common.realtime import Ratekeeper, DT_MDL, DT_DMON, sec_since_boot
|
||||
from common.transformations.camera import eon_f_frame_size, eon_d_frame_size, tici_f_frame_size, tici_d_frame_size
|
||||
from common.transformations.camera import eon_f_frame_size, eon_d_frame_size, tici_f_frame_size, tici_d_frame_size, tici_e_frame_size
|
||||
from panda.python import Panda
|
||||
from selfdrive.car.toyota.values import EPS_SCALE
|
||||
from selfdrive.manager.process import ensure_running
|
||||
@@ -123,8 +123,9 @@ def replay_cameras(lr, frs, disable_tqdm=False):
|
||||
("driverCameraState", DT_DMON, eon_d_frame_size, VisionStreamType.VISION_STREAM_DRIVER, False),
|
||||
]
|
||||
tici_cameras = [
|
||||
("roadCameraState", DT_MDL, tici_f_frame_size, VisionStreamType.VISION_STREAM_ROAD, True),
|
||||
("driverCameraState", DT_MDL, tici_d_frame_size, VisionStreamType.VISION_STREAM_DRIVER, False),
|
||||
("roadCameraState", DT_MDL, tici_f_frame_size, VisionStreamType.VISION_STREAM_ROAD, False),
|
||||
("wideRoadCameraState", DT_MDL, tici_e_frame_size, VisionStreamType.VISION_STREAM_WIDE_ROAD, False),
|
||||
("driverCameraState", DT_DMON, tici_d_frame_size, VisionStreamType.VISION_STREAM_DRIVER, False),
|
||||
]
|
||||
|
||||
def replay_camera(s, stream, dt, vipc_server, frames, size, use_extra_client):
|
||||
@@ -311,15 +312,28 @@ def regen_segment(lr, frs=None, outdir=FAKEDATA, disable_tqdm=False):
|
||||
return seg_path
|
||||
|
||||
|
||||
def regen_and_save(route, sidx, upload=False, use_route_meta=True, outdir=FAKEDATA, disable_tqdm=False):
|
||||
def regen_and_save(route, sidx, upload=False, use_route_meta=False, outdir=FAKEDATA, disable_tqdm=False):
|
||||
if use_route_meta:
|
||||
r = Route(route)
|
||||
lr = LogReader(r.log_paths()[sidx])
|
||||
fr = FrameReader(r.camera_paths()[sidx])
|
||||
if r.ecamera_paths()[sidx] is not None:
|
||||
wfr = FrameReader(r.ecamera_paths()[sidx])
|
||||
else:
|
||||
wfr = None
|
||||
else:
|
||||
lr = LogReader(f"cd:/{route.replace('|', '/')}/{sidx}/rlog.bz2")
|
||||
fr = FrameReader(f"cd:/{route.replace('|', '/')}/{sidx}/fcamera.hevc")
|
||||
rpath = regen_segment(lr, {'roadCameraState': fr}, outdir=outdir, disable_tqdm=disable_tqdm)
|
||||
device_type = next(iter(lr)).initData.deviceType
|
||||
if device_type == 'tici':
|
||||
wfr = FrameReader(f"cd:/{route.replace('|', '/')}/{sidx}/ecamera.hevc")
|
||||
else:
|
||||
wfr = None
|
||||
|
||||
frs = {'roadCameraState': fr}
|
||||
if wfr is not None:
|
||||
frs['wideRoadCameraState'] = wfr
|
||||
rpath = regen_segment(lr, frs, outdir=outdir, disable_tqdm=disable_tqdm)
|
||||
|
||||
# compress raw rlog before uploading
|
||||
with open(os.path.join(rpath, "rlog"), "rb") as f:
|
||||
@@ -344,7 +358,8 @@ def regen_and_save(route, sidx, upload=False, use_route_meta=True, outdir=FAKEDA
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Generate new segments from old ones")
|
||||
parser.add_argument("--upload", action="store_true", help="Upload the new segment to the CI bucket")
|
||||
parser.add_argument("--outdir", help="log output dir", default=FAKEDATA)
|
||||
parser.add_argument("route", type=str, help="The source route")
|
||||
parser.add_argument("seg", type=int, help="Segment in source route")
|
||||
args = parser.parse_args()
|
||||
regen_and_save(args.route, args.seg, args.upload)
|
||||
regen_and_save(args.route, args.seg, args.upload, outdir=args.outdir)
|
||||
|
||||
Reference in New Issue
Block a user