时间:2024-05-04
王艺儒
摘要:随着科技的发展与进步,数字孪生崭露头角。若具有足够强大的技术,数字孪生技术可以完美地复制现实世界。因此数字孪生当前最大的应用方向就是车辆的智能驾驶,即车辆漫游。在现实世界,昂贵的测试金额以及具有限制的实验场地让智能驾驶止步不前,而数字孪生的出现,提高了智能驾驶的开发能力。该文对车辆在虚拟校园的漫游为主要内容。首先利用Cityengine和游戏引擎Unity3d对校园环境、车辆、树木等场景进行建模。通过C#设计系统需要的代码,让用户可以在虚拟校园下自由的控制车辆。最后收集车辆的信息、数据、参数等传输到网络,进行人工交互功能。系统让真实校园与虚拟校园成功地结合,节约了测试成本,为各大领域提供一种智能驾驶方法,为未来的数字孪生的发展奠定了基础。
关键词:数字孪生;Unity3d;三维建模;人机交互;C#
中图分类号:TP391.9 文献标识码:A
文章编号:1009-3044(2022)06-0094-03
开放科学(资源服务)标识码(OSID):
1 数字孪生
1.1 什么是数字孪生
什么是数字孪生?数字孪生从基础来看,就是利用某些软件把现实生活中存在的物体情况通过数字化体现出来。就像谷歌,百度地图等,它们将现实生活的建筑物、街道、树木进行数字化智能化,然后将信息传输到每个人的手机上。
数字孪生被Grieves教授首次提出[1],隨着社会的发展,数字孪生的基本思想逐步形成,即虚拟空间中,将数字模型具有的信息和物理世界的实体互相映射,最后完美地复制出物理实体的活动轨迹及其生物特征。
随着时代的进步与社会的发展,数字孪生逐渐被越来越多的专家提出,通过与物联网,人工智能,大数据等领域结合并应用于各行各业。同时构思了越来越多以数字孪生为基础的智能信息模式。
1.2 数字孪生下的车辆漫游
首先采集数据是重中之重。需到现场采集车辆内部的照片或图片,车辆基本尺寸、校园风景、校园建筑、校园行走人员等,建立三维建模所需要用到的材质和图片库。需要对车辆等信息进行简化绘制和建模。最后通过物联网得到车辆参数与各结构数据,设计数据库,界面设计,实现交互漫游,最后完成校园车辆漫游管理。总而言之,就是充分利用物理模型、传感器更新、车子运行历史等数据,对车辆在不同环境和路线等进行仿真、监测、计算、调节、控制和集成,最后在虚拟空间中完成映射,从而反映相对应的实体车辆的活动周期过程[2]。
2 三维校园设计
随着互联网的发展,三维校园为众多领域的工作人员带来巨大的便利。想要成功构建与现实相似的三维校园,不同的应用技术有着不同的方法。当前主要的建模方法有:先画出校园cad图纸,然后导入3dmax进行建筑建模;直接利用Sketch Up 画出模型最后渲染; ArcGIS Engine三维建模等。经过研究与实验后,本文使用了专用于大规模城市仿真的 CityEngine 进行校园模型制作[3]。
2.1 三维校园实现过程
首先,校园建模所需的影像数据可以通过 CityEngine 中Get Map Data功能获取,本文利用了Openstreetmap得到校园地图具体的建筑信息,路网信息等。在建模前,要了解校园区域每一个建筑特点,例如颜色,高度,形状等。通过得到的信息,找到相似的贴图,最后编写详细的参数规则[4]。CityEngine中,建筑模型都是通过CGA规则进行描述的,当一个CGA被指定给一个图形,那么这个建筑模型就会根据指定的图形范围来生成,如表1所示。
成功构建校园后,可以将整体建筑导出为fbx格式,进而导入Twinmotion软件对植物,道路,人物等进行美化。同时在Twinmotion中在不同环境下对校园内部进行初级的动画演示。最终结果如图1所示。
3 车辆漫游实现
在虚拟的校园环境下,对车辆进行和现实相同的操作,通过虚拟现实技术漫游系统在车辆上的应用,利用脚本语言、碰撞检测技术、界面设计,使用户真实了解车辆功能和结构,设计和实现了虚拟车漫游展示系统[5]。
用户可以像玩游戏一样,驾驶汽车查看虚拟模型和各种相关数据信息。虚拟车辆与真实车辆也可以同步接收信息与状态,从而让虚、实状态的同步,进而迈向自动驾驶领域。车辆漫游流程如图2所示。
3.1 车辆漫游系统
本文选用Unity3d为开发工具,同时本身内置了种类非常多的组件,采用C#作为编辑语言,作为业界著名的开源游戏引擎,它可以让使用人员感受到炫酷,现实化的三维游戏,人物,VR等交互界面[6]。因此它非常个人或小型团队进行使用,如图3所示。
3.2 车辆漫游跟随视角
对车辆建模后,令相机跟随车辆。例如按下Q,E可以左右旋转视角;滚动鼠标滑轮可以放大或者缩小视角[7];
首先,新建C#脚本FollowPlayer并挂载相机上,设置跟随物体的Tag值为Player;调整当前Scene视角对准跟随物体,按下Ctrl + Shift + F,让相机视角对准跟随物体,设置好相关参数;之后运行场景,相机即可跟随游戏物体移动。
3.3 车辆漫游的碰撞技术
碰撞技术对Unity3d来说非常重要。在虚拟三维的校园中,建筑物与正在行驶的车辆是相互独立的。车辆在漫游过程中会自动避开障碍物。而碰撞技术也可以检查物体之间是否发生物理接触,同时根据物体的特点做出对应的碰撞响应[8]。在 Unity3d 里面要想实现碰撞,物体之间都要具有碰撞组件,同时运动的组件具有刚体。这样可以详细描绘车辆在漫游时不小心与墙壁,建筑物等相撞时具体的反应和状态。
另外,车轮碰撞器(WheelCollider)是一种特殊的地面车辆碰撞器,是用Unity3d制作车辆漫游的关键,它可以模拟轮子的碰撞过程,车辆的物理引擎等。
在添加轮子时,可以给车辆添加碰撞器Rigidbody并调整质量。另外在车辆模型下建立名为PhysicalBody的空物体,用于存放车辆的碰撞器组件。同时再添加四个空物体组件代表车辆的四个轮子[9]。在PhysicalBody里添加名为Collider的空物体,用于给车辆添加碰撞器。最后给2个Collider添加BoxCollider组件,然后点击Collider的属性面板的Edit Collider调整位置和大小。再给4个轮子分别添加WheelCollider,根据Transform的数值调整轮子的位置和大小。
3.4 车辆的自动寻路
首先选择校园场景,设置可通过区域与障碍区域。Inspector视图窗口static旁的小三角形按钮显示下拉列表,选中navigation static。在菜单栏打开Navigation窗口。其中Bake窗口显示的参数主要是寻路过程中不同地形的影响,可以根据需要进行修改。单击Bake按钮计算整体地形,得到的寻路数据会与目前的Scene相关联[10]。
选中车辆,把得到的寻路组件给予车辆。在菜单栏上选择Component→Nav Mesh Agent。最后利用C#写出车辆运动的代码,让车辆移动到用户指定的目的地。最后将代码指定为车辆的脚本组件,实现了车辆的自动漫游。
4 车辆漫游的交互设计
车辆在漫游时进行人机交互,用户在现实生活中控制真实车辆的数据,利用网络将得到的数据发送给Unity3d,进而利用得到的参数与函数控制虚拟车辆[11]。同理可知,在虚拟校园中控制车辆,得到的数据也可以利用网络发送给现实车辆。实现了用户在不同环境下的车辆漫游过程,成功对现实与虚拟进行交互。GUI作为Unity3d的交互界面,它可以通过撰写代码,对脚本进行编写。GUI的代码需要写在OnGUI()这个函数里,每当重启GUI,都会执行这个方法。
首先,在Unity3d里面新建一个C#脚本,把它附加到某个虚拟物品上。然后将OnGUI()函数放在新创建的脚本里面。同时大多数GUI控件都需要一个Rect对象,这是因为每种控件都需要设置其位置和大小。其中,第二个参数可以为一个字符串,也可以为图像。另外,Rect对象的四个参数分别代表:控件左上角x坐标,控件左上角y坐标,控件的宽度,控件的高度。
4.1 车辆漫游交互的功能
1) 利用Carsim或其他软件,将现实的车辆信息数据收集起来,因此虚拟车辆中可以正确获取相关的参数。Carsim以车辆动力学为基础,将数据发送到服务器,最后控制虚拟场景,驾驶虚拟车辆。
2) 用户可以切换不同景色,观测校园下不同景色的车辆漫游过程[12]。代码如下:
public class changeweather : MonoBehaviour
{
UniStormWeatherSystem_C UniStormSystem;
// Start is called before the first frame update
private void OnGUI()
{
Rect rect1 = new Rect(10, 20, 50, 30);
Rect rect2 = new Rect(10, 60, 50, 30);
Rect rect3 = new Rect(10, 100, 50, 30);
Rect rect4 = new Rect(10, 140, 50, 30);
if ( GUI.Button(rect1, “雨”))
{
UniStormSystem.GetComponent<UniStormWeatherSystem_C>().weatherForecaster = 12; //雨
}
if (GUI.Button(rect3, “晴天”))
{
UniStormSystem.GetComponent<UniStormWeatherSystem_C>().weatherForecaster = 8; //晴天
}
if (GUI.Button(rect4, “霧霾”))
{
UniStormSystem.GetComponent<UniStormWeatherSystem_C>().weatherForecaster = 1; //雾霾
}
}
void Start()
{
UniStormSystem = GameObject.Find(“UniStormSystemEditor”).GetComponent<UniStormWeatherSystem_C>();
}}
3) 在车辆漫游的过程中,可以利用MySql作为校园建筑的数据管理与开发的基础。首先定义连接数据库的字符串后连接数据库,代码如下:
public static MySqlConnection Connect()
{
MySqlConnection conn=new MySqlConnection(CONNECTIONSTRING);
try
{
conn.Open();
return conn;
}
catch (Exception e)
{
Console.WriteLine("打开数据库错误!"+e);
return null;
}}
因此当用户在虚拟校园漫游时,也可以利用数据库,通过菜单查询路过的建筑等物体信息。在车辆漫游的同时完成并实现信息的交互。
5 结束语
本文构建一种虚拟校园环境下的车辆漫游系统。现实世界各种动态可以在虚拟环境里同步更新,同时虚拟校园也可以做各种测试、分析等结果,进而进行信息数据的传输。车辆在现实校园运行的同时,车辆的运动状态,车辆信息采集后反馈给虚拟场景,从而完成虚、实状态的同步,实现整个数字孪生系统仿真。
参考文献:
[1] 朱睿.数字孪生驱动的螺线管装配生产线运维系统设计与研究[D].南京:东南大学,2019.
[2] 葛雨明,汪洋,韩庆文.基于数字孪生的网联自动驾驶测试方法研究[J].中兴通讯技术,2020,26(1):25-29.
[3] 孙守清,陈宜金,陈俊美.基于CityEngine和SketchUp的快速精细三维建模[J].北京测绘,2021,35(7):880-883.
[4] 贺体刚,陈鑫.基于CityEngine建模技术的三维虚拟校园开发与制作[J].电子技术与软件工程,2020(24):42-43.
[5] 李芳,邱利伟,王会艳.虚拟现实技术漫游系统在轨道车辆上的研究及应用[J].科技视界,2018(12):245-246.
[6] Cheliotis K.ABMU:an agent-based modelling framework for Unity3D[EB/OL].[2021-08-20]. https://www.sciencedirect.com/science/article/pii/S2352711021000881.
[7] Lin M,Shan L J,Zhang Y C.Research on robot arm control Based on Unity3D machine learning[J].Journal of Physics:Conference Series,2020,1633(1):012007.
[8] 李虹,陆培培.基于Unity3D的虚拟动画系统设计[J].现代電子技术,2021,44(8):164-168.
[9] 彭俊江.基于Unity3D的轨道车辆虚拟设计系统研究[D].南昌:华东交通大学,2020.
[10] 王志岗.基于Unity3D的自动寻路导航系统的研究[J].电脑知识与技术,2019,15(36):209-211.
[11] Ruan Weihua.Design and Implementation of AR Vehicle Display Model Based on Unity3D[C]//International Information and Engineering Association.Proceedings of 2018 3rd International Conference on Mechatronics and Information Technology(ICMIT 2018).International Information and Engineering Association:计算机科学与电子技术国际学会(Computer Science and Electronic Technology International Society),2018:8.
[12] 万平,彭俊江,肖乾,等.基于Unity3D的轨道车辆虚拟设计系统研究[J].华东交通大学学报,2021,38(1):106-112,142.
【通联编辑:谢媛媛】
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!