方法公开 · 配置可扩展
DeepTelecom 数据生成方法
参考生成器使用 Sionna RT 建立场景传播通道,将无人机机体与旋翼离散为运动点散射体,逐快照求解通道并构造单站回波近似,输出张量、频谱图和运行元数据。
01 · 原理
从场景传播到微多普勒样本
这是“基于 Sionna RT 的点散射体单站回波近似”,不是带真实无人机网格与 RCS 的全波电磁仿真,也不是实测数据。明确模型边界,才能正确使用结果。
v1 主配置使用 28 GHz 载频、20 kHz 采样率和 2,048 个快照。普通三类用 1 个机体点加 24 个叶片径向点;单叶片基准只保留一个旋转叶尖点。射线求解开启 LoS 与镜面反射,最大深度为 2。
02 · 开源范围
公开生成器的代码范围
公开仓库中的 generator/ 只包含可复用的核心运动学、Sionna RT 求解、STFT、元数据、配置和冒烟测试。数十 GB 输出、运行日志、历史编号清单、设备调度状态与服务器绝对路径不会进入 Git 历史。
generator/ ├── config/etoile.yaml ├── src/ │ ├── build_rt_uav_stft_dataset.py │ ├── motion_utils.py │ ├── stft_utils.py │ ├── metadata_utils.py │ └── verify_uav_kinematics.py ├── scripts/ │ ├── setup_env.sh │ ├── preflight.py │ └── run_smoke_test.sh ├── requirements.txt ├── README.zh-CN.md └── README.en.md
Étoile 场景直接引用 Sionna RT 2.0.1 内置的 Apache-2.0 资产,不重复提交 566 个第三方场景文件。公开版元数据使用逻辑场景 ID,不写入本机绝对路径。
主仓库 Apache-2.0 覆盖我们发布的代码与文档;数据 payload 的授权仍按数据集页面说明处理。
03 · 开始运行
先用 8 个快照完成冒烟测试
推荐 Linux、NVIDIA GPU、可用的 CUDA/OptiX 与 Python 3.11。完整样本需要逐快照射线追踪,成本明显高于普通 NumPy 数据生成;第一次运行先做小型 smoke test。
git clone https://github.com/kygoyuan2004/DeepTelecom_Partial.git
cd DeepTelecom_Partial/generator
./scripts/setup_env.sh
DEEPTELECOM_PYTHON="$PWD/.conda-env/bin/python" ./scripts/preflight.pyDEEPTELECOM_PYTHON="$PWD/.conda-env/bin/python" \
./scripts/run_smoke_test.sh冒烟测试写入被 Git 忽略的本地目录 generator/run/smoke_test,使用 8 个 snapshot 和较大的 RT stride,只验证依赖、场景、求解、输出与运动学合同。它不应混入正式数据集。
生成一个完整类别样本
.conda-env/bin/python src/build_rt_uav_stft_dataset.py \
--root outputs/demo \
--config config/etoile.yaml \
--classes pitch30_v10 \
--start-index 0 --end-index 0 \
--max-new-samples 1 --resume04 · 扩展散射模型
增加叶片散射点,不需要改 Python
普通三类的散射点总数为:
默认值为 1 + 4 × 2 × 3 = 25。将每叶片采样点从 3 调到 5 后,总数变为 41。
cp config/etoile.yaml config/my_dense_blades.yaml
# 在 config/my_dense_blades.yaml 中保持:
# num_rotors: 4
# num_blades_per_rotor: 2
# 并将 points_per_blade: 3 改为:
points_per_blade: 5- 这些点沿叶片半径均匀分布;增加点数会提高 probe 数量、RT 计算量和 NPZ 体积。
single_blade_v0是固定的单叶尖控制类,不受points_per_blade影响。- 当前生成器只支持四旋翼拓扑;仅修改
num_rotors会被拒绝。 - 虽然可改变
num_blades_per_rotor,严谨对比前还应同步检查散射权重归一化,避免把叶片数变化和总回波强度变化混在一起。
05 · 扩展轨迹
直线或四控制点 Bézier 轨迹
直线轨迹
linear 模式从配置中的初始位置出发,沿仿真 +x 方向运动;速度仍由类别决定,因此 v0 为 0 m/s、v10 为 10 m/s。
body_trajectory_model: linear
body_position_x: 146.0
body_position_y: -52.0
body_position_z: 70.0自定义单段三次 Bézier
用四个三维控制点定义空间曲线。生成器先建立弧长查找表,再按类别速度沿曲线采样,以保持位置与速度方向一致。
body_trajectory_model: etoile_bezier
etoile_trajectory_speed_mode: class_speed
etoile_control_points_json: "[[146,-52,70],[154,-18,72],[178,14,68],[204,-8,70]]"
etoile_start_fraction_min: 0.00
etoile_start_fraction_max: 0.90复杂航线需要同时扩展路径构建、generate_case() 中的路径附加分支以及完整轨迹元数据合同,并为位置连续性、速度连续性和路径长度边界补测试;不能只替换位置而保留不一致的速度或标签。
06 · 主配置
v1 的关键生成参数
| 配置 | v1 主值 | 作用 |
|---|---|---|
carrier_frequency_hz | 28e9 | 射线追踪与多普勒计算载频 |
sampling_rate_hz | 20,000 | 回波时间采样率 |
num_snapshots | 2,048 | 每个样本的 RT/回波时间点 |
rotor_frequency_hz | 25 ± 10% | 样本级旋翼转频随机扰动 |
blade_radius_m | 0.02 ± 10% | 样本级叶片半径随机扰动 |
noise_snr_min/max_db | 20 / 40 | AWGN 信噪比采样范围 |
stft_window_size | 48 | Hann 窗长度 |
stft_overlap | 36 | 75% 重叠 |
stft_nfft | 512 | STFT 频率栅格 |
rt_max_depth | 2 | PathSolver 最大传播深度 |
07 · 可复现性与边界
可复现性与实现边界
- 公开配置、随机种子、代码版本与参数路径可以复现;不同 GPU、驱动和底层浮点实现不保证生成字节级相同的 NPZ。
- 生成器输出是研究用仿真近似,不应直接当作真实飞行器测量 ground truth。
- 改变散射点、叶片或轨迹后,应使用新的实验命名空间和 manifest,不要写入 v1.0.0 的冻结分片。
- 运行产生的绝对目录、日志和调度状态不属于科学样本,应在发布前清理或转为逻辑标识。
这套生成器由浙江大学信息与电子工程学院(ISEE)项目团队整理开源。若你扩展了新的轨迹后端、散射权重模型或场景适配器,欢迎通过 GitHub issue 或 pull request 讨论。