|
|
@ -13,13 +13,14 @@ import cereal.messaging as messaging |
|
|
|
from common.numpy_fast import clip |
|
|
|
from common.numpy_fast import clip |
|
|
|
from common.basedir import BASEDIR |
|
|
|
from common.basedir import BASEDIR |
|
|
|
from selfdrive.config import UIParams as UP |
|
|
|
from selfdrive.config import UIParams as UP |
|
|
|
from tools.replay.lib.ui_helpers import (_BB_TO_FULL_FRAME, _FULL_FRAME_SIZE, |
|
|
|
from tools.replay.lib.ui_helpers import (_BB_TO_FULL_FRAME, |
|
|
|
_INTRINSICS, BLACK, GREEN, |
|
|
|
_INTRINSICS, BLACK, GREEN, |
|
|
|
YELLOW, Calibration, |
|
|
|
YELLOW, Calibration, |
|
|
|
get_blank_lid_overlay, init_plots, |
|
|
|
get_blank_lid_overlay, init_plots, |
|
|
|
maybe_update_radar_points, plot_lead, |
|
|
|
maybe_update_radar_points, plot_lead, |
|
|
|
plot_model, |
|
|
|
plot_model, |
|
|
|
pygame_modules_have_loaded) |
|
|
|
pygame_modules_have_loaded) |
|
|
|
|
|
|
|
from cereal.visionipc.visionipc_pyx import VisionIpcClient, VisionStreamType # pylint: disable=no-name-in-module, import-error |
|
|
|
|
|
|
|
|
|
|
|
os.environ['BASEDIR'] = BASEDIR |
|
|
|
os.environ['BASEDIR'] = BASEDIR |
|
|
|
|
|
|
|
|
|
|
@ -55,7 +56,6 @@ def ui_thread(addr, frame_address): |
|
|
|
camera_surface = pygame.surface.Surface((640, 480), 0, 24).convert() |
|
|
|
camera_surface = pygame.surface.Surface((640, 480), 0, 24).convert() |
|
|
|
top_down_surface = pygame.surface.Surface((UP.lidar_x, UP.lidar_y), 0, 8) |
|
|
|
top_down_surface = pygame.surface.Surface((UP.lidar_x, UP.lidar_y), 0, 8) |
|
|
|
|
|
|
|
|
|
|
|
frame = messaging.sub_sock('roadCameraState', addr=addr, conflate=True) |
|
|
|
|
|
|
|
sm = messaging.SubMaster(['carState', 'longitudinalPlan', 'carControl', 'radarState', 'liveCalibration', 'controlsState', |
|
|
|
sm = messaging.SubMaster(['carState', 'longitudinalPlan', 'carControl', 'radarState', 'liveCalibration', 'controlsState', |
|
|
|
'liveTracks', 'modelV2', 'liveParameters', 'lateralPlan', 'roadCameraState'], addr=addr) |
|
|
|
'liveTracks', 'modelV2', 'liveParameters', 'lateralPlan', 'roadCameraState'], addr=addr) |
|
|
|
|
|
|
|
|
|
|
@ -101,6 +101,7 @@ def ui_thread(addr, frame_address): |
|
|
|
|
|
|
|
|
|
|
|
draw_plots = init_plots(plot_arr, name_to_arr_idx, plot_xlims, plot_ylims, plot_names, plot_colors, plot_styles, bigplots=True) |
|
|
|
draw_plots = init_plots(plot_arr, name_to_arr_idx, plot_xlims, plot_ylims, plot_names, plot_colors, plot_styles, bigplots=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vipc_client = VisionIpcClient("camerad", VisionStreamType.VISION_STREAM_RGB_BACK, True) |
|
|
|
while 1: |
|
|
|
while 1: |
|
|
|
list(pygame.event.get()) |
|
|
|
list(pygame.event.get()) |
|
|
|
|
|
|
|
|
|
|
@ -109,19 +110,19 @@ def ui_thread(addr, frame_address): |
|
|
|
top_down = top_down_surface, lid_overlay |
|
|
|
top_down = top_down_surface, lid_overlay |
|
|
|
|
|
|
|
|
|
|
|
# ***** frame ***** |
|
|
|
# ***** frame ***** |
|
|
|
fpkt = messaging.recv_one(frame) |
|
|
|
if not vipc_client.is_connected(): |
|
|
|
rgb_img_raw = fpkt.roadCameraState.image |
|
|
|
vipc_client.connect(True) |
|
|
|
|
|
|
|
|
|
|
|
num_px = len(rgb_img_raw) // 3 |
|
|
|
rgb_img_raw = vipc_client.recv() |
|
|
|
if rgb_img_raw and num_px in _FULL_FRAME_SIZE.keys(): |
|
|
|
|
|
|
|
FULL_FRAME_SIZE = _FULL_FRAME_SIZE[num_px] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
imgff_shape = (FULL_FRAME_SIZE[1], FULL_FRAME_SIZE[0], 3) |
|
|
|
if rgb_img_raw is not None and rgb_img_raw.any(): |
|
|
|
|
|
|
|
num_px = len(rgb_img_raw) // 3 |
|
|
|
|
|
|
|
imgff_shape = (vipc_client.height, vipc_client.width, 3) |
|
|
|
|
|
|
|
|
|
|
|
if imgff is None or imgff.shape != imgff_shape: |
|
|
|
if imgff is None or imgff.shape != imgff_shape: |
|
|
|
imgff = np.zeros(imgff_shape, dtype=np.uint8) |
|
|
|
imgff = np.zeros(imgff_shape, dtype=np.uint8) |
|
|
|
|
|
|
|
|
|
|
|
imgff = np.frombuffer(rgb_img_raw, dtype=np.uint8).reshape((FULL_FRAME_SIZE[1], FULL_FRAME_SIZE[0], 3)) |
|
|
|
imgff = np.frombuffer(rgb_img_raw, dtype=np.uint8).reshape((vipc_client.height, vipc_client.width, 3)) |
|
|
|
imgff = imgff[:, :, ::-1] # Convert BGR to RGB |
|
|
|
imgff = imgff[:, :, ::-1] # Convert BGR to RGB |
|
|
|
zoom_matrix = _BB_TO_FULL_FRAME[num_px] |
|
|
|
zoom_matrix = _BB_TO_FULL_FRAME[num_px] |
|
|
|
cv2.warpAffine(imgff, zoom_matrix[:2], (img.shape[1], img.shape[0]), dst=img, flags=cv2.WARP_INVERSE_MAP) |
|
|
|
cv2.warpAffine(imgff, zoom_matrix[:2], (img.shape[1], img.shape[0]), dst=img, flags=cv2.WARP_INVERSE_MAP) |
|
|
|