这是孙工的第18篇原创。
“ 本文先通过与实车测试的对比引出软件在环测试的内容,然后分别介绍软件在环测试的不同模块,最后介绍通过集成开发搭建完整测试环境的思路。可能有疏漏,供大家批评。”
注:《MIL、SIL、PIL和HIL是个啥》中描述了各种XIL手段,但是本文采用相对粗糙的分类方法,认为被测对象为算法软件而不是控制器硬件的测试都为软件在环测试。
04
道路交通仿真
(1)道路交通仿真的作用
道路交通仿真用于模拟自动驾驶车辆在实际道路运行时可能遇到的各种场景,对算法进行充分测试,可分为道路环境和交通场景两个部分:
道路环境:静态的部分,比如在高速还是城市道路、路口有无红绿灯;
交通场景:动态的部分,比如遇到了车辆还是行人、车辆如何动作、行人轨迹如何。
下图是PanoSim软件停车场和城市道路场景的示例,可对比了解道路交通模型的各项要素:
(2)道路环境
用于描述场景中静态的部分,包括路网、交通设施、临时改变、路侧物体等:
仿真软件一般都会提供图形化的编辑和可视化界面,用于道路编辑:
(3)交通场景
用于描述场景中动态的部分,包括车辆、行人、动物和运动物体等:
对于交通参与者的行为,一般可通过行为(相对较长时间的状态)、动作(行为的切换)和触发(动作发生的条件)来描述:
仿真软件一般也会提供图形化的场景编辑器,进行交通参与者添加,并设置行为和动作等:
05
自动化测试与评价
(1)自动化测试
自动化测试的目的是用程序测试程序,用自动化测试代替手工测试,提高测试效率和可重复性。
要实现自动化测试,大体上可分为四个内容:
①选工具,选择合适的自动化测试工具;
②接环境,基于仿真软件提供的api,把自动化工具与仿真环境连接,实现自动化调用;
③写用例,在测试工具中编写测试用例和对应的评价指标;
④做测试,进行自动化测试,测试可根据需求人工触发或者与CI集成。
需要注意的是,实现自动化测试需要增加很多工作量,需要评估投入产出比和周期要求。
下图是在自动化测试软件ECU-TEST中的示例:
(2)自动化评价与可视化
自动化测试设计的场景数量庞大,需要:
①对每个场景进行自动化的评价、输出结果;
②对完整测试场景库的执行情况进行统计、可视化显示和输出报告,方便结果评估。
06
软件在环集成开发
(1)内容和步骤
软件在环集成开发的内容可分为软件环境集成和算法集成两个方面:
软件环境集成:由于软件环境大多情况下由来源不同的多个模块或软件构成,需要通过开发中间件,将选择的多种工具集成为有机的整体。
算法集成:通过开发中间件,将算法与软件环境集成,能够实现功能触发和运行。
集成开发一般可分为定对象、画框图、辨数据和开发调试等四步:
--定对象,测试对象是完整算法、感知算法还是规划控制算法?
--画框图,根据实车情况,画出与被测对象有关的完整框图,标明算法有哪些模块构成、有哪些输入和输出、各模块如何联系?
--辨数据,根据选择的被测对象,确定哪些模块需要模拟、数据流是什么样的?
--开发调试,可按照先开环调试,再闭环调试的思路分步实现。
(2)开环和闭环调试
开环调试:不接入算法,确认模拟的信号是想要的。如目标列表信号可以用调试工具读取、且正确,控制信号确实可以正确控制车辆动作。
闭环调试:接入算法,确认算法能正确触发和运行。如算法可以识别前方车辆并跟车行驶、可以识别前方行人并紧急制动。
关键词:自动驾驶, 虚拟仿真测试,simulation,virtual test,mil,sil,hi