引用
Luo, Feng, Chu Liu, and Zechang Sun. "Intelligent vehicle simulation and debugging environment based on physics engine." In 2009 International Asia Conference on Informatics in Control, Automation and Robotics, pp. 329-333. IEEE, 2009.
研究背景目前,自动驾驶汽车的开发过程通常采用在线调试的方法。但是由于缺乏合适的调试环境,自动驾驶控制软件的开发往往比较困难。同时,在硬件完成之前不能对软件进行测试,因此传统的在线调试方法难以分析产生误差的原因。
解决问题由于传统的在线调试方法难以分析产生误差的原因,因此文章搭建了自动驾驶汽车仿真调试环境,模拟了真实的路况,并且为自动驾驶汽车提供了虚拟的传感器数据。这代替了传统的在线调试方法,以高效率低成本的方法构建了车辆及环境模型,该模型可以测试自动驾驶汽车的稳定性及鲁棒性。
方法基于windows平台的Borland CodeGear RAD Studio 2007,文章对系统进行开发。文章使用OpenGL作为图形引擎对场景进行开发,将Open Dynamics Engine(ODE)引擎用于整车动力学模型与环境的交互。仿真测试环境可以对两种主要的自动驾驶汽车进行测试:1、基于CCD/CMOS的图像传感器的车辆。2、基于光电传感器的车辆。文章所提供的自动驾驶汽车由三部分组成:伺服电机、各种传感器、主控制板。
调试仿真的环境体系结构分为三层:引擎层(图像引擎与物理引擎)、调试显示层、算法层。具体的仿真与调试结构层次如下图:
图中引擎层中的OpenGL用于生成2D或3D场景,它提供了跨平台跨语言的API。文章使用Auto CAD与3dMAX进行路面设计,生成对应场景,并利用OpenGL对车辆进行渲染。为了查看场景中的车辆以及获取自动驾驶汽车的视角,文章创建了GLcamera的虚拟相机,并将相机获取的数据作为虚拟原始视频输入。为了使车辆控制器能对信号进行处理,需要对原始信号进行处理:对GLcamera建立快照文件,然后将文件中特定点转换为虚拟数字信号存在二维数组中,以便仿真调试时使用。为了使仿真车辆行驶行为更为真实,文章基于ODE引擎对汽车动力学模型进行建立。文章对汽车铰接悬架及转向器进行建模,使用DJointSetHinge2例程对相应的铰接悬架属性进行配置,同时使用DSpaceADD例程将悬架及转向器添加到ODE场景中。最后文章对车辆及其他对象进行初始化,至此文章对自动驾驶汽车的动力学模型完成建模。
由于时间是衡量变化的单位,每隔一段时间虚拟世界就会发生一次变化,因此要获得良好的实验结果要调小时间间隔步长。仿真系统调用自动驾驶汽车的算法进行调试验证。仿真系统所测试功能包括以下几个部分:道路识别功能、传感器测量功能、前轮转向控制功能、电机调速功能、路面标志识别功能、检测交叉线和坡度功能、偏离车道紧急制动功能。下图为仿真调试流程图:
在每一次仿真调用循环结束后,将仿真向前推进一个步长,重新绘制OpenGL场景,根据虚拟采样数据生成仿真结果。在仿真程序的图形界面中,实时显示了路面识别及转向结果,同时用户定义参数也显示在图形界面中,自动驾驶系统的问题与BUG可以在很短时间内检测解决。
结果文章基于仿真调试系统,研制了具有两辆自动驾驶系统的小车:一辆装有CCD/CMOS摄像机,另一辆装有光电感应器,将仿真环境中的测试场景移植并编译下载到小车的微型控制器中,在仿真环境下对自动驾驶系统进行测试调试。
总结自动驾驶汽车的仿真与调试系统促进了自动驾驶汽车的发展,该系统不仅使用了OpenGL与ODE引擎对虚拟场景及汽车动力学模型进行仿真建模,并且提供了图形用户界面方面用户调试及修改各种参数,同时还生成了虚拟传感器信号及虚拟道路对自动驾驶汽车进行测试,同时这些数据还可以移植到实际的车辆中进行测试。这样可以以高效低成本的方式对自动驾驶系统进行调试。