GPU 加速相控阵雷达波束聚合模拟器 — Rust + CUDA + React + Three.js
相控阵雷达通过控制各阵元的相位差实现电子扫描,无需机械转动。本项目提供:
- 3D 交互式波束方向图可视化(Three.js / React Three Fiber)
- 超分辨 DOA 估计(MUSIC / ESPRIT / MVDR)
- 真实物理建模(单元方向图、互耦合、相位量化、宽带 squint、阵元故障)
- CUDA GPU 加速 + Rayon 多核 CPU 并行
phased-array-pro/
├── backend/ # Rust 后端
│ ├── Cargo.toml
│ ├── src/
│ │ ├── main.rs # Axum HTTP server (10 endpoints)
│ │ ├── array.rs # 阵列几何生成
│ │ ├── beamforming.rs # AF / 波束形成 / Taylor 锥削 (Rayon 并行)
│ │ ├── super_res.rs # MUSIC / ESPRIT / MVDR
│ │ ├── physics.rs # cos^q / 互耦合 / 相位量化 / squint / 故障
│ │ └── gpu/
│ │ ├── mod.rs # GPU 调度 + CPU fallback
│ │ └── cuda_ffi.rs # CUDA Driver API FFI (libloading)
│ └── kernels/
│ ├── kernels.cu # CUDA C kernel 源码
│ └── kernels.ptx # 预编译 PTX (include_bytes! 嵌入)
├── frontend/ # React + TypeScript 前端
│ ├── package.json
│ ├── vite.config.ts
│ └── src/
│ ├── App.tsx # 主布局 + 状态管理 + auto-compute
│ ├── api/client.ts # 类型安全 API 客户端
│ └── components/
│ ├── Viewer3D.tsx # @react-three/fiber 3D 场景
│ ├── ControlPanel.tsx# 阵列 + 波束控制面板
│ ├── DOAPanel.tsx # MUSIC/ESPRIT/MVDR 面板
│ ├── PhysicsPanel.tsx# 真实物理效应面板
│ └── InfoOverlay.tsx # 元数据面板
├── docs/ # 文档
│ ├── architecture.md # 架构设计
│ ├── api-reference.md # API 参考
│ ├── physics.md # 物理模型
│ └── development.md # 开发指南
├── LICENSE # MIT
└── README.md
- Rust 1.96+
- Node.js 20+
- CUDA Toolkit 13.2(可选,用于 GPU 加速;无 CUDA 时自动 CPU 模式)
- Windows / Linux / macOS
cd backend
cargo run --release后端运行在 http://localhost:8000,API 文档 http://localhost:8000/docs
cd frontend
npm install
npm run dev打开 http://localhost:5173
cd backend/kernels
nvcc -ptx -arch=sm_75 -o kernels.ptx kernels.cuPTX 会在 Rust 编译时通过 include_bytes! 嵌入二进制。
| 端点 | 方法 | 说明 |
|---|---|---|
/api/health |
GET | 健康检查(返回 backend、CUDA 状态) |
/api/geometries |
GET | 支持的阵列几何形状 |
/api/compute-pattern |
POST | 计算波束方向图(3D/2D/切面) |
/api/element-positions |
POST | 获取阵元位置 |
/api/music |
POST | MUSIC DOA 超分辨估计 |
/api/esprit |
POST | ESPRIT DOA 估计 |
/api/mvdr |
POST | MVDR/Capon 自适应波束形成 |
/api/pattern-realistic |
POST | 含真实物理效应的方向图 |
/api/beam-squint |
POST | 宽带波束 squint 分析 |
详细参数见 docs/api-reference.md
| 场景 | CPU (Rayon) | GPU (CUDA) |
|---|---|---|
| 16×16 阵列, 122×122 网格 | ~15 ms | ~0.5 ms |
| 32×32 阵列, 182×182 网格 | ~80 ms | ~2 ms |
| MUSIC (16 elem, 500 snap) | ~5 ms | ~0.3 ms |
实测于 RTX 5070 Laptop GPU + AMD Ryzen
- 3 种阵列几何(矩形 / 圆形 / 三角形)
- 4 种幅度锥削(Uniform / Taylor / Hamming / Hanning)
- 实时角度偏转(θ / φ 滑块 + 3D 实时更新)
- 3D 辐射方向图(指数增益映射,主瓣尖峰清晰可见)
- E-plane / H-plane 切面图
- MUSIC 超分辨 DOA
- ESPRIT 闭式解 DOA
- MVDR / Capon 自适应波束形成
- 单元方向图 cos^q(θ)
- 互耦合矩阵(Toeplitz)
- 相位量化(n-bit 移相器模拟)
- 阵元故障模拟(开路 / 短路 / 漂移)
- 宽带波束 squint 分析
- CUDA GPU 加速 + CPU Rayon fallback
- PTX 嵌入二进制(include_bytes!)
- TypeScript 类型安全 API 客户端
MIT © 2026 邹源清 (zouyuanqing)