基于Unity3D 的交通灯控行车虚拟实验研究

2021-04-30 07:25赵守凯南楠
电子设计工程 2021年7期
关键词:交通灯倒计时绿灯

赵守凯,南楠

(湛江幼儿师范专科学校,广东湛江 524084)

十字路口交通灯控行车实验是数字电子技术课程比较典型的实验,也是高校信息电子类专业特别重要的实验之一。让学生了解相关的实验规程、实验设备和装置、操作技巧并进行实践训练,对提高其数字电路实践能力和创新意识具有重要意义。很多高校采用传统的交通灯控行车实验,学生不能在逼真度较高的三维场景下操作交通灯指挥行车虚拟仿真实验。应用Unity3D 引擎、3ds Max 等VR 技术能够有效地解决上述问题。虚拟现实(Virtual Reality,VR)技术是指采用计算机技术为核心的现代高科技生成逼真的视、听、触觉一体化的特定范围的虚拟环境(Virtual Environment,VE),用户可借助特殊的输入/输出设备,以自然的方式与虚拟环境中的对象进行交互,通过视觉、听觉和触觉等获得身临其境的感受和体验的一门交叉学科[1-3]。VR 技术在教学实验中的应用已越来越广泛。

1 实验系统的整体设计

1.1 实验系统流程设计

Unity4.6 推出的UGUI 系统由于开发UI 界面效率高、易于使用、有较好的兼容性等特点,受到越来越多开发者的青睐。实验界面的UI 设置主要有实验界面背景、实验名称、操作按钮等。通过实验界面跳转到实验场景[4-6],开启实验开关后即可进行实验电路连接操作,电路连接成功后立即提示实验连接成功并输出交通灯指挥行车VR 场景。实验流程设计如图1 所示。

图1 实验流程

1.2 实验系统内容设计

设计一个甲、乙两条干道交叉的十字路口交通灯逻辑电路。每个干道各一组交通指示灯,依次显示绿、黄、红指示信号。信号灯具备倒计时显示功能,当甲干道绿灯亮时从60 s 开始倒计时,此时乙干道红灯亮;甲干道60 s 倒计时为0 时,显示黄灯并从3 s 开始倒计时,此时乙干道红灯依然亮;当甲干道黄灯亮,并倒计时为0 时,黄灯变为红灯,此时乙干道绿灯亮并从60 s 开始倒计时为0;然后,乙干道黄灯亮3 s 并倒计时,甲干道红灯依然亮,当乙干道黄灯倒计时为0 时变为红灯;最后,又是甲干道绿灯亮并倒计时,乙干道变红灯,依照以上顺序交替出现红、黄、绿灯信号并循环,实现十字路口交通灯指挥行车管理的自动化。部分电路连接图如图2 所示。

图2 部分电路连接图

2 实验场景及交互功能设计

2.1 实验箱的建立及电路连接实现

实验箱[7-9]是实验操作的核心,利用3ds Max 建模工具建立的实验箱模型主要包括74LS192N、74LS04N、74LS32N 等电路芯片、电路板、电容电阻、显示屏、数码指示灯、发光二级管、实验箱电源开关等。实验箱模型保存为FBX 文件以便导入Unity 3D引擎进行VR 实验开发。建立的数字电路实验箱如图3 所示。

图3 数字电路实验箱

实验箱电路芯片及相关仪器的模型建立成功后,需要模拟导线连接电路芯片的过程,在该实验中,设置导线两端的位置为两个芯片插口的中心位置。可用74LS74N 实现交通灯有4 种状态变换,点击开关后,实验箱自动打开,在实验箱显示屏出现交通灯电路连接实验图,实验者可根据实验图完成当前实验电路连接。在进行电路连接时,每个端口都设置名字和位置两个属性。单击第一个端口,获取第一个端口的名字和位置,单击第二个端口时也获取第二个端口的名字和位置,然后在两个端口之间生成导线,当两次单击的端口名字和位置相同时则判断是同一个端口,不产生导线。如果单击了错误端口只需再次单击即可退出。以下为导线连接的控制代码:

以此类推,74LS192N、74LS32N、74LS04N 等芯片也按照该方法全部连接成功后,在屏幕中央出现电路连接成功的文字和声音提示“交通灯控电路已正确连接!”,此时实验连线己经成功搭建完毕[10-12],在实验箱一侧立即显示十字路口红、黄、绿交通信号灯及车辆通行效果。电路连接及实验输出效果如图4 所示。

图4 电路连接及实验输出效果

2.2 十字路口交通灯变色设计

在Unity3D 中用正方体、球体等模型创建交通灯支架和红、黄、绿灯模型。建立面片作为公路及周边地面,白色线条作为公路行车道分隔线,应用复制工具建立4 条行车线路分割线、给地面设置合适的草地贴图即可得到十字路口交通灯行车场景,通过控制球体的颜色实现红、黄、绿灯颜色变化。设置两个不同角度的摄像机观看十字路口红、黄、绿灯的变化,激活其中一个的同时关闭另外一个摄像机[13]。其中,绿灯亮的代码为:

2.3 汽车的随机创建及道路选择设计

从Unity3D 资源库导入4 种不同外形的汽车,用Instantiate(Car,Vector(x,z,y))函数实现生成汽车,以下为随机创建汽车的代码:

通过应用Random.Range(0,m)函数随机产生汽车,在检视面板里设置4 个共有变量,再把相应的预制物体拉进去,sedan 等车的模型可从prefab 文件夹中直接拖进,救护车走直线而且只在最右的道路,当随机出现救护车时,就只在4 个不同的紧急路线中选择第二个参数生成物体的位置[14-16],这个位置可针对不同的对象进行不同的变化。建立的汽车行驶场景如图5 所示。

图5 汽车行驶场景

3 汽车行驶碰撞仿真设计

Unity3D 提供碰撞体物理组件,碰撞体与刚体一起促使碰撞发生,碰撞体一般形状较为简单,外形如方体、胶囊、球体等,在Unity3D 中创建的GameObjects 会自动分配一个合适的碰撞体,例如:创建一个立方体会得到一个BoxCollide(立方体碰撞体),需要注意的是刚体需要绑定在被碰撞的对象上才能产生碰撞效果。Unity3D 提供车轮碰撞体WheelCollider 函数实现碰撞侦测、轮胎物理现象和轮胎模型,专门用于轮胎,可以通过Mass 设置碰撞体质量,Radius 设置半径等参数。车的层次结构一般分为车身和4 个轮子。车身碰撞检测用包围盒,4 个轮子的碰撞检测用车轮碰撞体(WheelCollider)。汽车有前后4 个轮子,一般情况下车后轮驱动,前轮辅助,或者前轮驱动,后轮辅助。当然也有4 个轮子同时驱动,因此,通过设置需要驱动的轮子即可。可以用碰撞体的方法进行设置,WheelCollider.motorTorque 设置轮子的动力,WheelCollider.steerAngle,设置轮子的旋转角度。为保持车辆在地面上稳定行驶可设置车轮碰撞体(WheelCollider)向地面发射一条射线,用Physics.Raycast 获取碰撞点,这样可根据地面的高低调整车轮的位置。采用路线标志点和虚拟引导块可避免行车时车辆之间发生碰撞[17-19],引导块引导车辆正常行驶。车辆可在指定的路线标识下行驶,创建立方体作为路线标志点,并保留碰撞属性、取消可渲染属性,每一个汽车分配一个引导块,引导块驶向标志点,汽车跟随引导块行驶,引导块起到缓冲的作用,保证汽车在转角处圆滑的拐弯。

4 实验系统的发布和测试

Unity3D 可支持发布多种平台,系统各模块开发完成后,即可发布为Windows 平台下可执行文件,也可发布为移动平台Android APP 文件。发布成功后首先进入登录界面,输入用户名、密码,点击登录后即可进入实验系统界面。VR 交通灯控行车实验设置3 种实验模式,分别为学习模式、训练模式、考核模式。学习模式主要设置实验目的、实验器材准备、场景布置、操作布置等电路连接实验基础知识。训练模式环境下可多次重复操作实验以提高实验熟练程度。在考核模式下实验者可在规定时间内完成电路连接实验,提交后即可查看实验成绩。实验界面如图6 所示。

图6 VR交通灯控行车实验

5 结论

文中主要阐述交通灯控实验流程,交叉十字路口逻辑电路连接,实验箱、74LS74N、74LS192N 等功能芯片及相关仪器的建立,提出应用Unity3D 引擎单击芯片端口实现电路连接的方法,可减少由于功能芯片仿真不准确导致三维虚拟环境下电路连接错误的问题。应用Unity3D 引擎设计并实现十字路口交通灯指挥行车三维虚拟仿真场景。开发出较为完备的十字路口交通灯控行车三维虚拟仿真实验系统。解决该实验教学无法在线上开展的问题,也避免了真实场景行车的危险性。未来将进一步完善数字电子技术其他的三维虚拟仿真实验内容,进一步增强实验的沉浸感、交互性、想象性等VR 特性。

猜你喜欢
交通灯倒计时绿灯
为什么红灯停,绿灯行
基于单片机的交通灯模糊控制器研究
为什么交通灯是红黄蓝三种颜色?
一直飘红的交通灯
红灯停,绿灯行
基于单片机的LED模拟交通灯设计
一路绿灯 一路关爱
红灯与绿灯