sar3d: GPU port of the notebook with four views
The sar3d processor is rewritten as a checked port of Multi_antenna_3D_clean_v1.ipynb: NVRTC kernels, timing from the trace stamps, notebook parameter names and one cubic SAR_VOXEL_M. It adds front, side, top and 3D views, drops gpr_cpp and the parity tools, and the GUI speed now applies only while the socket speed is ignored.
This commit is contained in:
@@ -72,40 +72,16 @@ class ProcessingLiveConfig:
|
||||
gpr_visible_x_max_m: float = 2.0
|
||||
gpr_visible_z_min_m: float = 0.0
|
||||
gpr_visible_z_max_m: float = 14.0
|
||||
# 3D SAR (sar3d processor) parameters; defaults mirror the reference
|
||||
# notebook Multi_antenna_3D_clean_v1.ipynb. The frequency band, depth gate,
|
||||
# antenna selection and motion parameters are shared with the gpr_* fields.
|
||||
# 3D SAR (sar3d processor) parameters, named after the reference notebook
|
||||
# Multi_antenna_3D_clean_v1.ipynb (SAR_FRAME_RADIUS, BP_GROUND_DEPTH_M, ...).
|
||||
# The band, depth gate, antenna selection, speed and look angle are the
|
||||
# shared gpr_* fields.
|
||||
sar3d_frame_radius: int = 0
|
||||
sar3d_edge_frame_weight: float = 0.8
|
||||
# Frame pitch override; disabled -> the pitch follows gpr_look_angle_deg.
|
||||
sar3d_pitch_override_enabled: bool = False
|
||||
sar3d_pitch_deg: float = 17.5
|
||||
# Height of the lower antenna row above the ground (scene Y=0 = ground).
|
||||
sar3d_ground_depth_m: float = 1.25
|
||||
# Scene grid bounds (metres): X across, Y height above the ground, Z along
|
||||
# the ground away from the radar. Voxels outside the radar depth gate are
|
||||
# zeroed by the mask regardless of the Z window.
|
||||
sar3d_x_min_m: float = -2.0
|
||||
sar3d_x_max_m: float = 2.0
|
||||
sar3d_y_min_m: float = -0.5
|
||||
sar3d_y_max_m: float = 2.0
|
||||
sar3d_z_min_m: float = 0.0
|
||||
sar3d_z_max_m: float = 8.0
|
||||
sar3d_voxel_x_m: float = 0.025
|
||||
sar3d_voxel_y_m: float = 0.02
|
||||
sar3d_voxel_z_m: float = 0.02
|
||||
# Volume finalization: Y-edge margin excluded from normalization, Gaussian
|
||||
# smoothing sigma over (Z, X) planes.
|
||||
sar3d_norm_edge_margin_m: float = 0.3
|
||||
sar3d_smooth_sigma: float = 1.5
|
||||
sar3d_voxel_m: float = 0.02 # SAR_VOXEL_M, one edge for X, Y and Z
|
||||
sar3d_bp_ground_depth_m: float = 1.25
|
||||
sar3d_comp_range_power: float = 0.3
|
||||
# Fallback frame segmentation when per-trace capture stamps are absent.
|
||||
sar3d_tx_per_segment: int = 2
|
||||
sar3d_use_compensation: bool = True
|
||||
sar3d_normalize_pairs: bool = True
|
||||
# Bottom-view projection angle around the vertical Y axis, degrees:
|
||||
# 0 = front view (X horizontal), 90 = side view (Z horizontal).
|
||||
sar3d_bottom_view_deg: float = 0.0
|
||||
sar3d_normalize_each_frame: bool = True
|
||||
# When true, the C++ data_processor ignores socket-supplied vlc updates
|
||||
# and keeps using `gpr_speed_m_s` from this file.
|
||||
ignore_socket_speed: bool = False
|
||||
@@ -171,26 +147,11 @@ class ProcessingLiveConfig:
|
||||
"gpr_visible_z_min_m": float(self.gpr_visible_z_min_m),
|
||||
"gpr_visible_z_max_m": float(self.gpr_visible_z_max_m),
|
||||
"sar3d_frame_radius": int(self.sar3d_frame_radius),
|
||||
"sar3d_edge_frame_weight": float(self.sar3d_edge_frame_weight),
|
||||
"sar3d_pitch_override_enabled": bool(self.sar3d_pitch_override_enabled),
|
||||
"sar3d_pitch_deg": float(self.sar3d_pitch_deg),
|
||||
"sar3d_ground_depth_m": float(self.sar3d_ground_depth_m),
|
||||
"sar3d_x_min_m": float(self.sar3d_x_min_m),
|
||||
"sar3d_x_max_m": float(self.sar3d_x_max_m),
|
||||
"sar3d_y_min_m": float(self.sar3d_y_min_m),
|
||||
"sar3d_y_max_m": float(self.sar3d_y_max_m),
|
||||
"sar3d_z_min_m": float(self.sar3d_z_min_m),
|
||||
"sar3d_z_max_m": float(self.sar3d_z_max_m),
|
||||
"sar3d_voxel_x_m": float(self.sar3d_voxel_x_m),
|
||||
"sar3d_voxel_y_m": float(self.sar3d_voxel_y_m),
|
||||
"sar3d_voxel_z_m": float(self.sar3d_voxel_z_m),
|
||||
"sar3d_norm_edge_margin_m": float(self.sar3d_norm_edge_margin_m),
|
||||
"sar3d_smooth_sigma": float(self.sar3d_smooth_sigma),
|
||||
"sar3d_voxel_m": float(self.sar3d_voxel_m),
|
||||
"sar3d_bp_ground_depth_m": float(self.sar3d_bp_ground_depth_m),
|
||||
"sar3d_comp_range_power": float(self.sar3d_comp_range_power),
|
||||
"sar3d_tx_per_segment": int(self.sar3d_tx_per_segment),
|
||||
"sar3d_use_compensation": bool(self.sar3d_use_compensation),
|
||||
"sar3d_normalize_pairs": bool(self.sar3d_normalize_pairs),
|
||||
"sar3d_bottom_view_deg": float(self.sar3d_bottom_view_deg),
|
||||
"sar3d_normalize_each_frame": bool(self.sar3d_normalize_each_frame),
|
||||
"ignore_socket_speed": bool(self.ignore_socket_speed),
|
||||
"reprocess_current_result": bool(self.reprocess_current_result),
|
||||
"history_command_seq": int(self.history_command_seq),
|
||||
|
||||
Reference in New Issue
Block a user