能力标签:WSF_RADAR_SENSOR / WSF_OPTICAL_SENSOR / 雷达方程 / 被动探测 / 探测建模 / 传感器融合
这个 demo 在展示什么
sensor_demos 是 AFSIM 传感器能力的"样片集",覆盖雷达、光电红外、ESM、SAR、被动测向等多种传感器。它在回答一个根本问题:平台怎么"看"世界。
本篇(上)聚焦最基础的两种——**雷达(主动发射电磁波测距测角)**和 EOIR(被动接收目标自身辐射的可见光/红外,这里用 WSF_OPTICAL_SENSOR 建模)。理解了这两种,sensor_demos 里其余传感器都是它们的变体:主动与被动,是探测的两大根基。
核心机制一:雷达(主动)
雷达靠"发射—回波"工作。AFSIM 里一个雷达传感器是一份 WSF_RADAR_SENSOR 定义,核心维度包括:
- 频率 / 功率 / 增益:决定作用距离与抗干扰能力(背后是标准雷达方程,距离按四次方关系敏感)。
- 波束与扫描:机械扫描、电扫、固定波束,影响覆盖与刷新率。
- 检测模型:AFSIM 用信噪比(SNR)+ 检测阈值判定"看没看见"。
end_time 600 sec # 推演总时长
platform_type BLUE_SHIP WSF_PLATFORM # 定义"蓝方探测平台"类型
side blue
sensor search WSF_RADAR_SENSOR # ① 雷达:主动发射-回波探测
mode surveillance
frequency 10.0 GHz # 工作频率
peak_power 10000 W # 峰值发射功率
antenna_gain 35.0 dB # 天线增益
# minimum_detectable_signal 检测阈值(SNR 判定,引擎有默认)
end_mode
frame_time 2.0 sec # 扫描/刷新周期
reports_location # 上报位置
reports_velocity # 上报速度
end_sensor
end_platform_type
platform p_01 BLUE_SHIP
position 30.0n 120.0e altitude 0 m msl
end_platform
核心机制二:EOIR(被动)
EOIR 是被动传感器——它不发射,只接收目标发动机、蒙皮的红外辐射或可见光反射。结构类似雷达,但少了发射参数,多了"目标辐亮度 / 背景温度"这类输入(由目标的 signature 与背景环境提供)。这里用 WSF_OPTICAL_SENSOR 建模:
platform_type BLUE_RECCE WSF_PLATFORM
side blue
sensor irst WSF_OPTICAL_SENSOR # ② EOIR:被动接收目标辐射
mode surveillance
# 波段、视场、灵敏度(依赖目标 signature 与背景)
end_mode
frame_time 1.0 sec
reports_location
end_sensor
end_platform_type
EOIR 的优势是静默(不暴露自己),缺点是受天气、背景、目标朝向影响大。
雷达 vs EOIR:互补而非替代
#mermaid-svg-bW8RvJSsZXmK39Oi{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bW8RvJSsZXmK39Oi .error-icon{fill:#552222;}#mermaid-svg-bW8RvJSsZXmK39Oi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bW8RvJSsZXmK39Oi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bW8RvJSsZXmK39Oi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bW8RvJSsZXmK39Oi .marker.cross{stroke:#333333;}#mermaid-svg-bW8RvJSsZXmK39Oi svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bW8RvJSsZXmK39Oi p{margin:0;}#mermaid-svg-bW8RvJSsZXmK39Oi .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi .cluster-label text{fill:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi .cluster-label span{color:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi .cluster-label span p{background-color:transparent;}#mermaid-svg-bW8RvJSsZXmK39Oi .label text,#mermaid-svg-bW8RvJSsZXmK39Oi span{fill:#333;color:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi .node rect,#mermaid-svg-bW8RvJSsZXmK39Oi .node circle,#mermaid-svg-bW8RvJSsZXmK39Oi .node ellipse,#mermaid-svg-bW8RvJSsZXmK39Oi .node polygon,#mermaid-svg-bW8RvJSsZXmK39Oi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bW8RvJSsZXmK39Oi .rough-node .label text,#mermaid-svg-bW8RvJSsZXmK39Oi .node .label text,#mermaid-svg-bW8RvJSsZXmK39Oi .image-shape .label,#mermaid-svg-bW8RvJSsZXmK39Oi .icon-shape .label{text-anchor:middle;}#mermaid-svg-bW8RvJSsZXmK39Oi .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bW8RvJSsZXmK39Oi .rough-node .label,#mermaid-svg-bW8RvJSsZXmK39Oi .node .label,#mermaid-svg-bW8RvJSsZXmK39Oi .image-shape .label,#mermaid-svg-bW8RvJSsZXmK39Oi .icon-shape .label{text-align:center;}#mermaid-svg-bW8RvJSsZXmK39Oi .node.clickable{cursor:pointer;}#mermaid-svg-bW8RvJSsZXmK39Oi .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bW8RvJSsZXmK39Oi .arrowheadPath{fill:#333333;}#mermaid-svg-bW8RvJSsZXmK39Oi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bW8RvJSsZXmK39Oi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bW8RvJSsZXmK39Oi .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bW8RvJSsZXmK39Oi .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bW8RvJSsZXmK39Oi .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bW8RvJSsZXmK39Oi .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bW8RvJSsZXmK39Oi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bW8RvJSsZXmK39Oi .cluster text{fill:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi .cluster span{color:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bW8RvJSsZXmK39Oi .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bW8RvJSsZXmK39Oi rect.text{fill:none;stroke-width:0;}#mermaid-svg-bW8RvJSsZXmK39Oi .icon-shape,#mermaid-svg-bW8RvJSsZXmK39Oi .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bW8RvJSsZXmK39Oi .icon-shape p,#mermaid-svg-bW8RvJSsZXmK39Oi .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bW8RvJSsZXmK39Oi .icon-shape .label rect,#mermaid-svg-bW8RvJSsZXmK39Oi .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bW8RvJSsZXmK39Oi .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bW8RvJSsZXmK39Oi .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bW8RvJSsZXmK39Oi :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
EOIR 被动
雷达 主动
发射电磁波
接收回波
SNR + 阈值 → 检测
接收目标自身辐射
信噪比 → 检测
融合航迹
| 工作方式 | 主动 | 被动 |
| 是否暴露自身 | 是 | 否 |
| 全天候 | 强 | 受天气/烟雾影响 |
| 测距精度 | 高 | 需配合或靠几何 |
| 典型用途 | 搜索、跟踪、火控 | 静默探测、红外搜索跟踪 |
实战里常雷达 + EOIR 互补:雷达广域搜索,EOIR 静默细看,二者融合成一条更可靠的航迹。
关键参数速查
| frequency | sensor(radar) | Hz (GHz) | 需给 | 工作频率 | 决定波长/传播/抗干扰;频段选错影响大气窗口 |
| peak_power | sensor(radar) | 功率 (W) | 需给 | 峰值发射功率 | 作用距离按 ~四次根号增长,最贵的距离杠杆 |
| antenna_gain | sensor(radar) | 增益 (dB) | 有默认 | 天线增益 | 增益高=波束窄=距离远但搜索覆盖慢 |
| frame_time | sensor | 时间 (sec) | 引擎默认 | 刷新周期 | 小→航迹更新快,但 CPU 增、虚警累积快 |
| minimum_detectable_signal | sensor(radar) | 阈值 | 有默认 | 检测阈值(SNR) | 阈值低更灵敏但虚警多;高则丢弱目标 |
| reports_location/reports_velocity | sensor | 开关 | 关 | 上报字段 | 跟踪器拿不到信息就"不动作" |
工程实践与常见坑
- 雷达有边界,不是"啥都能看"。真实雷达有盲区、有最低可探测速度(慢速/悬停目标可能被处理链滤掉)、有波束限制。别给个雷达就当全向全时可见。
- EOIR 不是全天候。天气、烟雾、目标朝向(蒙皮辐射面是否对着你)、背景温度都会让它失效。把它当"静默补盲"而非"唯一眼睛"。
- 增益-覆盖的权衡。一味堆高增益把作用距离拉远,代价是波束变窄、搜索一圈更久。搜索还是火控,先想清再定增益。
- 别忘了 reports_*。和交战框架同理(见本系列 20):传感器不 reports_location,下游跟踪器就空转,平台"看见了却没航迹"。
备注:新手最容易犯的错是"给个雷达就想它啥都能看"。真实雷达有盲区、有最低可探测速度、有波束限制。sensor_demos 的价值,就是帮你建立"传感器有边界"的直觉——这比背参数重要得多。
小结与下一篇
本篇看了平台的"眼睛"之二:雷达(主动)与 EOIR(被动),二者互补构成基础探测。雷达靠发射-回波、EOIR 靠被动接收,融合后航迹更可靠。下篇展开 sensor_demos 的"全家桶"下半部——ESM、SAR、被动测向,看传感器还能怎么"看"。
下一篇预告:(09)传感器全家桶 sensor_demos(下):ESM / SAR / 被动测向
下篇展开 sensor_demos 的"全家桶"下半部——ESM、SAR、被动测向,看传感器还能怎么"看"。
下一篇预告:(09)传感器全家桶 sensor_demos(下):ESM / SAR / 被动测向




