Browse Source

feat(physics): Implement true 1/R^4 radar range equation via area integration and millimeter phase jitter

This physics engine overhaul introduces two major fidelity upgrades to the Shenron pipeline: 1. Physical Area Integration: Tethers incident power natively to the solid angle expanding physical area (dTheta*dPhi*R^2) ensuring cross-section energy output scales independently of LiDAR point cloud resolution. 2. Millimeter Jitter: Maps physical property roughness (e.g., 5mm concrete, 50um metal) as a sub-wavelength Gaussian distance distorter. This fractures the 'perfect mathematical mirror' bug inherent to flat CARLA meshes by substituting naive coherent summation (N^2) with physical diffuse Rayleigh scattering (N). Includes addition of interactive 3-slide HTML and dark-mode simulation presentation decks for project reporting.
main
RUSHIL AMBARISH KADU 1 month ago
parent
commit
0cb30a6471
  1. BIN
      intel/presentations/assets/pipeline_bg.png
  2. BIN
      intel/presentations/assets/title_bg.png
  3. 342
      intel/presentations/presentation.html
  4. 446
      intel/presentations/presentation_3_slide_navy.html
  5. 23
      scripts/ISOLATE/e2e_agent_sem_lidar2shenron_package/shenron/Sceneset.py

BIN
intel/presentations/assets/pipeline_bg.png

After

Width: 1024  |  Height: 1024  |  Size: 461 KiB

BIN
intel/presentations/assets/title_bg.png

After

Width: 1024  |  Height: 1024  |  Size: 565 KiB

342
intel/presentations/presentation.html

@ -0,0 +1,342 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fox CARLA ADAS Simulation Platform</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root {
--bg-page: #f1f5f9; /* Slate 100 */
--bg-slide: #ffffff;
--text-main: #0f172a; /* Slate 900 */
--text-muted: #475569; /* Slate 600 */
--accent-primary: #0284c7; /* Light Blue 600 */
--accent-soft: #e0f2fe; /* Light Blue 100 */
--border-light: #cbd5e1;
--color-success: #16a34a;
--color-warning: #eab308;
--color-danger: #ef4444;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: var(--bg-page);
font-family: 'Inter', sans-serif;
color: var(--text-main);
display: flex;
flex-direction: column;
align-items: center;
padding: 40px 0;
gap: 40px;
}
/* 1800x900 Rigid Container for each slide */
.slide {
width: 1800px;
height: 900px;
background-color: var(--bg-slide);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
border-radius: 12px;
overflow: hidden;
position: relative;
display: flex;
flex-direction: column;
padding: 80px 100px;
border: 1px solid var(--border-light);
flex-shrink: 0;
}
/* Typography */
h1 { font-size: 72px; font-weight: 700; color: var(--text-main); line-height: 1.1; margin-bottom: 24px; letter-spacing: -1px; }
h2 { font-size: 56px; font-weight: 700; color: var(--accent-primary); margin-bottom: 20px; border-bottom: 4px solid var(--accent-soft); padding-bottom: 12px; display: inline-block; }
h3 { font-size: 32px; font-weight: 600; margin-bottom: 16px; color: var(--text-main); }
h4 { font-size: 24px; font-weight: 600; color: var(--accent-primary); margin-bottom: 10px; }
p { font-size: 26px; line-height: 1.6; color: var(--text-muted); margin-bottom: 24px; }
ul { margin-left: 32px; margin-bottom: 24px; }
li { font-size: 26px; line-height: 1.6; color: var(--text-muted); margin-bottom: 12px; }
.bold { font-weight: 600; color: var(--text-main); }
.highlight { color: var(--accent-primary); font-weight: 600; }
/* Slide specific background for Title Slide */
.slide-title {
background-image: linear-gradient(rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0.95)), url('assets/title_bg.png');
background-size: cover;
background-position: center;
justify-content: center;
align-items: center;
text-align: center;
}
.slide-title h1 {
font-size: 96px;
margin-bottom: 30px;
}
.slide-title p {
font-size: 36px;
max-width: 1200px;
margin: 0 auto;
}
.company-logo {
position: absolute;
top: 60px;
left: 80px;
font-size: 48px;
font-weight: 700;
color: var(--accent-primary);
}
/* Layouts */
.body-grid-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
flex-grow: 1;
margin-top: 20px;
}
.body-grid-3 {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 40px;
flex-grow: 1;
margin-top: 20px;
}
/* Custom UI Components */
.card {
background: #f8fafc;
border: 2px solid var(--border-light);
border-radius: 12px;
padding: 30px;
display: flex;
flex-direction: column;
}
.card-icon {
font-size: 40px;
color: var(--accent-primary);
margin-bottom: 20px;
}
.alert-box {
background-color: var(--accent-soft);
border-left: 6px solid var(--accent-primary);
padding: 24px;
border-radius: 0 8px 8px 0;
margin: 20px 0;
}
.alert-box.danger {
background-color: #fef2f2;
border-left-color: var(--color-danger);
}
.alert-box.success {
background-color: #f0fdf4;
border-left-color: var(--color-success);
}
/* Empty Image Placeholders */
.image-placeholder {
width: 100%;
height: 100%;
background-color: #f8fafc;
border: 4px dashed var(--accent-primary);
border-radius: 16px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 40px;
color: var(--accent-primary);
}
.image-placeholder.horizontal {
min-height: 400px;
}
.image-placeholder i {
font-size: 64px;
margin-bottom: 24px;
}
.image-placeholder .title {
font-size: 28px;
font-weight: 700;
margin-bottom: 12px;
}
.image-placeholder .instructions {
font-size: 20px;
color: var(--text-muted);
max-width: 80%;
}
.tag {
display: inline-block;
background-color: var(--accent-soft);
color: var(--accent-primary);
padding: 6px 16px;
border-radius: 20px;
font-size: 18px;
font-weight: 600;
margin-right: 10px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<!-- Slide 1: Title -->
<div class="slide slide-title">
<div class="company-logo">FOX <span style="color:var(--text-main);">ADAS</span></div>
<div style="background: rgba(255,255,255,0.7); padding: 60px; border-radius: 24px; backdrop-filter: blur(10px); border: 2px solid white; box-shadow: 0 10px 40px rgba(0,0,0,0.05);">
<h1>High-Fidelity Deterministic<br><span class="highlight">Radar Simulation</span></h1>
<p>Moving from bounding-box emulation to mathematically pure, hardware-configurable physics validating the Shenron Pipeline.</p>
</div>
</div>
<!-- Slide 2: The Vision & Physical Approach -->
<div class="slide">
<h2>The Physical Foundation: 1/R⁴ Physics</h2>
<div class="body-grid-2">
<div>
<p>Standard simulator bounding-boxes bypass the complex realities of electromagnetic propagation. The Shenron engine enforces strict free-space physics for absolute accuracy.</p>
<div class="card" style="margin-bottom: 30px;">
<h3><i class="card-icon fa-solid fa-bolt"></i> Milestone R4: Pure Physics</h3>
<p>We abandoned artificial density and distance normalizations. All generated scatterers now strictly follow the <span class="bold highlight">Radar Range Equation (1/R⁴)</span>. A building at distance naturally drops in power compared to a vehicle up close.</p>
</div>
<div class="card">
<h3><i class="card-icon fa-solid fa-car-burst"></i> Deterministic Coordinate Control</h3>
<p>Standard Traffic Manager leads to high variance. Using a <span class="bold">Spawn-and-Move</span> logic with enforced Velocity overrides guarantees complex scenarios (like left-turn cut-ins) occur at the exact same millisecond every run.</p>
</div>
</div>
<div>
<div class="image-placeholder">
<i class="fa-solid fa-atom"></i>
<div class="title">Insert Screenshot: 1/R⁴ Contrast</div>
<div class="instructions">Provide a side-by-side or CFAR output showing how distant heavy clutter is naturally attenuated while the closer vehicle is correctly highlighted due to the inverse square law path loss.</div>
</div>
</div>
</div>
</div>
<!-- Slide 3: Unprecedented Configurability -->
<div class="slide">
<h2>Unprecedented Configurability: "Knobs & Dials"</h2>
<div class="body-grid-2">
<div>
<p>The Shenron architecture eliminates hardcoded physical scalars. Instead, it exposes a "Control Panel" mimicking real hardware tuning. <span class="bold">If we do it on the test track, we can do it in the simulation.</span></p>
<h3>Supported Hardware Profiles</h3>
<div style="margin-bottom: 20px;">
<span class="tag">TI AWRL1432 (ADAS)</span>
<span class="tag">Radarbook (Research)</span>
<span class="tag">TI Cascade (MIMO)</span>
</div>
<ul style="margin-top: 30px;">
<li><span class="highlight">Bandwidth (B) & Chirps:</span> Accurately adjust range and doppler resolution directly reflecting radar specifications.</li>
<li><span class="highlight">System Gain Calibration (110dB):</span> Modify the global signal chain gain ($P_t G_t G_r$) without touching the core physics engine.</li>
<li><span class="highlight">Antenna Arrays (nRx/nTx):</span> Instantly swap between 6 virtual receivers (1432) or 8 virtual receivers (Radarbook) to measure DSP beamforming limits.</li>
<li><span class="highlight">Noise Amplitude:</span> Dynamically inject AWGN thermal noise to test CFAR floor robustness.</li>
</ul>
</div>
<div>
<div class="image-placeholder">
<i class="fa-solid fa-sliders"></i>
<div class="title">Insert Code/UI Screenshot: Customizing Radar</div>
<div class="instructions">Please insert a screenshot showing `ConfigureRadar.py` or the specific JSON payload being passed via the dashboard to demonstrate how easily we swap between a 1432 profile and a Radarbook profile.</div>
</div>
</div>
</div>
</div>
<!-- Slide 4: Deep Observability & Metrology -->
<div class="slide">
<h2>Deep Observability: The Metrology Suite</h2>
<div class="body-grid-2">
<div>
<p>Instead of treating synthetic radar output as a "black box," our new pipeline visualizes the entire signal chain. This allows engineers to cross-validate ADC output against physical ground truth.</p>
<div class="alert-box success">
<h4>The "Radar Blue" Standard</h4>
<p>We instituted phase-preserving <span class="bold">Doppler-Slice Synthesis</span> to replace artifact-heavy coherent integration, resulting in pristine, sharp heatmaps.</p>
</div>
<ul>
<li><span class="bold">Range-Doppler (RD):</span> Extracts target separation and velocity, preventing velocity zeroing.</li>
<li><span class="bold">Range-Azimuth (RA):</span> Confirms azimuthal accuracy utilizing Zero-Tilt Symmetry (120° FOV perfectly aligned to boresight).</li>
<li><span class="bold">CFAR Gate:</span> Visualizes adaptive thresholds distinguishing targets from the synthesized noise floor.</li>
</ul>
</div>
<div>
<div class="image-placeholder">
<i class="fa-solid fa-layer-group"></i>
<div class="title">Insert Screenshot: 3-Plot Metrology Suite</div>
<div class="instructions">Insert a screenshot of the Foxglove layout showing the 3 core metrology graphs (RD, RA, and CFAR) running alongside the 3D Pointcloud view to illustrate deep observability.</div>
</div>
</div>
</div>
</div>
<!-- Slide 5: Major Breakthroughs & Bug Squashing Engine -->
<div class="slide">
<h2>Major Breakthroughs & Bug Squashing Engine</h2>
<p>Achieving this level of physical simulation required identifying and tearing down several legacy miscalculations that corrupted early models.</p>
<div class="body-grid-2">
<div class="card">
<h3><i class="fa-solid fa-satellite-dish"></i> The Isotropic Illumination Fix</h3>
<p>The deepest physics problem resolved. Early simulation allowed side-targets at 80° to return 100% power, masking forward vehicles. <br><br>We implemented <span class="highlight">Horizontal (Azimuth) & Vertical (Elevation) Directional Gain Patterns</span>. Clutter at wide angles is now correctly attenuated by ~15-20 dB, letting the true target dominate.</p>
</div>
<div class="card" style="display: flex; gap: 20px; flex-direction: column;">
<div>
<h4><i class="fa-solid fa-bug" style="color:var(--color-danger); margin-right:8px;"></i> The Cos(Cos) Reflection Error</h4>
<p style="font-size:22px; margin-bottom:0;">Recovered 46% of lost signal energy by tracking down a double-cosine application in the Open3D coordinate translation pipeline.</p>
</div>
<div style="height:1px; background:var(--border-light); width:100%;"></div>
<div>
<h4><i class="fa-solid fa-bug" style="color:var(--color-danger); margin-right:8px;"></i> Floating Point Data Packing</h4>
<p style="font-size:22px; margin-bottom:0;">Resolved the infamous "0.0 velocity" bug by utilizing `np.view(np.uint32)` to correctly deserialize perfectly packed 32-bit semantic tags.</p>
</div>
</div>
</div>
</div>
<!-- Slide 6: The Full Automation Pipeline -->
<div class="slide">
<h2>The Full Automation Pipeline</h2>
<p>A completely automated workflow enabling one-click testbenches, fully orchestrated via a web dashboard.</p>
<div class="image-placeholder horizontal" style="background-image: linear-gradient(rgba(248, 250, 252, 0.9), rgba(248, 250, 252, 0.9)), url('assets/pipeline_bg.png'); background-size: cover; background-position: center;">
<i class="fa-solid fa-network-wired" style="color: var(--accent-primary);"></i>
<div class="title">Insert Graphic/Screenshot: Pipeline & Dashboard</div>
<div class="instructions" style="color:var(--text-main);">
Place a diagram or screenshot here showing the flow:<br><br>
<b>1. GUI Dashboard (with Hardware GPU Idle Mode)</b> &rarr; <b>2. CARLA Simulator</b> &rarr; <b>3. Shenron Physics</b> &rarr; <b>4. MCAP Serializer</b> &rarr; <b>5. Foxglove Studio</b>
</div>
</div>
<div style="margin-top: 40px; text-align: center;">
<p>From deterministic scenario configuration to a 3D Foxglove validation pointcloud — without manual intervention.</p>
</div>
</div>
</body>
</html>

446
intel/presentations/presentation_3_slide_navy.html

@ -0,0 +1,446 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3 Slide Fox ADAS Presentation</title>
<link href="https://fonts.googleapis.com/css2?family=Segoe+UI:wght@400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root {
/* Mimicking the specific dark navy of the image */
--bg-page: #e0e4eb;
--slide-bg-top: #0b224e;
--slide-bg-bottom: #040d1e;
--accent-yellow: #facc15;
--text-main: #ffffff;
--text-secondary: #cbd5e1;
--border-glow: #1e3a8a;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: var(--bg-page);
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
padding: 40px 0;
gap: 40px;
}
/* 1800x900 Rigid Container */
.slide {
width: 1800px;
height: 900px;
background: linear-gradient(170deg, var(--slide-bg-top) 0%, var(--slide-bg-bottom) 100%);
border: 1px solid rgba(255, 255, 255, 0.1);
position: relative;
display: flex;
flex-direction: column;
padding: 80px 120px;
overflow: hidden;
flex-shrink: 0;
}
/* Inner subtle glow line behind title */
.slide::before {
content: '';
position: absolute;
top: 200px;
left: 100px;
right: 100px;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
}
/* Typography */
h1 {
font-size: 64px;
font-weight: 700;
color: var(--accent-yellow);
margin-bottom: 70px;
}
.white-text { color: var(--text-main); }
h3 { font-size: 32px; font-weight: 600; margin-bottom: 20px; color: var(--text-main); }
p { font-size: 26px; line-height: 1.6; color: var(--text-secondary); margin-bottom: 20px; }
/* Lists */
ul { list-style: none; padding: 0; margin-bottom: 40px;}
li {
font-size: 28px;
line-height: 1.5;
color: var(--text-main);
margin-bottom: 30px;
display: flex;
align-items: flex-start;
gap: 15px;
}
li i {
color: var(--text-main);
font-size: 30px;
margin-top: 5px;
background: rgba(255,255,255,0.1);
padding: 6px;
border-radius: 50%;
border: 2px solid var(--accent-yellow);
color: var(--accent-yellow);
}
.li-desc {
font-size: 22px;
color: var(--text-secondary);
margin-top: 8px;
display: block;
}
/* ----- Slide 1 Elements ----- */
.s1-grid {
display: flex;
height: 100%;
flex-direction: column;
}
.s1-images {
display: flex;
gap: 40px;
margin-top: auto;
justify-content: flex-start;
height: 350px;
}
.img-box {
flex: 1;
background: rgba(0,0,0,0.5);
border: 2px solid rgba(255,255,255,0.2);
position: relative;
display: flex;
align-items: center;
justify-content: center;
color: rgba(255,255,255,0.5);
font-size: 24px;
}
.img-caption {
position: absolute;
bottom: -40px;
width: 100%;
text-align: center;
font-size: 24px;
font-weight: 600;
color: var(--text-main);
}
/* ----- Slide 2 Elements ----- */
.s2-flow {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 40px;
margin-bottom: 60px;
background: rgba(255,255,255,0.03);
padding: 30px;
border-radius: 12px;
border: 1px solid rgba(255,255,255,0.05);
}
.flow-node {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: 15px;
flex: 1;
}
.flow-node .label {
font-size: 24px;
font-weight: 600;
}
.flow-arrow i {
color: var(--accent-yellow);
font-size: 40px;
}
.flow-box {
width: 250px;
height: 150px;
background: rgba(0,0,0,0.4);
border: 1px solid rgba(255,255,255,0.2);
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
color: rgba(255,255,255,0.5);
}
.s2-bullets {
display: flex;
flex-direction: column;
align-items: center;
gap: 25px;
margin-top: 40px;
}
.s2-bullet-line {
display: flex;
align-items: center;
width: 80%;
gap: 20px;
}
.s2-bullet-line::before, .s2-bullet-line::after {
content: '';
flex-grow: 1;
height: 1px;
background: rgba(255,255,255,0.3);
}
.s2-bullet-text {
font-size: 32px;
font-weight: 600;
text-align: center;
}
.s2-bullet-subtext {
font-size: 20px;
color: var(--text-secondary);
text-align: center;
font-weight: 400;
width: 80%;
margin: 0 auto;
margin-top: -15px;
margin-bottom: 10px;
}
/* ----- Slide 3 Elements ----- */
.s3-header {
text-align: center;
margin-bottom: 100px;
}
.s3-cards {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 40px;
margin-bottom: 80px;
}
.s3-card {
background: linear-gradient(180deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.02) 100%);
border-top: 2px solid rgba(255,255,255,0.2);
border-left: 1px solid rgba(255,255,255,0.05);
border-right: 1px solid rgba(255,255,255,0.05);
border-bottom: 2px solid rgba(0,0,0,0.5);
padding: 40px 30px;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 0 20px 40px rgba(0,0,0,0.5);
}
.card-icon-top {
background: linear-gradient(135deg, #2563eb, #1d4ed8);
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
margin-bottom: 30px;
border: 2px solid rgba(255,255,255,0.5);
transform: translateY(-70px);
position: absolute;
}
.card-icon-top i { color: white; font-size: 30px; }
.s3-card h3 {
font-size: 32px;
text-align: center;
min-height: 80px;
margin-top: 20px;
}
.s3-card ul {
width: 100%;
margin-top: 20px;
margin-bottom: 0;
}
.s3-card li {
font-size: 20px;
margin-bottom: 20px;
display: flex;
align-items: flex-start;
gap: 15px;
}
.s3-card li::before {
content: '•';
color: var(--accent-yellow);
font-size: 30px;
line-height: 20px;
}
.s3-card li i { display: none; }
.s3-footer {
text-align: center;
font-size: 32px;
font-weight: 600;
margin-top: auto;
color: var(--text-secondary);
}
.s3-footer span { color: var(--accent-yellow); }
</style>
</head>
<body>
<!-- Slide 1: Deterministic ADAS Simulation -->
<div class="slide">
<h1>Deterministic ADAS Simulation</h1>
<div class="s1-grid">
<ul>
<li>
<i class="fa-solid fa-check"></i>
<div>
From Random to Repeatable Deterministic Scenarios
<span class="li-desc">Bypassing Traffic Manager variance, we utilize direct `set_target_velocity` coordinate control to guarantee exact "Spawn-and-Move" maneuvers—such as cut-ins—execute flawlessly at the same millisecond every run.</span>
</div>
</li>
<li>
<i class="fa-solid fa-check"></i>
<div>
Unprecedented Physics-Accurate Radar Simulation
<span class="li-desc">Standard bounding boxes fail complex realities. We returned to the laws of electromagnetism, implementing true 1/R⁴ power-decay physics and material-based Fresnel reflections.</span>
</div>
</li>
<li>
<i class="fa-solid fa-check"></i>
<div>
Real-Time Multi-Sensor Metrology
<span class="li-desc">Synchronously tracking RGB, LiDAR, and phase-preserving Doppler-Slice Radar data perfectly aligned at 30 FPS for visual ground truth comparison.</span>
</div>
</li>
</ul>
<div class="s1-images">
<div class="img-box" style="width: 700px;">
[ Insert Image: CARLA RGB/Game View ]
<div class="img-caption">CARLA Simulation</div>
</div>
<div class="img-box" style="width: 700px;">
[ Insert Image: Radar Heatmap (Foxglove) ]
<div class="img-caption">Shenron Radar</div>
</div>
</div>
</div>
</div>
<!-- Slide 2: Physics-Based Shenron Engine -->
<div class="slide">
<h1><span class="white-text">Shenron:</span> Physics-Based Radar Engine</h1>
<div class="s2-flow">
<div class="flow-node">
<div class="label">CARLA & Synchronizer</div>
<div class="flow-box">[ Graphic or Logo ]</div>
</div>
<div class="flow-arrow"><i class="fa-solid fa-arrow-right"></i></div>
<div class="flow-node">
<div class="label">Shenron Physics Engine</div>
<div class="flow-box">[ CPU/GPU Graphic ]</div>
</div>
<div class="flow-arrow"><i class="fa-solid fa-arrow-right"></i></div>
<div class="flow-node">
<div class="label">Radar Signal Processing</div>
<div class="flow-box">[ Heatmap / DSP ]</div>
</div>
<div class="flow-arrow"><i class="fa-solid fa-arrow-right"></i></div>
<div class="flow-node">
<div class="label">ADAS-Ready Output</div>
<div class="flow-box">[ Point Cloud / MCAP ]</div>
</div>
</div>
<div class="s2-bullets">
<div class="s2-bullet-line">
<div class="s2-bullet-text">1/R⁴ Accurate Spatial Decay Physics</div>
</div>
<div class="s2-bullet-subtext">Dropped artificial density variables. Reflected energy now strictly attenuates by the inverse square law, forcing massive background structures to cede dominance to near-field targets.</div>
<div class="s2-bullet-line">
<div class="s2-bullet-text">Directional Antenna Pattern Modeling</div>
</div>
<div class="s2-bullet-subtext">Resolved the "Isotropic Illumination" limit by implementing true Azimuth & Elevation gain logic. Radar blind-spots act realistically, attenuating 80° side-wall clutter by ~20dB.</div>
<div class="s2-bullet-line">
<div class="s2-bullet-text">Modular Hardware-Matched Pipeline</div>
</div>
<div class="s2-bullet-subtext">The "Knobs and Dials" philosophy completely separates base physics from simulation parameters. Easily swap profiles between AWRL1432, Radarbook, and MIMO Cascade hardware.</div>
</div>
</div>
<!-- Slide 3: Validation -->
<div class="slide">
<div class="s3-header">
<h1 style="margin-bottom: 0;">From <span class="white-text">Simulation</span> to Validation</h1>
</div>
<div class="s3-cards">
<!-- Card 1 -->
<div class="s3-card" style="position: relative;">
<div class="card-icon-top"><i class="fa-solid fa-check"></i></div>
<h3>Physics-Driven<br>Metrology Accuracy</h3>
<ul>
<li>Zero-Tilt Symmetry guarantees 120° FOV precision right down the boresight.</li>
<li>Doppler-Slice phase continuity resolves standard blur, delivering sharp "Radar Blue" PointCloud clusters.</li>
</ul>
</div>
<!-- Card 2 -->
<div class="s3-card" style="position: relative;">
<div class="card-icon-top"><i class="fa-solid fa-check"></i></div>
<h3>Real-World Hardware<br>Calibration Logic</h3>
<ul>
<li>110dB System Gain tuning aligns exact radar spec hardware profiles.</li>
<li>Modifiable Bandwidth (B), Chirp Repetition, and virtual receiver sets to replicate DSP behavior dynamically.</li>
</ul>
</div>
<!-- Card 3 -->
<div class="s3-card" style="position: relative;">
<div class="card-icon-top"><i class="fa-solid fa-check"></i></div>
<h3>Automated Core<br>Testing Platform</h3>
<ul>
<li>GUI Dashboard orchestrating idle-mode GPU utilization for Shenron rendering safely.</li>
<li>Direct pipeline translating serialized JSONL/NPY data into FOXGLOVE MCAP standards.</li>
</ul>
</div>
</div>
<div class="s3-footer">
Bridging the <span>Gap</span> from Research to Real-World Deployment
</div>
</div>
</body>
</html>

23
scripts/ISOLATE/e2e_agent_sem_lidar2shenron_package/shenron/Sceneset.py

@ -240,7 +240,20 @@ class Sceneset():
# o3d.visualization.draw_geometries([pc]) # o3d.visualization.draw_geometries([pc])
loss_att,_,_ = get_loss_3(self.rad_scene, rho, az_boresight, elev_angle, angles_carla, radar, use_spec=False, use_diffused=True, no_material=False) loss_att,_,_ = get_loss_3(self.rad_scene, rho, az_boresight, elev_angle, angles_carla, radar, use_spec=False, use_diffused=True, no_material=False)
return rho, theta, loss_att, speed, angles
# --- Iteration 38: Phase Randomization (Millimeter Jitter) ---
# Apply physical roughness to distance to break impossible coherent summation
# (The Perfect Mirror effect) on mathematically flat CARLA meshes.
material_idx = np.asarray(self.rad_scene[:, 4], dtype='int')
# Roughness mapping in meters (Aligned with get_loss_3 physical traits)
# 0=Unlw, 1=Wood(5mm), 2=Conc(5mm), 3=Hum(10mm), 4=Metal(50um)
roughness_map = np.array([0.0, 0.005, 0.005, 0.01, 0.00005])
jitter_std = roughness_map[material_idx]
# Randomly shift the distance for each point by its physical roughness magnitude
rho_jittered = rho + np.random.normal(loc=0.0, scale=jitter_std)
return rho_jittered, theta, loss_att, speed, angles
def get_loss(points, rho, angles, radar, use_spec = True, use_diffused = True, no_material = False): def get_loss(points, rho, angles, radar, use_spec = True, use_diffused = True, no_material = False):
@ -447,9 +460,13 @@ def get_loss_3(points, rho, az_boresight, elev_angle, angles, radar, use_spec =
phi_deg = np.rad2deg(np.abs(np.pi / 2 - elev_angle)) phi_deg = np.rad2deg(np.abs(np.pi / 2 - elev_angle))
G_ant = np.exp(-2.77 * np.power(phi_deg / radar.vertical_beamwidth, 2)) G_ant = np.exp(-2.77 * np.power(phi_deg / radar.vertical_beamwidth, 2))
# --- Iteration 37: Area Integration (Resolution Independence) ---
# A single LiDAR point represents an expanding physical patch of Area = R^2 * dTheta * dPhi
point_area = np.power(rho, 2) * voxel_theta * voxel_phi
# --- Iteration 17 preserved: Pure Physical 1/R^2 Tx path loss --- # --- Iteration 17 preserved: Pure Physical 1/R^2 Tx path loss ---
# Each LiDAR point acts as a raw unit scatterer. No legacy density normalization.
P_incident = (1 / np.power(rho, tx_dist_loss_exponent)) * K_sq * G_ant
# Intercepted power is weighted by the physical area the point represents
P_incident = (1 / np.power(rho, tx_dist_loss_exponent)) * K_sq * G_ant * point_area
# DEBUG: Monitor Signal Trends # DEBUG: Monitor Signal Trends
# P_inc print suppressed — data captured via model.get_signal_metrics() telemetry # P_inc print suppressed — data captured via model.get_signal_metrics() telemetry

Loading…
Cancel
Save