You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.2 KiB
59 lines
2.2 KiB
#!/usr/bin/env python3
|
|
import argparse
|
|
import os
|
|
import sys
|
|
import numpy as np
|
|
import rerun as rr
|
|
import cereal.messaging as messaging
|
|
from openpilot.common.basedir import BASEDIR
|
|
from openpilot.tools.replay.lib.rp_helpers import (UP, rerunColorPalette,
|
|
get_blank_lid_overlay,
|
|
maybe_update_radar_points, plot_lead,
|
|
plot_model)
|
|
from msgq.visionipc import VisionIpcClient, VisionStreamType
|
|
|
|
os.environ['BASEDIR'] = BASEDIR
|
|
|
|
UP.lidar_zoom = 6
|
|
|
|
def visualize(addr):
|
|
sm = messaging.SubMaster(['radarState', 'liveTracks', 'modelV2'], addr=addr)
|
|
vipc_client = VisionIpcClient("camerad", VisionStreamType.VISION_STREAM_ROAD, True)
|
|
while True:
|
|
if not vipc_client.is_connected():
|
|
vipc_client.connect(True)
|
|
new_data = vipc_client.recv()
|
|
if new_data is None or not new_data.data.any():
|
|
continue
|
|
|
|
sm.update(0)
|
|
lid_overlay = get_blank_lid_overlay(UP)
|
|
if sm.recv_frame['modelV2']:
|
|
plot_model(sm['modelV2'], lid_overlay)
|
|
if sm.recv_frame['radarState']:
|
|
plot_lead(sm['radarState'], lid_overlay)
|
|
liveTracksTime = sm.logMonoTime['liveTracks']
|
|
maybe_update_radar_points(sm['liveTracks'], lid_overlay)
|
|
rr.set_time_nanos("TIMELINE", liveTracksTime)
|
|
rr.log("tracks", rr.SegmentationImage(np.flip(np.rot90(lid_overlay, k=-1), axis=1)))
|
|
|
|
|
|
def get_arg_parser():
|
|
parser = argparse.ArgumentParser(
|
|
description="Show replay data in a UI.",
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
parser.add_argument("ip_address", nargs="?", default="127.0.0.1",
|
|
help="The ip address on which to receive zmq messages.")
|
|
parser.add_argument("--frame-address", default=None,
|
|
help="The frame address (fully qualified ZMQ endpoint for frames) on which to receive zmq messages.")
|
|
return parser
|
|
|
|
|
|
if __name__ == "__main__":
|
|
args = get_arg_parser().parse_args(sys.argv[1:])
|
|
if args.ip_address != "127.0.0.1":
|
|
os.environ["ZMQ"] = "1"
|
|
messaging.reset_context()
|
|
rr.init("RadarPoints", spawn= True)
|
|
rr.log("tracks", rr.AnnotationContext(rerunColorPalette), static=True)
|
|
visualize(args.ip_address)
|
|
|