iFactory.Godot/README.md

7.7 KiB
Raw Blame History

iFactory.Godot

基于虚实交互和数模驱动,iFactory能满足仿真(以虚映实)、控制(以虚控实)、预测(以虚预实)、优化(以虚优实)等应用服务需求,其中连接与交互是实现数字孪生动态运行和虚实空间高效融合的核心关键

基于Godot的iFactory客户端(网络服务和服务端已定义接口,预计使用KCP实现)

正在从Unity版(内网链接)一步一步移植到Godot中

该项目主要使用ECS架构,BITKit作为基本的dotnet框架

该项目为基准演示,主要通过一些场景展现该软件的所有功能

由于Godot未提供相关的编辑器功能(例如暴露可编辑的class自定义接口实例),该项目的进度并没有Unity的实现速度快

Installation 安装过程

1.首先你需要安装 Godot4.0.3 Net 👉GodotEngine.Net

2.通过Git Clone两个仓库到与该仓库相同路径的文件夹,文件结构看起来像这样:

GitHub (你的项目文件夹的上一级)

iFactory.Godot 外网仓库链接

BITKit 外网仓库链接

AGV_System 内网仓库链接

3.最后在Godot中导入iFactory.Godot

4.安装完成

Features 功能与模块

场景介绍

基于AGV小车提供的三维环境感知场景

     基于AGV小车提供的三维环境感知,可视化当前小车的环境,任务和运行路线,可演示并手动控制小车

CPS数字孪生验证场景

     由于塞昇提供的一体机没有独立显卡,该项目首先为塞昇提供低配可流畅运行的领克和嘉际模型小车装配过程验证

虚拟客机装配

     该场景主要演示在该软件的快速规划下,自定义小车,装配路线和过程,验证及演示装配客机的过程

虚拟泊车演示

     该场景主要用于验证和展示泊车AGV的调度方案,通过添加车辆(停车)和调取车辆(取车)的方式,验证泊车方案和并展示泊车过程

功能介绍

机位同步

  • 超炫酷零延迟机位同步(可能需要一些硬件支持)
  • 基于角度的Loopback算法,解决了同步角度和位置时0>1>0的值被线性插值解析为0>0.7414>0的问题
  • 基于物理PBR的三维模型,确保和现实中的设备看起来几乎一致
  • 基于Lancer.SCADA返回数据的物料同步(例如SR7C1L夹着物料多功能笔记本放进交付气缸夹)

实时数据

  • 通过Lancer.SCADA返回的数据,试试展示重要数据

生产回放

  • 录制生产时的数据,可离线播放生产过程
  • 支持数据追溯,收集和录制重要数据,可对数据进行加工、提炼和分析,找到可能存在的重要数据
  • WebGL版本支持云端回放

环境扫描

  • 基于具有环境感知的设备对现场环境进行扫描,快速还原现场外观和环境
  • 支持多个具有环境感知的设备同时对现场环境进行并行扫描

监控和摄像头接入

  • 接入网络摄像头串口摄像头
  • 支持RTSP协议,支持网络流媒体直播(例如海康RSTP)

布局规划

  • 拖放模型库/预制件到场景中,快速完成场景的基础规划
  • 选中实体并编辑数值或节点,可快速定制模型,例如
    • 自定义围墙,围栏,输送带的尺寸,如 长4096mm,宽256mm
    • 编辑贝塞尔曲线,标记AGV或其他可运动设备的路线
    • 快速替换预览设备的型号,例如将KUKA.AGV替换为Intelli.AGV

方案展示

基于布局规划的方案展示场景,向用户展示方案的设计,过程与验证结果

虚实联动

  • 手动控制AGV机械臂等设备
  • 已支持Lancer.AGV可手动控制小车移动

多终端实时同步场景

  • PC客户端进行布局规划,Mixed Reality客户端(例如AR)可直接在现场看到设备规划的位置和生产路线
  • 虚拟化生产过程,用户可通过手机AR或者AR眼睛在现场预览生产过程并对过程进行评估
    • AGV夹起物料放入装配单元
    • AGV装配单元提供物料
    • 装配单元进行虚拟化装配
    • AGV装配单元取走产品,并放入交付单元
  • 所有客户端可对现实坐标进行标记(文字消息 图像消息)
    • 标记需要改进的工序或移动的位置
    • 标记用户希望的生产路线

数据查询

  • 可快速查询数据库和记录,例如工单数据和异常记录
  • 开发者模式下,可通过自定义数据库查询语句

智能诊断

  • 基于Lancer.SCADA提供的数据,自动分析重要数据的值并返回异常和诊断数据
  • 可通过WebApi接口下发异常
  • 接入微信E-Mail异常 诊断报告等日常维护数据将自动推送给相关人员
    • 微信将通过公众号推送工单的方式推送数据
    • E-Mail通过自建邮箱服务器推送数据
  • 智能诊断建议
    • 在无法自动解决异常时,分析并提供相关的操作建议和解决方式建议
    • 异常解决后,可快速输入异常解决方式,当异常再次发生时,可快速自动解决或快速提供建议

功能清单

以下的大多数功能都正在从Unity移植到Godot

  • 基于Lancer.SCADA的基本数据请求服务WebApi/GetInfos——请求json,处理json嵌套,向内部提交数据
  • 基于Lancer.SCADA的基本的角度和位置同步
  • 基于AI算法的零延迟同步
  • 基于硬件本身的api提供的零延迟同步
  • 基于Lancer.SCADA的装配过程同步
  • 基于ObjectMatcher的装配过程同步——Lancer.SCADA没有提供的数据,通过匹配关键词的方式对数据进行分析和匹配,计算出当前的物料情况
  • ObjectMatcher——关键词匹配引擎,通过分析数据,得到对应的最接近的结果
  • 全平台通用网络通讯接口(基于KCP的基本网络服务)NetProvider NetClient NetServer
  • 基于Camera3D的虚拟相机服务观察场景 例如移动视角 拖动视角 缩放视角 保存与加载预设视角
  • Android支持
  • WebGL 支持
  • 依赖注入——已接入Microsoft.Extension.DependencyInjection
  • 数据库支持——通过EntityFrameworkCore接入数据库
  • 离线回放——录制Lancer.SCADA返回的数据,
  • 在线回放——基于WebDAB同步云端的录制数据
  • 场景编辑器——拖动预制件到场景中,完成组合场景,可用于对现场规划进行三维浏览和布局评估
  • 网络场景——多个平台和客户端同步场景例如在PC上更改场景Mixed Reality中可实时看到场景的更改
  • 自诊断服务——通过解析数据,找到空值null的数据并向指定接口(例如微信推送 数据库日志)提交异常
  • 微信推送服务——完成申请微信公众号后接入
  • E-Mail推送服务——通过宝塔邮局推送
  • 文件打包服务——保存生产回放和其他数据,都是通过该服务进行读取和写入的
  • 环境扫描——通过对现场环境进行三维扫描和重建,得到最接近和还原的三维场景
  • 基于HTML或类HTML的用户界面框架——统一技术栈,使用html编写用户界面,例如HtmlUnity.UI Toolkit的关系

Getting Started 使用指南

所有注释和指南都包括在代码中,用例正在编写中