# 开发日志 本文档以时间顺序, 记录了开发过程中的重要事件和分析、测试、DEBUG等过程。 日志格式: - 日期 - 事件描述 - 分析处理 ## 2025-05-18 增加了装备的RCS特征矩阵 - 增加了装备的RCS特征矩阵 - 在毫米波末制导中,用RCS特征矩阵取值 ## 2025-05-15 完善了末敏弹的发射角度计算逻辑 - 完善了末敏弹的发射角度计算逻辑,增加目标速度、空气阻力的影响 - 完善了末敏子弹各阶段的控制参数 ## 2025-05-14 修改了版本号格式 - 修改了版本号格式(0.2.18 -> 1.1.18) - 修改了日志输出格式 - 飞行全程增加重力加速度 - 完善发射段的推力加速度计算,支持不同角度发射导弹,支持直飞、抛射和俯冲弹道 - 修改各导弹配置文件的初始发射速度、发动机燃烧时间 - 修改集成测试中导弹的发射距离、发射高度、发射角度 ## 2025-05-12 规范了调试信息的输出 - 规范了调试信息的输出,使用 Debug 和 Trace 输出日志 - 修改了集成测试程序的菜单,增加了日志级别设置 System.Diagnostics 命名空间提供了用于日志记录的类: - Debug.WriteLine(...):用于开发阶段,详细的内部调试信息。 - Trace.WriteLine(...):用于开发和发布阶段,跟踪应用程序的执行流程,记录重要的事件、错误或状态信息。 - Trace.TraceInformation(...):用于一般的操作信息。 - Trace.TraceWarning(...):用于潜在问题。 - Trace.TraceError(...):用于已发生的错误。 System.Diagnostics.Debug.WriteLine 和 System.Diagnostics.Trace.WriteLine 之间, 在用途和行为上有一些关键的不同: 1. 编译条件与用途: Debug.WriteLine (以及 Debug 类的其他方法): 编译条件: 这些方法调用通常只在定义了 DEBUG 编译常量时才会被编译到程序中。在 Visual Studio 或 dotnet build 中,"Debug" 配置默认会定义 DEBUG (和 TRACE) 常量。"Release" 配置默认只定义 TRACE 常量。 用途: 主要用于开发和调试阶段。这些日志信息帮助开发者理解代码执行流程、变量状态等,通常不应出现在最终的发布版本中,因为它们可能会暴露过多内部信息或影响性能。 Trace.WriteLine (以及 Trace 类的其他方法): 编译条件: 这些方法调用通常在定义了 TRACE 编译常量时被编译。如上所述,"Debug" 和 "Release" 配置默认都会定义 TRACE。 用途: 用于跟踪应用程序的执行流程,记录重要的事件、错误或状态信息,这些信息在应用程序的发布版本中也可能是有用的。例如,记录关键操作的开始和结束,或者记录发生的异常。 总结编译与用途: 用 Debug.WriteLine 输出只在开发调试时需要看的信息。 用 Trace.WriteLine (推荐使用更具体的 Trace.TraceInformation, Trace.TraceWarning, Trace.TraceError) 输出在发布后也可能需要查看的跟踪信息。 在模拟器中,您可以设置日志级别来控制哪些日志信息会被输出。 例如,在模拟器启动时,您可以设置日志级别: ## 2025-05-09 完善了各组件的干扰功能 - 把各组件的烟幕透过率计算移到 update 方法中 - 完善了指示器的烟幕遮挡计算逻辑 - 完善了激光半主动导弹的落点计算逻辑 - 完善了配置文件格式 - 集成测试的正常运行,坦克、指示器、导弹的初始化运动参数关联很大,修改了可能会影响很多测试场景。 ## 2025-05-07 完善了末敏弹各传感器的干扰功能 - 增加了烟幕弹对末敏弹的干扰功能 ## 2025-04-23 增加了烟幕弹对激光目标指示器、激光驾束仪、红外测角仪的干扰处理 - 将测试用例全部通过 ## 2025-04-18 改进了红外成像制导的目标识别和烟幕弹干扰算法 ## 2025-04-14 增加了激光诱偏目标的干扰功能 - 增加了激光诱偏目标的干扰功能 - 把烟幕弹和激光诱偏都统一到Jammer架构中 - 修改了装备的接口,把ISpectralCharacteristics接口移除 - 修改了威胁源数据管理器,增加了数据目录路径,在用户使用 dll 库时,要指定DataManager 的数据目录路径 ## 2025-04-10 增加了 Jammer 架构,实现了烟幕弹逻辑 ## 2025-04-09 改进各导弹导弹制导系统的大气透过率计算 - 使用AtmosphereDllWrapper封装的计算函数,实现了激光在大气中传输的透过率精确计算 - 添加了新的CalculateLaserTransmittance方法,简化对大气透过率的计算 - 改进了接收功率计算逻辑,考虑了以下因素: - 激光从发射器到目标的大气衰减 - 目标反射光从目标到导弹的大气衰减 - 发射系统透过率和接收系统透过率 - 激光波长对透过率的影响 - 增加了红外图像的最小像素限制 - 模拟效果改进: - 在不同天气条件下的导引性能变化更加符合物理规律 - 远距离目标的锁定概率降低,符合实际武器系统特性 - 雾天、雨天等恶劣天气条件下制导性能降低,更加真实 ## 2025-03-10 优化激光半主动导弹的制导加速度计算 - 降低了比例导引系数从 3 降至 2,使最大加速度从 ±18 降低到 ±12左右 - 降低了四象限探测器的灵敏度spotOffsetSensitivity,从 0.5 到 0.05 - 实现了制导加速度平滑处理机制,通过加速度历史值加权平均的方式减少突变 - 利用四象限探测器误差死区机制(误差阈值0.01),当探测器误差在死区范围内时不产生制导指令 - 修改后的效果: - 当光斑在四象限探测器中心位置时,制导加速度保持为0 - 微小光斑偏移不再引起过度调整 - 制导加速度变化更加平滑,减少了能量消耗 - 导弹飞行轨迹更加稳定,飞行姿态变化更平滑 - 系统稳定性得到显著提升,特别是在瞄准目标过程中的稳定性 ## 2025-03-05 修改各导弹运行中的一些 BUG,修改日志的输出方式 - 修改了日志的输出方式,使用 Debug 和 Trace 输出日志 - 修改了 Vector3D 中归一化和点积的计算,避免因为浮点数的精度问题导致出现NaN错误 - 将导弹自毁和爆炸的逻辑,移到导弹基类中 - 完善了集成仿真程序的逻辑,更方便进行仿真测试 ## 2025-02-26 给激光半主动导弹增加四象限探测器 - 增加了四象限探测器,修改了制导方式 - 四象限最初的代码有个关键错误,聚焦后的光斑是 3mm,传感器尺寸用的是镜头尺寸 10cm,导致光斑总是偏离到某个象限。参考论文,改为光斑直径 5mm,传感器 30mm - 四象限探测器的加速度与仿真步长有关,0.025 秒 以下比较正常,加速度在 3左右 ## 2025-02-25 给激光半主动导弹和激光目标指示器增加激光编码特性、四象限探测器 - 增加了 6 种激光编码方式 - 当激光编码方式和编码匹配,才能激活导引 ## 2025-02-17 末敏弹的探测逻辑优化 - 优化了末敏弹的探测逻辑,完善了几个传感器的逻辑 - 优化了测试代码,完善了末敏弹的探测逻辑,完善了几个传感器的逻辑 - 测试脚本运行:在根目录运行 dotnet test - 仿真程序运行:在 tools 目录运行 dotnet run ## 2024-01-09 视场角对目标探测高度的影响分析 在测试末敏子弹的目标探测功能时,发现视场角大小对首次探测高度有显著影响: 1. 视场角为 10° 时: - 首次探测高度:124.01米 - 扫描角度:224.64° 2. 视场角为 1° 时: - 首次探测高度:93.89米 - 扫描角度:224.64° 分析结论: - 视场角越大,探测范围越大,可以在更高的高度发现目标 - 视场角越小,探测范围越小,需要更接近目标才能发现 - 两种情况下扫描角度相同(224.64°),说明目标的相对方位是一致的 - 高度差约30米,这个差异完全符合视场角的物理特性 这个发现对于系统设计有重要启示: 1. 视场角的选择需要权衡探测距离和精度 2. 在仿真中需要考虑视场角对探测时机的影响 3. 视场角属于固有误差,无法简单通过算法消除 ## 2024-01-09 第二圈发射的径向误差分析 在分析末敏弹的打击精度时,发现当末敏弹进行第二圈螺旋扫描时会产生固定的径向误差: 1. 误差特征: - 表现为固定的径向偏差 - 与目标的相对方位无关 - 在不同仿真条件下保持稳定 2. 误差原因分析: - 末敏弹在第一圈扫描时记录首次探测角度 - 第二圈扫描到相同角度时触发攻击 - 由于末敏弹持续下降,第二圈时的高度低于第一圈 - 高度差导致了固定的径向误差 - 下降速度 10m/s, 扫描周期 0.25s, 高度差 2.5m,产生的径向误差是 1.44m 3. 与视场角的关系: - 视场角影响首次探测高度 - 探测高度越高,两圈之间的高度差越大 - 因此视场角间接影响了径向误差的大小