WaveFarer 教程


 

WaveFarer:突破动态雷达追踪场景仿真的局限

WaveFarer 是一款创新的电磁仿真软件,为解决传统电磁仿真在动态雷达追踪场景中的短板而设计。通过结合 GPU 加速技术和优化的算法引擎,WaveFarer 不仅提升了仿真效能,还简化了复杂动态场景的建模与分析流程。

传统电磁仿真对动态雷达场景的两大短板

1. 难以处理动态场景 

   传统电磁仿真软件通常依赖网格生成技术,但在动态场景中(如车辆移动),物体位置的变化需要反复更新网格。这不仅耗时,还会产生大量冗余数据,用户还需手动整合不同时间点的仿真结果,增加了后处理的复杂性。

2. 射线跟踪算法的效率与精度问题

   射线跟踪算法是电磁波传播仿真的常用方法,但其均匀投射射线的特性在动态雷达追踪场景中存在明显缺陷: 

   - 目标物上的射线密度不足,导致精度下降; 

   - 大量射线浪费在非目标区域,拖累计算效率。 

   提高精度通常需要增加射线密度,但这会进一步加剧算力浪费,影响整体效能。

 

WaveFarer 的突破性优势

WaveFarer 通过以下创新,彻底解决了上述问题:

1. 动态场景建模支持

   WaveFarer 提供参数化设置和脚本编写 API,用户可直接在软件内创建包含运动物体的动态场景,无需反复更新网格或手动整合数据,大幅简化了动态仿真的流程。

2. 优化的射线跟踪算法

   改进后的射线跟踪算法能够智能地将射线集中投射在研究区域内的目标物上,避免算力浪费,同时确保仿真精度。结合 GPU 加速技术,WaveFarer 显著提升了计算效率,让用户能够在合理的时间和算力成本内完成复杂仿真。

3. 支持 GPU 加速

   WaveFarer 利用 CUDA兼容GPU 的算力,解决了传统射线跟踪算法的效能瓶颈。


视频教程与资源支持
为帮助用户快速上手,WaveFarer 提供了三组详细的视频教程,涵盖以下内容: 

1. 基本操作

2. 动态场景建模

3. 基本动态交通场景建模

每组教程包含 8-9 个短视频,用户可学习掌握软件的核心功能。


视频教程

1. 棱锥反射体

雷达距离方程通常被用作一种分析工具,用于计算在收发器特定距离处的目标接收功率。


 

该方程可以针对多个距离进行求解并绘制图表以进行比较。正如本教程所演示的,WaveFarer 能够生成与雷达距离方程相同的结果。

在本教程中,一个由一台发射器和一台接收器组成的收发器使用了增益为16 dBi的24.1 GHz天线,并发射0 dBmW的功率。模拟了一个20 dBsm角反射器在5米至160米之间递增距离上的接收功率,然后将WaveFarer生成的结果与雷达距离方程进行对比并绘制成图。
本教程所需的脚本等相关文档请在这里下载:教程腳本
 

本教程覆盖了以下操作技能:

 

1. 通过定义一个棱锥体来创建角反射器。 

2. 定义一个参数,用于改变角反射器与原点之间的距离。 

3. 为角反射器分配PEC(理想电导体)材料,以定义其电磁特性。 

4. 添加两个收发器组件,每个组件包含一个45度定向天线:一个为发射器,波形频率为24.1 GHz;另一个为接收器。 

5. 设置仿真条件,包括2次反射、1次衍射、面目标以及MEC衍射。 

6. 编写并执行脚本,用于动画化几何体并确认参数扫描行为的正确性。 

7. 运行仿真,执行从5米位置到160米位置、以2.5米为增量的参数扫描。 

8. 评估接收功率与其到原点距离的关系。 

9. 导入脚本以绘制雷达距离方程的图表。

B站教程视频:

1.    视频链接:总览

2.     视频链接:建立几何体

角反射器将被建模为朝向发射和接收天线的空心金字塔形状,

首先,创建零件。

1.      在项目树中右键单击“Parts”,然后选择“Create New ❯ Pyramid”以打开编辑器。

2.      在“Edit Pyramid ”页签下,通过键入(.247 m)/sqrt(3)作为“高度”值来定义其大小。

3.      输入(.247 m)*sqrt(2/3)作为“半径1”值。

4.      输入(.247 m)*sqrt(2/3)作为“半径2”值。

5.      输入0 m作为“Top”值。

6.      输入3作为“Sides”值。

7.      使用“Create as”下拉caidan1选择“Sheet”。

8.      在“Name”栏位键入“Corner Reflector”,为名称。

9.      在“Specify Orientation”页签下,从“Preset”下拉菜单中选择“YZ Plane”。

10. 在“Geometry”窗口中,右键单击W轴,然后选择“Rotate around W”。

11. 输入-90

12. 单击窗口右上角的“Done”以关闭编辑器。

然后,移除其中一个面。

13. 在project tree的Corner Reflector上单击鼠标右键,然后选择“Modify ❯ Remove Faces”。

14. 单击右侧边栏中的“Zoom to Extents ”按钮。

15. 单击YZ平面中的面。

16. 在“Preview”页签下,取消“Close gaps left by removed faces”。

17. 单击“Done”关闭编辑器。

 

3.     视频链接:参数化角反射器

参数可以用为单个值或公式的方式来定义,之后可以接着在WaveFarer的大多数设置栏位中使用。在这个案例中,我们将使用参数化来沿x轴移动角反射器。

首先,创建一个参数。

1.      单击WaveFarer窗口右侧的”Parameters”按钮。

2.      单击“Parameters”窗口左上角的“Add”按钮。

3.      在突出显示的字段中键入”targetLocation” 作为参数名称。

4.      按Tab键,在“Formula”单元格中键入”10 m”。

5.      按Tab键,然后在“Description”单元格中键入“Distance to the corner reflector”。

6.      单击”Apply”。

然后,将参数应用于反射器。

7.      在Project tree中的Corner Reflector上单击鼠标右键,然后在菜单中选择“Modify ❯ Transform ❯ Translate”。

8.      在“Specify Translation”页签下,单击并拖动W'箭头,以验证棱角反射器是否沿x轴移动。

9.      输入稍早设置的参数”targetLocation”作为W'值。

10. 单击“Done”关闭编辑器。

通过单击“Zoom to Extents”按钮,然后单击Project tree中的“Corner Reflector”,在“Geometry”窗口的边界框中查看棱角反射器的新坐标。通过在“Parameterss”窗口中将定义更改为”15 m”,单击“Apply”,然后重新检查边界框,验证棱角反射器是否根据参数的公式移动。
 

4.     视频链接:定义及配置PEC材料

零件的散射行为跟材料参数相关,因此首先需要定义材料,然后将其配置给棱锥反射器。WaveFarer的Definitions节点允许用户定义电磁属性,并用于多个零件使用它,这段是基础教程,只用于一个零件。

首先,定义反射器材料。

1.      在Project tree中的“Materials”单击鼠标右键,然后选择“New Material Definition”。

2.      输入新材料名称为PEC。

3.      按Enter键确认名称。

4.      双击Project tree中的PEC打开材质编辑器。

5.      点开窗口顶部的“Type”下拉式菜单,选择Perfect Electrical Conductor 将材料设为PEC”。

6.      如果需要,选择“Apperance”页签,更改显示颜色。

7.      单击“Done”以完成PEC材料设置。

然后,将材质指定给“Corner Reflector”。

8.      从Project tree的“Definitions”分支中单击并拖动刚才设置的PEC材料,然后将其放置在项目树的零件分支中的Corner Reflector的顶部,将零件与材料关联起来。
 

 

5.     视频链接:建立收发机

仿真场景中收发机作为发送和接收射线的点,这段教程包括设置一个发射机和一个接收机,以及相关的波形和天线定义。

首先设置天线。

1.      在project tree的“Definitions”分支右键单击“Antennas”,然后选择“New Antenna Definition”。

2.      在Project Tree中,输入天线名称”Directional (45 deg)”。

3.      按Enter键将新天线添加到项目中。

4.      鼠标双击名为”Directional (45 deg)”的新天线,打开天线编辑器。

5.      在编辑器中,单击“Type”打开菜单,选择“Directional”。

6.      设置E-Plane Half Power Beam Width为45 (度)。

7.      设置H-Plane Half Power Beam Width为45 (度)。

8.      取消勾选“Auto”,并输入16 dBi作为最大增益。

9.      单击“Done”关闭编辑器。

接下来,建立收发器。

10.  右键单击Project tree的transceiver分支,然后选择”New Transceiver Points Layout” 打开编辑器。

11.  在“Layout”页签,单击“Type”栏位的下拉式菜单,选择“Transmitter”。

12.  在下一行中(眼睛图示),勾选在此位置显示方向图的框。

13.  单击右侧工具栏中的“Zoom to Extents”按键,使用鼠标滚轮进行放大。

14.  勾选“Changes to Radius Affects All Points”选项。

15.  单击“Radius”列,输入0.02 m。

16.  单击Layout页签右侧的Add按钮。

17.  在第二个点的“Type”行打开下拉式菜单选择“Receiver”。

18.  按Enter键确认设置。

19.  选择表格中的Transmitter列。

20.  选择页签顶部的工具按钮来切换至方向设置。

21.  Y值栏位输入0.02 m。

22.  按Enter键确认更改。

23.  将页签顶部的Point更改为2以选择Receiver。

24.  Y值栏位输入-0.02 m

25.  按Enter键确认更改。

26.  在名称字段中键入收发器w/1 Tx,1 Rx,输入收发器名称。

27.  单击“Done”关闭编辑器。

接着设置波形。

28.  在Project tree的定义分支中,双击Sinusoid打开波形编辑器。

29.  频率输入24.1 GHz。

30.  键入“ 24.1 GHz Sinusoid”为波形名称。

 单击“Done”关闭编辑器。
 

6.     视频链接:设置仿真条件

用户可以在Analysis Configurations分支中设置输入,调节计算引擎进行仿真以获得精度和运行时间之间的平衡。寻径条件允许的反射和衍射次数决定了射线路径与几何面或边缘的最大相互作次数。允许的次数越高精确度越高,运行时间也越长。

1.      鼠标右键单击Project Tree中的”Analysis Configurations”分支,选择“New Physical Optics Configuration“

2.      在新建的分支名称输入”2R1D”,作为配置名称。

3.      按Enter键将确认2R1D添加Analysis Configurations中。

4.      双击Project tree中的“2R1D”打开Physical Optics Configuration Editor。

5.      在“Properties”页签确认设置,本教程使用默认设置。反射次数为2,衍射次数为1,最小角射线间距为0.01度, Gain Threshold 为30dBi,在Physical Optics 区块勾选“Include MEC Diffractions”以及“Allow Knife Edges”。

6.      单击“Done”完成设置。
 

7.     视频链接:动态化场景

项目设置完成后,用户可以通过编写和执行一个简短的脚本来设置几何体的动画。此步骤不是必需的,但建议执行,因为这让用户可以直观的确认创建模拟时参数扫描按预期运行。

1.      右键单击Project tree 的Scripts分支,然后选择“New Macro Script”以打开脚本编辑窗口。

2.      在项目树中,右键单击“New Macro Script”,然后选择“Rename”

3.      键入Sweep targetLocation命名脚本。

4.      按下Enter键完成命名。

 

在脚本窗口中输入以下脚本:

var list = App.getActiveProject().getParameterList();

for( var t = 5; t <= 160; t += 5 )
{
  list.setFormula( "targetLocation", t + " m" );
  App.sleep( 100 );
}

 

5.      按下工具栏中的“Commit”按钮保存脚本,然后关闭“Scripting”窗口。

6.      通过单击右侧边栏中的“Zoom to Extents”将几何图形放置在视图中。

7.      在Project tree中右键单击Sweep targetLocation脚本打开菜单,然后选择Execute以运行脚本。

8.      观察Corner Reflector沿x轴移动,直到它位于视野范围之外。
 

 

8.     视频链接:创建及执行仿真

项目设置完成后,需要存盘,便于开始仿真和写入输出文件

首先,将项目存盘。

1.      单击WaveFarer窗口左上角的“File”,然后选择“Save Project As”。

2.      输入“Corner Reflector”作为项目名称。

3.      单击“Save”。

然后,开始设置仿真。

4.      单击WaveFarer右上角的Simulation按键打开仿真设置窗口。

5.      单击“Simulations”窗口左上角的“Create New Simulation”按钮。

6.      在“Create Simulation”窗口中,通过在“Name”栏位中键入“Sweep from 5 to 160 m”命名。

7.      使用下拉箭头选择2R1D作为配置。

8.      如果适用于用户的电脑,请更改“Resource”页签设置,以匹配用于仿真的硬件。

9.      在“Setup Parameter Sweep” 页签,勾选“Perform Parameter Sweep”。

10.  单击“Add a new parameter sequence“按钮设置一组参数扫描。

11.  确认“targetLocation”是要扫描的参数。

12.  使用“Sweet Type”下拉式菜单选择设置“开始(Start)”、“结束 (End)”、“计数(Count)”。

13.  输入63作为Count值。

14.  输入5m作为Start值。

15.  输入160 m作为End值。

16.  确认参数值变化是否在5米至160米之间,每次增量为2.5米(即5米、7.5米、10米等)。

17.  单击“Create&Queue Simulation”按键开始仿真。

用户会注意到,仿真现在显示在“Simulations”窗口的顶部,“Sweep”字段指示正在模拟63个参数值中的哪一个。仿真完成并生成结果后,状态字段将更改为完成。
 

 

9.     视频链接:查看接收功率与距离的关系

经由仿真得到的接收功率可以通过运行脚本根据项目定义的参数绘制。接着可以导入第二个macro(宏),用于将WaveFarer的结果与雷达距离方程结果进行比较。

首先绘制接收功率与参数的关系图。

1.      下载所需脚本,并将其中的"Plot Received Power Versus Parameter"脚本保存在WaveFarer的宏(Macro)文件夹中。

2.      在WaveFarer窗口左上角,选择Macro,接着选择Results ❯ Plot Received Power Versus Parameter打开编辑器。

用户需要注意到,Project、Simulation和Sensor设置各只有一个可用选项。这些默认值用于绘制此项目所需的接收功率大小。

3.      单击“OK”完成编辑

用户需注意,单位选择为“Distance”,两个收发器框均已勾选。这些默认值将绘制Rx 0从Tx 0接收到的功率与距离的关系图。

4.      单击“OK”再次更改编辑器。

用户需注意,这会创建一个XY平面图,并且可以自定义其标题和标签。

5.      单击“OK”关闭编辑器。

确认图形是否出现在Project tree的Graphs分支中,然后双击它进行查看。

接着导入求解雷达距离方程的脚本。

6.      下载所需脚本 (前面已经下载的用户可以跳过这一步)。

7.      右键单击Project Tree的Scripts分支,然后选择Import Scripts。

8.      从脚本文件中选择Plot Radar Range Equation.xmacro。

9.      单击“Open”将脚本添加到项目中。

10.  在Project tree的Scripts分支中右键单击”Plot Radar Range Equation”,然后选择Execute。

11.  双击Project tree中的接收功率与目标位置图,查看雷达距离方程脚本生成的图。

 验证雷达距离方程生成的图与模拟结果是否匹配。


2.  用户自定义天线


 

用户自定义的天线辐射场型可以被写入*.uan文件并导入WaveFarer使用,天线被导入WaveFarer后,用户可以在场景中使用这个天线。

本教程的第一部分探讨了一个在XFdtd中模拟的77 GHz雷达,确定了发射器和两个接收器的3D辐射场型。这些场型数据被写入三个*.uan文件,随后作为天线文档导入WaveFarer。接着创建一个包含1个发射器(波形频率为77 GHz)和2个接收器的收发器并至于原点。

本教程的第二部分包括创建一个参数化的球体,并这个目标物体以一个弧形轨迹扫过雷达的前方。模拟运行时,参数从-90度到90度以1度为增量描述运动轨迹进行扫描,WaveFarer模拟在弧线上的每个点信号从球体上的散射。当180度的扫描完成后,将两个接收器之间的相位差与预期结果进行比较。基于相位差结果证实天线方向图已正确导入。

本教程涉及以下技能点:

 

1. 从XF项目中导入*.uan文件作为天线定义;

2. 添加一个收发器,包含一个发射器(波形频率为77 GHz)和两个接收器;

3. 创建并应用距离和旋转参数;

4. 添加一个球体,并在距离原点10米的位置上,对其进行180度的位置扫描;

5. 为球体分配PEC材料,以定义散射目标的电磁特性;

6. 设置分析配置,包括1次反射、0次衍射以及面元目标;

7. 编写并执行脚本,用于动画演示几何结构并确认参数扫描行为的正确性;

8. 运行仿真,执行从-90度到90度、以1度为增量的参数扫描;

9. 评估两个接收器之间的相位差。

本教程所需的教程及脚本可以在此链接下载: 课程文档

教程视频:

1.     视频链接:总览

本教程演示以下功能操作:

1 从XFDTD导入一个*.uan文件作为天线。

2 增加一组77GHz频率的收发器,由一个发射器和两个接收器组成。

3 创建并应用距离和旋转参数。

4 添加一个距离原点10米的球体,并设置其移动轨迹扫掠180度。

5 将球体材料设置为PEC,以定义散射目标的电磁特性。

6 将分析配置设置为包括1次反射、0次衍射和面瞄准。

7 编写并执行一个脚本,为几何体设置动态并确认参数扫描设置正确。

8 执行仿真,以1度为增量从-90度到90度执行参数扫描。

9 评估两个接收器之间的相位差。
 

2.     视频链接:导入天线

通过导入XFDTD支持的*.uan文件可以使用自定义天线。本教程会使用三个用户自定义天线。*.uan格式文档可以从XFDTD导出或从其他仿真软件输出文档转换

1 确认三个*.uan文件已经准备好,没在前面链接下载的访客请点此下载

2 在Project tree中右键单击“Antennas”,然后选择“New Antenna Definition”。

3 输入新天线名称为Tx。

4 按Enter键确认名称更改。

5 双击Project Tree中的天线以打开天线编辑器。

6 使用“Type”下拉菜单选择“User-defined”。

7 在“Properties”选项卡下,单击“Select UAN file to import”。

8 选择所需的*.uan文件。

9 单击“Open”将导入的文件加载到天线编辑器中。

10 单击“Done”关闭编辑器。

11 重复步骤2至10,以Rx 1作为名称导入第一个接收器。

12 重复步骤2至10,以Rx 2作为名称导入第二个接收器。
 

3.    视频链接:添加收发机

收发机(Transceiver)是发送和接收射线的点(天线或通讯模块安装的位置)。本教程将包括一个发射机和两个接收机,以及相关的天线和波形设置。

首先,创建收发器。

1. 右键单击Project tree的Transceivers分支,然后选择” New Transceiver Points Layout”以打开编辑器。

2. 在“Layout”页签单击“Type”栏位,然后使用下拉菜单选择“Transmitter”。

3. 勾选下一列中的方框,可以在此收发机位置显示3D天线方向图

4. 单击右侧边栏中的“Zoom to Extents”,然后使用鼠标滚轮进行放大。

5. 勾选“Changes to Radius Affects All Points”选项。

6. 在的“Radius”列中单击,然后输入1.5 mm。

7. 单击Layout页签右侧的添加( + 按键)按钮以添加第一个接收器。

8. 在Type字段中单击鼠标,然后使用下拉菜单选择Receiver。

9. 在Antenna栏位中单击鼠标,然后使用下拉菜单选择Rx 1。

10.  单击Layout页签右侧的添加(+ 按建)按钮以添加第二个接收器。

11. 在天线字段中单击,然后使用下拉箭头选择Rx 2。

12. 按Enter键确认更改。

13. 通过单击Transmitter选择表格中的第一个点。

14. 通过单击Layout页签顶部的“Switch to orientation editing mode”按钮来切换至方向编辑设置。

15. 输入“-15 mm”作为Y值。

16. 按Enter键确认更改。

17. 选择编号为2的点以编辑第一个接收器的位置。

18. 切换至方向编辑设置,输入14 mm作为Y值。

19. 按Enter键确认更改。

20. 选择编号为3的点设置第二个接收器的设置。

21. 切换至方向编辑设置,输入16 mm作为Y值。

22. 按Enter键确认更改。

23. 在Layout页签右上的Name栏位中键入”Transceriverw/1 Tx,2 Rx”来命名收发器。

24. 单击“Done”关闭编辑器。

然后,设置波形的属性。

25. 在Project tree的Definitions分支中,双击Sinusoid波形打开波形编辑器。

26. 输入77 GHz作为频率。

27. 在“Name”框中键入”77 GHz Sinusoid”来命名波形。

28. 单击“Done”关闭编辑器。

通过打开收发器编辑器并检查发射器的属性来验证更改。
 

4.     视频链接:建立参数化的球体

首先,建立散射体几何模型。

1. 在Project的“Parts”分支上单击鼠标右键,打开菜单,选择“Create-》Sphere”。

2. 输入0.05 m作为“Radius”值。

3. 单击“Done”关闭编辑器。

接下来,定义参数。

4. 单击WaveFarer窗口右侧的”Parameters”按钮。

5. 单击“Add”按钮。

6. 在“Name”栏位中键入“translationDistance”。

7. 按Tab键,然后在“Formula”字段中输入10m。

8. 如果需要,按Tab键并输入简短说明。

9. 单击”Add”按钮。

10 在“名称”栏位中键入“rotationAngle”。

11. 按Tab键,然后在“Formula”字段中输入”90 deg”。

12. 单击“Apply”并关闭Parameters窗口。

接着,修改几何图形。

13. 在Project tree的“Parts”分支中右键单击“Sphere”,然后在菜单选择“Modify->Transfor->Translate”。

14. 在“Specify Translation”页签下,输入translationDistance参数作为U值。

15. 单击“Done”关闭编辑器。

16. 在Project tree 的“Parts”分支中右键单击“Sphere”,然后在菜单选择“Modify ->Transform->Rotation”。

17. 在“Specify Rotation”页签下,输入“rotationAngle”参数作为“Angle”值。

18. 单击“Done”关闭编辑器。

通过在“Parameters”窗口中将Formula栏位数值更改为”45 deg”单击“Apply”,并在“Geometry”窗口中检查边界框,验证球体是否根据参数的公式移动。
 

5.     建立并配置PEC材料

6.     设置分析条件

7.     动态化场景

8.     建立并执行仿真

9.     绘制相位差图