以创建 ADAS SIL 仿真引擎核心模块为例

项目地址:

ADAS_SIL_SimulationsAtomGit | GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。https://gitcode.com/Norman1234/ADAS_SIL_Simulations

需求描述:

请创建一个 engine.py文件,作为 ADAS SIL 仿真框架的主循环调度模块。具体要求如下:

1. 配置管理

  • 支持从 engine_config.yaml加载配置。

  • 若配置文件不存在,则自动使用内置的默认参数运行(不报错退出)。

  • 配置项至少包括:仿真步长 (dt)、总时长 (duration_s)、输入文件路径、SUT 类型、检查开关等。

2. 目录与输出

  • 运行时自动创建以下目录(如果不存在):

    • engine/output/:存放仿真报告

    • engine/logs/:存放运行日志

  • 日志文件和控制台输出均包含时间戳,便于追溯。

  • 输出文件(报告、日志)不覆盖旧文件,自动追加时间戳或序号。

3. 边界值与异常处理

  • 所有数值计算中出现 inf-inf时,统一替换为 999,同时记录一条 WARNING 级别日志,注明原始上下文。

  • 关键步骤(文件读取、SUT 调用、检查执行)应有 try-except 保护,捕获异常后:

    • 记录 ERROR 级别日志,包含异常堆栈。

    • 根据严重程度决定是跳过该步还是终止仿真。

4. 调试支持

  • 支持 --debug命令行参数,开启后打印更详细的执行流程(如每步的信号摘要、SUT 输入输出)。

  • 默认模式下仅输出 INFO 及以上级别的日志。

5. 可扩展性预留

  • SUT(被测对象)定义为抽象基类,当前提供一个 DummySUT实现用于测试。

  • 检查和报告模块也定义为接口,允许后续替换为更复杂的实现。

6. 验证方式(可选,但建议)

  • 在文件末尾的 if __name__ == '__main__':中,添加一段简短的演示代码:

    • 使用默认配置运行一次仿真。

    • 打印仿真步数和输出文件路径。

    • 检查 output/ 下是否生成了报告文件。

更多推荐