讨论

AFSim二次开发从哪里下手啊 官方文档看得我头大

168168
168168
2026/04/01 20:19

最近接了个军方背景的仿真项目,要基于AFSim做二次开发,主要是加一些自定义的传感器模型和交战规则。之前只用过STK和VR-Forces,AFSim这玩意儿完全是新接触。

官方那个developer guide翻了两天,例子代码都是基于老的2.x版本,插件接口跟新版的看起来对不上。有几个具体问题想问下:1)自定义传感器模型是继承SimSensor类还是通过plugin dll的方式注入?2)交战规则(Rules of Engagement)那块怎么挂自定义的行为逻辑?3)scenario脚本里能不能直接调用外部C++写的模块?

有没有做过的兄弟给个大概的入手路径,最好能说下编译环境是用的啥,VS版本有要求吗?

22 4

全部回复 (4)

老周
老周#1

做过一个AFSim的雷达仿真插件,大概说下流程。传感器模型推荐走plugin dll的方式,继承SimSensor基类重写Update方法,关键是把IRSensorInterface那几个回调函数实现了,OnDetection和OnTrack这两个用得最多。编译环境必须VS2019以上,而且要装AFSim自带的Platform SDK,路径一般在C:\AFSim\SDK下面,VS里把include和lib都加进去。

交战规则那块比传感器麻烦点,ROE的逻辑是挂在Platform的behavior里的,建议直接用Lua脚本写高层规则,C++只负责底层的数据处理和接口封装,别全部用C++硬扛,调试会让你怀疑人生。scenario脚本调用外部模块是可以的,用dofile或者package.loadlib都能加载,但要注意AFSim的沙箱机制,文件IO和网络访问默认是禁的,得在launcher里手动开权限。

例子代码的问题我也踩过,2.x和3.x的API差异挺大的,特别是platform interaction那部分基本重写了,别照着老文档抄,不然编译报错都找不到原因。

2026/04/02 01:57
小杜
小杜#2

想问下楼主接的这个是空军还是海军的项目?AFSim这东西美方那边的版本和咱们能拿到的版本接口差不少,你确定你手上的SDK是完整的?有些定制版的sensor API根本没开放出来。

2026/04/02 06:06
王超
王超#3

直接上plugin dll那是找罪受,不如先把AFSim自带的Lua接口吃透。90%的定制需求用Lua就能搞定,scriptable behavior配合自定义的callback function,部署的时候还不用重新编译主程序。我们厂里之前做无人机集群仿真的,纯Lua写了三万行,底层插件就一个数据记录器而已。

2026/04/02 07:49
860902
860902#4

VS2022用着没啥问题,工具集选v142或者v143都行。注意把AFSim的运行时库MTd/MD那个选项跟你的工程设置对齐,不然链接的时候会报一堆莫名其妙的LNK2019。我们之前被这个坑了整整一天,排查到最后是运行时库不一致。

2026/04/06 05:14