数字孪生笔记 1 工业数字孪生的意义
什么是工业数字孪生?
很多在做这个工作研究的同学最开始都想问的一个问题。到底什么才是数字孪生?我在五年前做数字孪生的时候也在思考这个问题。五年时间从数字孪生兴起,到元宇宙爆发,再到数字孪生和元宇宙没人提起,感觉已经过了一个技术周期。当大家再次提起的时候,不知道数字孪生会不会是另外一个样子。
本文以及接下来的一些文章中,我希望将我之前对数字孪生(当然主要是工业数字孪生)的经历进行总结和整理。开始之前,我们来思考一个问题:数字孪生真的有现实意义吗?
工业数字孪生的需求
作者曾和多位工业界的朋友讨论过数字孪生在实际生产中的应用。这些朋友包括国内的多个白色家电制造企业的数字部门负责人。大家对数字孪生的需求的共同点,就是能够解决实际工厂布置的成本高的问题。希望数字孪生产品能够解决工业领域设计、开发成本高、周期长、难调试的问题。大家希望有一套软件,能够实现CAD设计、CAD仿真、PLC编写、PLC调试、产线仿真、产线预测等多个功能。同时软件能有良好的交互界面,有较快的反应速度。
当然有人就会说,这不就是数字孪生的基本功能吗?是的。但是这些需求,目前没有一家仿真软件能够将这些需求囊括,甚至目前很难凑齐不同厂商的设计软件,能够将这个链路打通。西门子或者达索这样的老牌企业会有相关的软件套件,不过也仅限于自家、少量的工业仿真需求。同时这些厂商的产品都巨贵无比。
通用、高速、性价比、良好交互似乎与现在的数字孪生技术水平毫无关系。通用意味着支持数字孪生行业的上下游的输入输出。高速意味着其中的核心算法(主要是仿真算法)能够在极短的时间内精确计算出仿真结果。性价比意味更多的使用面,更低的价格,让更多的用户能参与其中。良好的交互,能让产品就像游戏一样让更多人所接受,学习成本极低。
传统工业生产线
传统工业生产线的开发过程其实是非常线性的,零件设计好之后,在图纸上拼装。图纸设计完成,再生产零部件或者采购配件。当采购完成后由工程师负责搭建产线。电气工程师负责调试。调试完成后再指定工厂搭建生产。每一步都会依赖上一步的完成,如果发现上一步出现问题,还需要反过来重新设计制作。流程图如下图所示:

数字孪生世界中的产线设计生成流程
而在数字孪生的世界里,产线的调试是可以和设计并行。在调试完成后再进行最终产品的生成。

数字孪生流程图中,产线的自动化开发放置在CAD设计的同时。这样能极大减少产线的设计时间。一旦产线CAD和电气自动化程序设计完成即可投入使用。因为提前已经将产线设计完成,因此组装后的返工率大大降低。相对应的故障率也会极大降低。自动化设计流程引用之前博文中的图片:

工业领域的发展,诞生了众多领先的制造企业。由于每家公司制造的设备发展轨迹不同,标准不同,导致工业设计上下游之间很难有流畅的链路满足所有厂商的所有设备,所有控制器能够连接在一起。甚至有些公司会估计将设备的接口闭环,形成所谓的行业壁垒。
工业数字孪生的形式
数字孪生其实跟仿真技术发展息息相关。而计算机仿真技术又是一锅大杂烩,里面包括了各种细分的计算机技术,有CAD、计算机图形学、有限元仿真、动力学仿真、刚体模拟等等。因此数字孪生其实不是一个新技术,甚至于在计算机诞生之后不久,数字孪生的部分相关技术就已经诞生。因此我们可以说,广义的数字孪生是通过计算机进行仿真的一种技术,而狭义的数字孪生则根据不同领域有不同的定义。我们在这里主要讨论制造业的数字孪生。基于制造业数字孪生中模型的表现形式,我将数字孪生分为基于CAD的数字孪生,和基于游戏引擎的数字孪生。
基于CAD的数字孪生更多是基于传统样条曲线,基于有限元等物理计算实现高进度的场景模拟。而基于游戏引擎的数字孪生,是基于三角形,通过简化的物理碰撞实现实时,美观的数字孪生呈现。
基于CAD的数字孪生
在目前,也许在最近的几年内,基于CAD的数字孪生也依然数主流,也依然是机械设计仿真领域的主要工具。
CAD(Computer-Aided Design)是计算机辅助设计的简称。引入CAD能够帮我们快速实现模型的原型设计。这也是很多设计软件所宣称的方向。目前在工业上几乎所有的行业都会使用到CAD。而我们通常讲CAD导出的文件也会统称为CAD文件。例如Solidworks到处的sld、std,navisworks导出的nvd文件。CAD数据有一个天然的优势:精确。工程师设计使用CAD工具将产品从单纯的数字转化为可视的平面和三维模型。之后再使用数控机床将零件加工出来。在转化过程,数据从设计图纸->2D图纸->3D图纸逐步流转。主流的设计软件都能保证误差在微米级一下(从计算机角度来说,除非输入错误,误差几乎可以忽略)。因此从输入到输出加工,CAD的工作流数据精度能够保证与我们设计一致。这也是基于CAD进行仿真的基础。


通常我们会把CAD设计出的三维图纸叫CAD模型。CAD模型与我们常见的游戏中的三维模型不相同。CAD会使用曲线曲面进行设计,这样能保证设计出的模型是可微的。每一个点,特别是曲面上的点都能够精确得到具体数值。我们常见的三维模型是由三角形组成。而三角形是由一串稀疏的点组成,进度相对就没有那么精细。
前面的描述,为了强调CAD模型仿真的精度能够达到极高的精度。基于CAD模型的基础上进行仿真,这是从源头上保证了仿真的精度。
基于游戏引擎的数字孪生
为什么会有基于游戏引擎的数字孪生这一分类?刚才说到在数字孪生技术中,其实除了CAD引擎外,还有一个主流的方向是使用游戏引擎来进行数字孪生仿真。个人认为,策略游戏很多时候也是简化的数字孪生平台。更别说之前大火的元宇宙概念,就是基于游戏引擎搭建的。因此游戏引擎很可能成为数字孪生的一个新的突破。游戏引擎作为数字孪生平台,具有代表性的当属51world。51world冲击港股新闻

51是基于UE游戏引擎搭建。得益于UE引擎的高质量画面,51World的宣传效果非常震撼。而UE的对手之一Unity也有自己的数字孪生平台工具。不过,相比51的工具流来说,Unity的UMT工具就显得简单。毕竟一个是一整个公司,一个是一个很小的团队。且UMT产品已经有3年没有进行更新。
Unity Digital Twin
为什么会有人用游戏引擎来做数字孪生呢?
我们从数字孪生的定义来说,不一定所有的任务都需要高进度的仿真。游戏引擎的优势是,渲染质量高,实时性好,开发难度小,可定制等。借用游戏引擎我们很容易就能实现一个三维数据看板,一个实时同步的三维画面反馈。这一块之后会单独列一章进行详细讨论。
不过,当涉及到CAE方向的时候,游戏引擎的功能就显得有点不足。这不是游戏引擎的问题,而是现阶段所有的仿真平台的问题。想要精度,那么就需要舍弃速度,想要速度,那么就需要舍弃精度。精度和速度看起来就好像是两个冲突的点。
个人认为游戏引擎来做数字孪生,其实用价值还需要探索。
典型案例
前面说了这么多,我们可以从实际例子上来看到,当前我们能利用数字孪生概念做什么?注意这里我用的是数字孪生概念。因为我觉得数字孪生还没有到限定一种技术来说。其更像是一种概念,由多种技术组合而成的概念。目前已经由提出的技术领域,我们可以初步看到数字孪生使用场景。
波音公司数字孪生测试
飞行器测试领域可以说数字孪生的老应用场景了。飞机的安全性要求很高。一个型号的飞机,从设计到制造到试飞都有严格的要求。飞机不仅硬件要求严格,而且对其软件要求也异常严格。但是一辆飞机的造价成本极高,如果一个型号的飞机设计一定要先造一台来测试,那么成本就太高了。金钱是推动技术进步的一大动力。因此飞机的数字化测试在很早的时候就已经应用到飞机的生成过程中来。基本的流程是通过先对飞机进行数字化建模,然后通过流体动力学等仿真算法对飞机的风阻等参数进行测试。数字孪生在航空业的应用场景。除了通过对纯虚的数字模型进行仿真,还通过软件在环和硬件在环,对实际的硬件进行测试。保障其安全性。

除了飞机,类似的技术也城市规划、车辆设计等领域应用。不难看出,这些场景都是在高成本,低容错率的行业进行使用。不过技术就是这样,很多高级的技术最后都会向更广大的用户群推广。
LGSVL自动驾驶训练

LGSVL是一个很著名的自动驾驶训练开源项目。但是跟数字孪生有什么关系呢?LGSVL也是很典型的软件在环的项目。自动驾驶厂商可以通过这一套系统完成测试路段和测试状态的采集。如果做过自动驾驶的小伙伴应该体会过采集路测的痛苦。传统方式是开一辆车,导出去拍行驶的数据。这样做成本高,周期长,而且很多路宽并不很采集到。而使用一套虚拟的驾驶仿真系统,就能做到全天候,不间断的驾驶模拟。项目可以做到所有的场景与现实场景进行映射。车辆在虚拟场景驾驶就如同在现实路测一样。并且模拟多种平时不常见的路况,比如行人突然出现的异常情况或者突然出现火山,泥石流等自然灾害情况。理论上能极大减少测试场景的成本。提高自动驾驶的异常处理能力。同时这样一套系统,也能作为自动驾驶的能力检验辅助。
不过问题也很明显,那就是游戏引擎无法仿真到与现实一样。这样就会导致训练出来的结果不一定可信。除了LGSVL,还有其他类似的自动驾驶仿真项目,比如百度的apolo项目。不过令人唏嘘的是,百度apolo项目夭折, LGSVL放弃项目支持。
项目地址:https://hidetoshi-furukawa.github.io/post/lgsvl-simulator/。
百度ApolloAuto地址:https://github.com/ApolloAuto/apollo
城市模拟
玩过**《模拟城市》**的朋友应该都体会过搭桥梁,建楼房,当市长指挥全局的快感吧。数字孪生在城市中的应用与《模拟城市》类似。策划者在城市建设过程中,提前规划城市交通、公共设施等位置。通过设置人流来反应城市的运行情况。这里要提到51所做的51world。这一套系统的目的就是实现所有的现实场景都能在虚拟场景中1:1还原,且可交互。管理者动动手指就能知道当前哪里的人流量大,哪里的建筑物出现了什么问题,哪里出现了堵车等情况。

想要做到真实城市的数字孪生,挑战非常大。
第一,城市的规划图拿到不是难题,在OSG等网站上就可以获得。但是基于规划地块上形成的三维城市建筑却不是随便就能生成的。因此城市三维生成是一个非常有挑战的问题。
第二,城市是一个自然几何体,会产生非常复杂的数据源。数据源之庞大,普通的服务器根本没办法聚合在一起。城市中有交通,人流,水文,天气,建筑等多种数据源。很多数据是没办法直接获取。且获取之后,数据量巨大。因此城市的数据处理也是一大挑战。
第三,城市的范围很大,仿真要求很高。回到之前的速度和精度曲线。想要好的仿真,那么在城市范围内,就很那做到实时,而想要实时,就必须要舍弃很多数据。
第四,城市的变化很快。仿真平台需要能够实时更新城市动态,以应对城市的变化。而很多数据是不能做到实时更新。且就算更新,也很难能实时反馈到决策者的屏幕上。
生产数字化和黑灯工厂

最后一个案例放在我的舒适区,制造业数字孪生。制造业也与飞机、汽车等产品的设计有类似的问题。产线的生命周期,如设计、生产、维护、升级等都需要大量的人力、资源投入。那么大家就在想是不是可以把产线数字化来解决这个问题。目前这一块领域,达索、西门子、Ansys等传统仿真软件公司做的很好,也属于行业先驱。但是他们目前做的也有局限很难做到通用。国内目前大家都是噱头居多。很多都是在游戏引擎的基础上套一层皮。这里提一个海尔的黑灯工厂:

海尔等白色家电巨头对黑灯工厂是有一些执念的。据说海尔新的产线都要求有一定的数字化程度。海尔的黑灯工厂可以实现柔性制造、无人或者少量的人员监管、自动生产等数字孪生功能。但是依然存在很多落地的问题。
不要看产线看起来很简单,而需要仿真需要涉及的领域非常多。
- 仿真算法。CAE算法一直以来都是计算机领域的研究热点,其对数学、物理等在计算机领域的应用。CAE这一块,国内先天不足。现有很多基于游戏引擎的仿真,从算法层面就已经废了。
- 数据获取。现代工厂的流水线,都是由程控计算机负责控制。不同厂家的计算机协议不同,会导致难以做到一套解决方案接入所有。数采设备是按照一定频率采集数据,很难说采集数据能够跟实际情况完全匹配。如果能匹配,则对数采设备的要求极高。这就导致数字化中可能会失真。
- 大场景仿真。产线不是单一的数字孪生单元。产线是一整个生产上下游的一个小节点。产线的数字孪生应该需要考虑到能够仿真到足够大范围的工厂。
讨论
希望有朋友能够看到这里。让我们思考回到原来的问题:数字孪生真的有现实意义吗?
后记
本文仅作为从Unity进行工业数字孪生这一垂直领域去看待这个问题。如果内容由错误或者有其他领域的朋友对内容感兴趣,欢迎联系我,大家一起讨论。
下一篇内容将讨论产线数字孪生的仿真流程。
相关文章:
数字孪生笔记 1 工业数字孪生的意义
什么是工业数字孪生? 很多在做这个工作研究的同学最开始都想问的一个问题。到底什么才是数字孪生?我在五年前做数字孪生的时候也在思考这个问题。五年时间从数字孪生兴起,到元宇宙爆发,再到数字孪生和元宇宙没人提起,…...
013:深度学习之神经网络
本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 深度学习是机器学习中重要的一个学科分支,它的特点就在于需要构建多层且“深度”的神经网络。 人们在探索人工智能初期,就曾设想构建一个用数学方式…...
计算机网络(四)网络层
4.1、网络层概述 简介 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来,形成一个更大的互…...
【ArcGIS微课1000例】0138:ArcGIS栅格数据每个像元值转为Excel文本进行统计分析、做图表
本文讲述在ArcGIS中,以globeland30数据为例,将栅格数据每个像元值转为Excel文本,便于在Excel中进行统计分析。 文章目录 一、加载globeland30数据二、栅格转点三、像元值提取至点四、Excel打开一、加载globeland30数据 打开配套实验数据包中的0138.rar中的tif格式栅格土地覆…...
Linux 中统计进程的线程数 | 查看进程的线程
注:本文为 “Linux 线程” 相关文章合辑。 在 Linux 中统计一个进程的线程数 作者:Dan Nanni 译者: LCTT struggling | 2015-09-17 10:29 在 Linux 中一个程序在运行时会派生出多个线程。检查每个进程的线程数,有以下几种方法可…...
【深度学习 】训练过程中loss出现nan
[toc]【深度学习 】训练过程中loss出现nan 训练过程中loss出现nan 在深度学习中,loss 出现 NaN 通常是由数值不稳定或计算错误引起的。 1. 学习率过高 原因: 学习率过大可能导致权重更新幅度过大,引发数值不稳定。 解决方法: 降低学习率,…...
Linux - 什么是线程和线程的操作
线程概念 什么是线程: 线程(Thread)是操作系统能够进行运算调度的最小单位. 它被包含在进程之中, 是进程中的实际运作单位. 一个进程可以包含多个线程. 进程 : 线程 1 : n (n > 1). 进程是系统分配资源的基本单位. 线程则是系统调度的基本单位. 在…...
windows及linux 安装 Yarn 4.x 版本
1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…...
如何设计一个 RPC 框架?需要考虑哪些点?
面试官:如何设计一个 RPC 框架?需要考虑哪些点? 设计一个远程过程调用(RPC)框架是一个复杂的系统工程,涉及多个方面的考虑。一个好的 RPC 框架应具备可扩展性、灵活性、易用性和高性能。下面是设计 RPC 框…...
初学stm32 --- DAC输出三角波和正弦波
输出三角波实验简要: 1,功能描述 通过DAC1通道1(PA4)输出三角波,然后通过DS100示波器查看波形 2,关闭通道1触发(即自动) TEN1位置0 3,关闭输出缓冲 BOFF1位置1 4,使用12位右对齐模式 将数字量写入DAC_…...
开源cJson用法
cJSON cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。 cJSON项目托管在Github上,仓库地址如下: https://github.com/DaveGamble/cJSON 使用Git命令将其拉…...
【学习笔记】理解深度学习和机器学习的数学基础:数值计算
深度学习作为人工智能领域的一个重要分支,其算法的实现和优化离不开数值计算。数值计算在深度学习中扮演着至关重要的角色,它涉及到如何在计算机上高效、准确地解决数学问题。本文将介绍深度学习中数值计算的一些关键概念和挑战,以及如何应对…...
如何使用CSS让页面文本两行显示,超出省略号表示
talk is cheap, show me the code 举个栗子,如下: <span class"a">我说说<b class"b">打瞌睡党风建设打火机</b>说说色儿</span>a{display:block/inline-block;width:100px;overflow: hidden; white-spac…...
likeshop同城跑腿系统likeshop回收租赁系统likeshop多商户商城安装及小程序对接方法
前言:首先likeshop是一个开发平台,是一个独创的平台就像TP内核平台一样,你可以在这个平台上开发和衍生出很多伟大的产品,以likeshop为例,他们开发出商城系统,团购系统,外卖点餐系统,…...
C# 与 Windows API 交互的“秘密武器”:结构体和联合体
一、引言 在 C# 的编程世界里,当我们想要深入挖掘 Windows 系统的底层功能,与 Windows API 打交道时,结构体和联合体就像是两把神奇的钥匙🔑 它们能够帮助我们精准地操控数据,实现一些高级且强大的功能。就好比搭建一…...
PHP 使用 Redis
PHP 使用 Redis PHP 是一种广泛使用的服务器端编程语言,而 Redis 是一个高性能的键值对存储系统。将 PHP 与 Redis 结合使用,可以为 Web 应用程序提供快速的读写性能和丰富的数据结构。本文将详细介绍如何在 PHP 中使用 Redis,包括安装、连接、基本操作以及一些高级应用。 …...
嵌入式系统Linux实时化(四)Xenomai应用开发测试
1、Xenomai 原生API 任务管理 Xenomai 本身提供的一系列多任务调度机制,主要有以下一些函数: int rt_task_create (RT_TASK task, const char name, int stksize, int prio, intmode) ; 任务的创建;int rt_task_start(RT_TASK task, void(entry)(void cookie), void cookie…...
26个开源Agent开发框架调研总结(2)
根据Markets & Markets的预测,到2030年,AI Agent的市场规模将从2024年的50亿美元激增至470亿美元,年均复合增长率为44.8%。 Gartner预计到2028年,至少15%的日常工作决策将由AI Agent自主完成,AI Agent在企业应用中…...
Element UI与Element Plus:深度剖析
文章目录 前言一、概述二、技术特性三、设计理念四、使用体验五、迁移指南结语 前言 随着前端开发技术的快速发展,Vue.js 生态系统中的组件库也在不断进化。Element UI 和 Element Plus 是两个深受开发者喜爱的 Vue 组件库,它们分别构建于 Vue 2.x 和 V…...
二、BIO、NIO编程与直接内存、零拷贝
一、网络通信 1、什么是socket? Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口,一般由操作 系统提供。客户端连接上一个服务端,就会在客户端中产生一个 socket 接口实例,服务端每接受 一个客户端…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
