基于MRDS的摄像头智能车三维仿真系统开发

2012-07-18 07:40刘碧川吴秋轩
关键词:虚拟环境车体赛道

潜 凯,刘碧川,吴秋轩,陈 凯

(杭州电子科技大学自动化学院,浙江杭州310018)

0 引言

随着飞思卡尔智能车比赛受到越来越多的学生青睐,飞思卡尔智能车在性能上的要求也是越来越高。为了方便高效的开发智能车系统,文献1,2使用虚拟仪器技术建立了智能车仿真平台,文献3建立了智能车的实时监测系统,文献4使用MATLAB软件建立了循线智能车的仿真平台。现在广泛采用的清华大学设计的Plastid仿真系统未与实车的仿真进行过深入比较,在仿真过程中未考虑其侧滑以及路面摩擦力的影响,使其仿真结果与实际结果有一定差距,并且系统不支持CCR摄像头技术,同时计算速度也是系统面临的一大问题。要从根本上解决该问题,需要一个更加完善优秀的仿真平台来提升智能车运行的模拟。本文利用微软机器人开发平台(Microsoft Robotics Developer Studio,MRDS),设计了一套可视化的模拟工具,可以在这个开发平台上设计车体模型、车体运行控制方式,建立虚拟的硬件环境,实现智能车的3D仿真。

1 开发环境简介和系统架构

1.1 开发环境及系统原理

MRDS是支持很多机器人硬件平台的Windows机器人开发环境,它提供了一套视觉化编程语言(Visual Programming Language,VPL),主要由 CCR和DSS两个主要的组件构成[5]。本文通过建立服务,在其服务元件中导入车体模型以及智能车的基本运行函数来进行仿真。服务元件的主要组成功能:联络点、内部状态、处理函数、运行环境,用于完成对数据的接收、处理、传递等操作[6]。

图1 软件系统构架图

1.2 仿真系统架构

仿真系统的基本构架如图1所示。车体的运行算法是在VPL程序中编写完成,ABC服务用于建立模拟环境,通过VPL程序启动ABC服务来实现模拟环境的运行。在运行中ColorSegment服务通过对SimulatedWebcam服务在ABC虚拟环境中提取的赛道图片信息进行处理。其处理的数据在VPL中传输并通过运行算法作用于控制控制虚拟环境中智能车的轮子转向和速度的Four服务元件,而Four元件控制改变ABC服务元件中车体的数据。如此,车体参数随着环境的改变而改变,最后在MRDS的3D物理引擎中显示出来。其中Feedback服务元件只作为速度反馈器在VPL的运行算法服务使用。通过编写VPL程序利用各个服务的功能,得到模拟智能车的各项数据和赛道信息并为车辆提供运行算法,可以将其等价于硬件智能车中的控制核心。

2 虚拟环境的建立

2.1 建立模型

通过Pro/Engineer软件构建三维车体模型,导出为.obj格式的车体模型,用同样的方式进行车轮模型的转换。三维的赛道模型同样按以上方式生成,平面的赛道图形则可以通过改变环境中提供的赛道平面图形而得到,本文使用平面赛道。

2.2 建立服务

2.2.1 Four服务元件

建立生成名为Four服务元件用于制作智能车类,在Four服务中为其添加引用和端口,用于车体信息的传递和处理[7]。在车体中添加车体位置、车轮距、车轴距、控制请求(车轮转弯角度、速度系数)参数。车体位置用于反馈车体在simulation中位置,来实现车体的运动以及车体真实速度的计算。控制请求中添加_power以及_steeringAngle两个成员,在VPL中用来实现输入所要求的速度和车轮转角。智能车类提供速度和转弯角度属性值修改方法。为智能车类添加以下成员:前右轮、前左轮、后右轮、后左轮、底盘,并且设定其属性参数,如名称,质量,模型比例,放置位置和角度等。其行驶的状态主要由车轮决定,车轮有转向属性和转弯属性,可以通过修改它们的值来进行设定车轮的转弯角度和速度,等效现实中智能车的舵机和电机的功能[8]。设定车体部件的位置,对车模进行组装:以车体中心为起点,分别设定X,Y,Z数值。导入模型作为车体外观设定,使得模型更加真实[9]。给车体添加虚拟摄像头,命名为MotorBaseWith-Wheels_cam,设定其放置位置以及观测角度。摄像头用于检测赛道,为颜色识别系统提供图像。

为车体模型设定运行方式,在车体运行时需要设计多种函数来控制。比如运行速度的设定函数,轮子转轴角速度的设定函数等。根据理论上的4轮转弯情况计算各个轮子的转速和角度,并且结合计算所得结果来设定4个轮子的属性。为智能车运行添加加速、减速等控制函数,来模拟智能车马达的控制效果。

2.2.2 ABC 服务元件

建立名为ABC服务元件,在ABC服务中为其添加引用和端口,用于信息的传递、处理和显示。建立模拟环境,添加虚拟环境主视角用于提供虚拟环境观察视角虚拟现实环境,添加虚拟天空、太阳、平面、赛道载体平面,并且建立初始赛道。通过Four服务元件中建立的智能车类,添加一辆智能车到模拟环境中,命名为robot,并且将建立好的三维模型导入。

在服务ABC解决方案中添加窗体模块,用于行驶里程、行驶速度、经过时间、显示状态。在窗体设计中,建立按钮功能函数,分别给重置记录和开始记录按钮相应功能,并且为车体在不同模式下设定不同的执行函数,进行信息的不同操作。窗体服务动作函数及其各种执行状态。动作分为四个状态:Ready、Reset、Start、Ready状态是准备就绪状态;Reset状态是重置记录状态;Start状态是开始记录状态也是记录进行中状态。

最后再编写manifest文件XML代码,在VPL中其他服务元件可以通过manifest文件调用ABC服务元件,也可以将他视为允许服务连接的标签,使其他服务可以调用ABC服务。

2.2.3 Feedback 服务元件

建立名为Feedback的服务元件,其功能是实时检测智能车的行驶速度,其工作原理为检测智能车右后轮的转速并将其转化为速度值传递出来。通过Feedback服务元件,可以对智能车进行闭环控制。用户也可以将反馈值作为设定智能车行驶方式的一个参考值。

2.2.4 ColorSegment服务元件

ColorSegment服务元件是摄像头智能车赛道识别的核心部分。摄像头智能车的原理就是根据摄像头检测到的引导线信息进行自动导航,而ColorSegment服务元件的作用正是对摄像头检测到的图片进行处理得出当前引导线信息。

首先,要取得Simulated webcam服务元件得到的赛道图片信息。取得图片信息后,对图片信息对应的数据进行处理。这里采用的是彩色图片,数据矩阵包括3色数据。为了区分出需要识别的颜色,需要先得到识别颜色的数据,ColorSegment服务元件提供一个提取图片区域颜色值范围的功能,从这里得到需要识别的颜色区域数据。Colorsegment服务元件提供识别程序修改,根据使用者自行设计的不同识别程序得出不同的结果。Colorsegment服务元件还提供一个信息输出功能,有了这样的功能,就可以在VPL中根据Colorsegment服务元件反馈的数据结合Feedback服务元件的数据编写程序对智能车执行相应的控制。

3 VPL编程

智能车的运行算法控制最终是在VPL中实现的。将设计好的运行算法转换成VPL程序,运行并观察在该算法下虚拟智能车的各种状态和数据。

在VPL中有许多元件用于车体的模拟运行。SimulatedWebcam的作用是连接智能车上的虚拟摄像头,设定使用ABC.manifest来调用智能车对应环境中的摄像头。WebCam可以利用现实中的摄像头,前提条件是必须有摄像头设备连接到PC机中。ColorSegment服务元件相应使用时,也要进行初始设定。接收摄像头元件SimulatedWebcam或者WebCam的图像数据,进行颜色识别。Feedback服务元件和Four服务元件在VPL中使用时,需要设置使用与虚拟摄像头相同的ABC.manifast。

虚拟车体按照设计的VPL程序进行现实的模拟。ColorSegment通过颜色的辨别以及通过代码的处理将设定的角度和行驶的参数传递给Four,在虚拟环境运行。其结构和算法设计如图2所示,程序只作为一个控制智能车运行的简单例子。VPL作为算法设计的平台,将算法设计转化成VPL程序形式,便可以进行算法模拟。

图2 VPL算法流程框图

4 结束语

运行后显示的3D图像界面如图3所示,正常运行时,智能车会根据算法设计在赛道上行驶。在界面菜单栏可以使用MRDS软件提供的各项功能用于查看和修改。智能车的摄像头界面如图4所示,在智能车的摄像头界面中,图像显示的是车体运行时赛道信息。窗体界面如图5所示,界面中显示经过的时间、智能车的速度和行驶里程。

图3 模拟场景

图4 摄像头显示

图5 窗体界面显示

通过仿真表明,软件已经初步完成了预期的功能,能够对智能车比赛中的众多环节进行模拟,灵活的调节各项物理参数,并可以图形化的流程图式编程,降低了编程时间,从而提高了整个系统的调试效率。

[1] 周斌,蒋荻南,黄开胜.基于虚拟仪器技术的智能车仿真系统[J].电子产品世界,2006,(2):132-134.

[2] 毕诗皓.智能车建模与仿真软件设计[D].西安:西安理工大学,2007:8-9.

[3] 路振林.智能车运动状态实时监测系统的设计与实现[D].沈阳:东北大学,2009:39-44.

[4] 彭小磊.循线智能车实验平台的建立和控制算法的研究[D].哈尔滨:哈尔滨工业大学,2011:13-15

[5] Johns K,Taylor T.Professional Microsoft Robotics Developer Studio[M].Indiana:Wiley Publishing,2008:29 -155.

[6] 康仕仲,古凯元,纪宏霖.Microsoft Robotics Developer Studio實戰手冊[M].台北:悅知文化,2008:15-62.

[7] 罗宾逊,内格尔.李敏波译.C#高级编程(第三版)[M].北京:清华大学出版,2005:16-274.

[8] 黄开胜,邵贝贝,卓晴,等.学做智能车[M].北京:北京航空航天大学出版社,2007:22-56.

[9] 杜毓聪.DSS with VSE[EB/OL].http://www.dotblogs.com.tw/laneser/archive/2008/12/28/6547.aspx,2008 - 12-28.

猜你喜欢
虚拟环境车体赛道
自制冰墩墩不能滑出“法律赛道”
科创引领,抢跑新赛道
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
征服蒙特卡洛赛道
无人驾驶,先上赛道如何?
虚拟环境下大数据智能并行聚类方法研究
动车组过分相的车体最佳接地技术分析
MIG—V工作站在高速动车铝合金车体侧墙焊接中的应用
渗透检测在铝合金车体中的实际应用