数字孪生车间机器人虚实驱动系统构建方法

刘怀兰 赵文杰 李世壮 岳 鹏 马宝瑞

华中科技大学机械科学与工程学院,武汉,430074

构建数字孪生车间是实现制造物理世界和信息世界智能互联与交互融合的一种有效途径[1],基于设备层、产线层、车间层的物理实体可实现数字孪生车间的层次化构建。工业机器人是车间物理实体设备层的重要组成元素,快速有效地实现其数字孪生虚拟实体模型的搭建,以及它在虚拟空间中的仿真运行模拟和虚实驱动同步运行,具有重要的研究价值和应用价值。

虚实驱动系统通过采集获取生产现场设备的实时数据,实现对应设备虚拟实体模型的状态驱动,使得设备对象在物理空间与虚拟空间的状态一致,因此该系统同样需要虚拟实体模型的精确构建。唐堂等[2]提出的数字孪生模型以数字化的形式对实体模型进行行为描述,支持产品设计、制造、优化等全生命周期的仿真模拟,实现生产制造全流程的闭环控制与优化。丁凯等[3]研究了虚拟实体与物理实体的映射关系建模方法、制造过程演化的建模方法、制造过程关联数据的建模方法,构建了基于数字孪生的智能制造空间模型,实现了制造车间的虚实同步运行仿真与实时动态反馈控制。ZHANG等[4]提出使用数字孪生快速进行中空玻璃生产线个性化设计的方法,通过融合系统模型、分布式实时过程数据构建整条生产线的数字孪生系统。陈黎明等[5]采用.NET技术开发的码垛机器人离线编程系统能在仿真环境中进行轨迹控制指令程序的试运行检验,并能直接控制物理空间的机器人,实现仿真系统与实际系统的同步运行。陈炜灿[6]基于机器人操作系统(robot operating system,ROS)设计了一款模块化可重用的分布式三维仿真平台,并通过KUKA的youbot移动机械臂、双目视觉、轮式足球机器人实验对所设计的平台进行了验证。WEI等[7]根据承担任务实时性的不同划分ROS节点,将非实时部分运行在Linux系统中,将实时系统部分运行在Nuttx的实时操作系统中,设计的RGMP-ROS软件框架提高了机器人运动控制的实时性。目前,数字孪生车间系统的基本组成部分已在工业生产中建立,但包括虚拟实体模型的其余部分还未有统一的构建方法。当前的虚拟实体模型构建方法缺乏通用性,数字孪生车间系统的配置非常耗时,且每次修改系统参数时都需要重新配置[8]。企业为快速适应市场变化,必须找到一种方法来缩短数字孪生车间系统的建立时间。

针对上述现状,本文首先借助数字孪生五维模型[9]中虚拟实体模型的概念,提出数字孪生车间工业机器人虚实驱动系统的模块化构建方法,结合ROS与Unity3D平台来构建工业机器人虚实驱动系统,最后以华数机器人为例进行工业机器人虚实驱动系统的验证。实例结果研究表明:系统需重新配置时,只需修改其对应功能模块的参数;
系统支持多类型的工业机器人运动仿真控制,通用性强,构建工业机器人孪生体的开发时间成本较低、难度较小。

工业机器人虚实驱动系统分为运动控制与虚拟仿真两个部分,其中,运动控制部分根据操作指令进行动作执行,虚拟仿真部分用于设备模型的可视化展示,以及人机交互指令的处理。

1.1 系统架构分层方案

工业机器人虚实驱动系统开发的目标功能为离线状态下的仿真运行预演、连接状态下的设备监控与反馈控制。因此首先根据各模块的功能,将虚拟空间分为人机交互层、动作执行层,而将物理空间划为物理设备层。

人机交互层用于虚拟工业机器人的运动控制和设备运行状态的显示,包括用户操作界面模块、三维状态显示模块。动作执行层根据控制指令进行运动执行。工业机器人的常用控制类型分为程序指令控制与手动控制,因此动作执行层根据控制类型的不同,可分为程序解析模块和控制器模块。物理设备层主要为工业机器人实体设备,包括编辑设备程序的机器人示教器,以及用于动作执行的机器人控制器。工业机器人虚实驱动系统功能分层如图1所示。系统搭建时,可根据搭建需求添加设备的几何模型功能模块,设置各功能块属性的参数,自定义搭建工业机器人虚实驱动系统的虚拟空间,实现对虚拟设备的运动控制。

图1 工业机器人虚实驱动系统功能分层

机器人虚拟模型控制器作为一个整体进行功能开发会导致代码复用性低、扩展性差。本文提出将机器人控制器的全部功能转化为相互独立节点功能耦合的开发方法。该方法将控制器模块扩展划分为状态随动模块、运动控制模块、反馈控制模块。运动控制模块根据要求的运动类型及目标点位姿参数进行轨迹插补,并输出插补计算后的关节轴转动角度。状态随动模块根据生产现场设备的实时状态数据、运动控制模块输出的关节状态数据,控制人机交互层三维模型的状态更新,实现虚拟空间中的虚拟设备模型与物理空间中的物理设备实体的虚实驱动同步运行,以及模拟仿真状态下的虚拟设备模型独立运行。反馈控制模块根据机器人的状态数据、用户的操作指令,对物理空间中的工业机器人进行运动控制。

综上,本文最终将虚实驱动系统划分为人机交互层、动作执行层,其中,人机交互层包括界面功能操作、设备模型状态显示;
动作执行层根据功能需求划分为程序解析模块、运动控制模块、状态随动模块、反馈控制模块,系统总体设计架构如图2所示。

图2 工业机器人虚实驱动系统结构

1.2 关键功能模块设计

(1)程序解析模块。用于识别用户编辑的工业机器人轨迹路径程序,获取当前命令行的控制指令信息,将解析后的目标点位姿数据、插补类型命令、动作参数传输到运动控制模块。

(2)运动控制模块。根据获取的目标位姿点数据和插补类型进行运算,并将运算后的关节角度传输到状态随动模块,实现机器人的手动控制及轨迹程序运行。图3所示为机器人指令程序数据传输流程。机器人处于虚拟仿真状态时,运动控制模块输入的指令数据由程序解析模块或用户操作界面控制按钮传输。机器人处于虚实驱动状态时,运动控制模块的输入数据为真实设备在工作空间中的位姿数据。

图3 机器人指令数据传输

(3)状态随动模块。状态随动模块根据获取的关节角度驱动仿真环境中的虚拟工业机器人运行。机器人处于虚拟仿真状态时,状态随动模块输入数据为运动控制模块或用户操作界面关节轴控制功能按钮传输的数据。机器人处于虚实驱动状态时,运动控制模块的输入数据为真实设备的关节轴角度实时数据。

(4)反馈控制模块。用于人机交互界面与物理设备控制系统间的数据通信,将相关的控制指令信息下发给实体机器人控制系统,通过操作仿真环境中的虚拟设备模型驱动机器人本体运动,便于用户对工业机器人的远程控制。

功能模块设计完成后,根据模块特点选择开发平台。程序解析模块与状态随动模块在执行过程中不参与运动学的计算,为减小机器人控制器运动过程中的资源损耗,该部分与人机交互层界面功能模块归类为虚拟仿真部分,使用Unity3D仿真引擎进行功能开发。运动控制部分主要实现工业机器人的运动学解算、轨迹插补、反馈控制,该部分功能使用ROS开发实现。

ROS是处于机器人交互应用软件和操作系统之间的抽象层工具,属于开源架构的软件生态系统,提供了多种常用的工具、库及协议,具有支持硬件的抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理等类似操作系统的功能[10]。

2.1 工业机器人模型文件描述

开发机器人运动控制功能时,首先对被控机器人进行参数化描述(包括臂杆参数、各臂杆间的相对关系),完成机械臂运动关系链的构建。本文通过创建URDF(unified robot description format)[11]文件,以模型树的结构形式记录设备模型的结构参数[12]。URDF将工业机器人各臂解释为连杆并通过tag标签中的link进行标记,记录当前连杆的形状、尺寸、颜色、惯性矩阵碰撞参数,使用tag标签中的joint标记连杆之间的关节,记录关节类型、运动限制值、关节关系等参数,如图4所示。

图4 URDF文件link与joint描述

模型文件创建完成后,导入Rviz可视化工具进行文件校验,通过控制机器人各关节轴的转动,对所设置的关节坐标系、旋转中心轴位姿等进行检测,避免轴中心偏移导致机器人运动出现偏差。

2.2 工业机器人的运动学参数配置

工业机器人模型创建完成后,添加运动学功能。本文使用MoveIt!工具集进行机器人模型的动力学特性配置及相应的运动规划仿真,通过自碰撞检测、创建虚拟关节、配置规划组、预定位姿、完善配置文件等步骤最终生成配置好的运动学参数文件包。

2.3 工业机器人的运动控制与轨迹规划

工业机器人运动控制分为轨迹规划与运动学解算。轨迹规划根据用户指定的运动方式及目标点位进行路径插补,将轨迹线条转化为一系列的中间位姿点,之后控制器驱动机器人依次到达生成的点位,按轨迹运动。运动学解算分为正向运动学和逆向运动学两种类型,其中,逆向运动学根据解算方式的不同分为数值解与解析解。

针对机器人轨迹规划功能的实现,使用ROS中支持多种运动控制功能的MoveIt!工具包。OMPL(open motion planning library)是 MoveIt!提供的开源运动规划库。运动学逆解部分,MoveIt!常用的算法有通过数值解方式计算的KDL、TRAC_IK,以及通过解析解方式计算的IKFast。MoveIt!支持的运动规划和运动学算法都通过插件的形式进行加载。此外,ROS还提供了TF工具包,用于记录设备模型间坐标系关系,支持坐标系的查看、添加以及修改功能,同时也能对位姿信息进行正逆运动学校验。

控制机器人运动时,用户通过人机交互界面调用MoveIt!中的move_group提供的API接口函数连接需要的规划组,发送运动规划请求到OMPL。move_group作为MoveIt!的核心,具有不同开发语言的控制器接口,包括用于 C++语言开发的 move_group_interface、用于 Python 语言开发的 moveit_commander等。运动请求包含用户指定的目标点位姿(关节空间或笛卡儿空间),以及当前轨迹路径中的约束条件,如位姿约束、方向约束、用户自定义约束等,通过OMPL进行规划后,生成一条到达目标点位的轨迹路径。之后,通过插补算法将运动轨迹转为连续的运动点,并通过逆向运动学解算出路径点下的机器人关节轴状态。最后,将关节角度及用户设置的运动速度、加速度等参数发送到驱动控制器进行轨迹运行,完成机器人在ROS环境中的运动控制,机器人运动学的解算流程如图5所示。

图5 机器人运动学解算

2.4 状态随动模块设计

状态随动模块通过接收关节角度的数据驱动仿真空间中的几何模型进行动作执行,创建虚拟三维模型时,需要对设备零部件的动作脚本进行编辑描述。工业机器人通过关节轴的旋转到达目标位姿点,因此编辑动作脚本时,主要描述关节轴的旋转运动。

本文在Unity3D仿真引擎中使用C+语言编辑控制脚本,开发状态随动功能模块。Unity3D仿真引擎的Transform类为用户提供了执行旋转运动的API接口。仿真环境中的虚拟工业机器人根据单轴关节的旋转角度运动,关节轴执行的旋转运动是相对于零部件模型本体坐标系的转动。本节选用Transform.localRotaton控制机器人关节轴的旋转运动,该接口使用四元数描述方法描述物体相对于父物体坐标系的旋转变换运动。状态随动模块根据控制器输入的关节轴数据驱动虚拟设备模型的运行,因此需要设定数据采集的循环时间T1。

控制虚拟机器人运动时,首先判断运动时间T2。T2≤0表示控制虚拟空间中的机器人进行初始化操作,机器人直接运动到目标位姿状态。T2>0时,将工业机器人的当前位姿标记为初始位姿,获取目标位姿状态后,使用Quaternion.Lerp函数进行旋转角度插补,控制虚拟工业机器人逐帧运动到目标位姿。为保证运动过程的准确,设置累加时间Tc进行运动时间判断,当运动累加时间Tc到达设定时间T3时,将目标位姿的旋转角度强制赋给虚拟设备,实现对工业机器人动作过姿态的校准,机器人获取关节轴数据、进行轨迹运行的功能逻辑如图6所示。

图6 机器人运动控制逻辑

2.5 程序解析模块设计

工业机器人程序指令解释器将用户输入的程序指令文本按照指定的语法规则转化为执行指令及路径点数据。根据工作流程可将程序指令解释器分解为词法分析模块、语法分析模块、中间数据结构、错误处理模块、执行机构,其工作逻辑如图7所示。

图7 工业机器人程序指令解释器工作逻辑

以工业机器人动作程序指令为例描述解释器的工作逻辑:指令解释器获取文本中的机器人程序,将指令代码以字符串的形式传输到词法分析器,检查程序指令中的单词,对无法识别的单词进行错误处理。将处理后输出的词法单元序列传输到语法分析器,进行指令语句文法检查,对不符合文法规范的指令语句进行错误处理。接着,将程序指令中存储的数据信息,按照中间数据表的数据结构分类存储。最后,由执行机构输出运动指令、相关路径点位数据、运动参数。

目前常见的指令解释器创建方式是采用FLEX词法分析器和BISON语法分析器进行开发创建。本节内容采用自定义编程方式进行功能实现,重点进行机器人运动指令及逻辑指令的解析与传输。

2.5.1词法分析

词法分析是将所输入文本字符串中的空格、换行符、程序注释等与指令含义无关的字符段剔除,生成具有特定意思标记符(token)的过程[13]。标记符可根据需求自定义所代表的含义,能代表字母、数字、符号等。源程序中,标记符对应的文本内容称为“词素”。

构建词法分析器的第一步就是定义程序中每个字母或字符串的含义,并定义标记符的数据结构。笔者定义Token类时,使用code表示词素类型,使用value表示token的值。

词法分析器的工作就是逐个匹配获取的轨迹程序与所定义的词素,该过程可采用正则表达式[14]实现,也可编写程序进行匹配。

2.5.2语法分析

语法分析就是按照指定的文法规则,对词法分析器输出的标记符序列进行语法成分识别,并检测其语法结构的正确性。语法分析器开发过程中,常使用由终结符号集合、非终结符号集合、产生式集合、开始符号组成的“上下文无关文法”进行语法规则描述[15]。开发语法分析模块功能时,首先使用扩展巴科斯(EBNF)范式描述程序指令。EBNF是一种用于“上下文无关文法”表达描述的元语法符号,常见的符号及功能解释如表1所示。实际使用时,各厂家为其生产的机器人设计相应的文本规则。

表1 EBNF范式主要符号及功能描述

根据分析流程的不同,分析语法分为自顶而下和自底向上两种方法。自顶而下的语法分析即分析过程由根节点(开始符)触发,逐步向叶节点(终止符)方向进行分析。这种语法分析方法的逻辑关系容易理解,因此本文采用该语法分析技术描述EBNF范式,完成自定义编写的语法分析器模块的实现。

2.5.3中间数据表

机器人程序指令解释器的各个模块在工作过程中需要进行多种数据的处理,因此本文根据工业机器人程序指令的特点,将指令解释器的中间数据按照点位表、指令表、参数表的形式进行功能设计。

点位表用于存储路径点的位姿数据。本文使用Dirctionary〈int,float[]〉进行数据存储,其中,int为路径点数据的存储位置,float[]以浮点数组的形式表示目标点位的位姿信息。

指令表用于存储程序中控制指令的数据结构。该类数据记录机器人的轨迹路径,但不处理路径点的信息。本文使用List〈Token〉存储数据,例如将“J”指令描述为Token{“J”,100},其中,其中100表示关键的ID。

参数表存储程序指令中相关属性参数的信息。以运动程序指令为例,数据表中的该类型数据的信息为路径点序号“P[1]”、速度参数“VEL=100”等,本文使用Dirctionary〈String,int〉存储数据。

工业机器人指令程序代码解释器在实际使用时,解释器中的执行模块按照设置的执行顺序解析中间数据表中的信息,输出相应的指令类型及点位数据,前行指令解析完成后,跳转到下一行内容,直到执行完整个轨迹程序。解析过程中出现错误时,错误信息将会传输到错误模块并显示,同时停止指令的解析任务。

2.5.4错误模块

编辑工业机器人轨迹程序时,经常会出现各种各样的问题,因此需要创建错误模块检测和处理程序指令中的错误内容。笔者根据工业机器人常见问题,将错误分为以下几种类型:

(1)词法错误,即在轨迹程序指令中出现的词法分析器不能识别的指令数据内容。

(2)语法错误,即当前位置的程序指令语句含有不符合规定文法规则的语句内容,语法分析器无法识别该指令语句的相关参数。

(3)其他错误,包括逻辑指令语句和特殊指令语句的使用错误。逻辑指令语句是指轨迹程序中用于执行逻辑判断的语句。

2.6 反馈控制功能模块设计

本文将华数机器人作为研究对象,通过厂商提供的二次开发接口获取功能模块对应的信息。在与实际机器人进行通信时,采用TCP协议与实际机器人控制器进行连接,根据机器人控制类型调用对应的二次开发接口函数。连接华数3型机器人控制器时,调用二次开发库接口中的connect(strIP,uPort)()函数,输入目标设备的IP地址及端口号完成连接关系的创建。检查通信连接的状态时,调用isConnected()函数,信息文本框会根据返回值的不同显示不同的连接状态。通信连接的工作方式如图8所示。

图8 机器人控制器通信

控制类型用于选择Unity3D中的数据传输主体。本文将控制类型分为手动控制与自动控制,其中,手动控制用于示教操作,自动控制用于程序运行。手动控制模式下,可进行关节轴控制与笛卡儿线性控制的转换,还可调节机器人运动速度,其功能逻辑如图9所示。

图9 功能逻辑图

2.7 虚实驱动系统通信方案设计

模块化的工业机器人虚实驱动系统开发需要实现不同功能模块和不同平台间的通信,本次研究模块之间的通信为ROS内部节点间的通信,不同平台间的通信采用ROSbridge功能包来实现。

ROSbridge是实现ROS系统与非ROS系统之间数据传输的功能包,其借助ROS及节点分布式通信的特点,将节点间的通信转化为client节点与代理节点间的C/S通信,使用代理节点将请求转发给server节点。ROS中的数据通过该方式转化为JSON数据进行传输。ROSbridge协议规范的核心思想是,任何支持JSON语句的平台都可通过与ROSbridge协议的对话实现与ROS的数据交互。笔者在设计方案时,使用ROSbridge协议实现ROS与Unity3D平台及实体机器人的数据传输,整体数据通信框架如图10所示。

图10 平台间的通信

仿真运行虚实驱动系统软件时,Unity3D将用户输入的运动轨迹控制指令传输到指令解释器,解析处理后,将指令中的运动方式及路径点信息传输到ROS。ROS根据获取的数据进行运动学规划解算,并将解算完成的结果通过话题的形式输出到Unity3D平台。仿真环境中的虚拟设备根据获取的数据进行动作执行,实现工业机器人的运动控制。

ROS与Unity3D平台使用ROSbridge中的WebSocket通道协议传输数据。进行WebSocket通信连线时,客户端浏览器首先发送连线请求,服务器根据接收到的请求进行回应,实现数据通道的建立。通道建立后,两者之间即可以进行信息的传输,如图11所示。

图11 WebSocket通信

ROS与Unity3D平台使用ROSbridge进行数据通信前,要在Unity3D平台安装ROSbridge功能插件。Unity3D使用C+语言进行功能开发,因此与ROS的通信需要依靠对应的软件库与工具ROS#。在Unity3D中创建节点的过程如图12所示。

图12 Unity3D节点创建

通信关系建立后,Unity3D创建的节点会在ROS的ROSmaster注册,通过rosbridge_websocket节点完成ROS与Unity3D平台节点间话题内容的数据传输。

实现虚拟控制器工业机器人模块功能时,ROS与Unity3D平台之间需要建立3个通信话题:①robot_style话题,其数据内容为机器人类型,根据机器人类型启动对应的launch文件;
②robot_control话题,其数据内容为指令类型及点位数据,根据控制指令进行机器人的路径插补及轨迹规划;
③Joint_State话题,其数据内容为机器人关节轴数据,用于驱动虚拟机器人的仿真运行;
④IK_State话题,其数据内容为机器人在笛卡尔空间中的位姿数据,用于显示机器人的状态。图13所示为机器人虚实驱动系统中ROS与Unity3D通信节点图。

图13 ROS与Unity3D通信节点图

根据对数字孪生车间中工业机器人功能的分析,抽象出不同的基础功能模块,基于数字孪生车间虚实驱动系统模块化的构建方法,建立工业机器人的虚拟实体模型,并对虚拟实体的随动功能、轨迹程序同步运行功能及反馈控制功能进行验证。

使用ROS开发机器人虚拟控制器时,工业机器人的属性参数以文件的形式存储,因此不同类型工业机器人控制器的添加通过启动对应的launch文件实现。笔者在Unity3D平台中定义的robot_style话题发布机器人的型号参数,ROS端接收到型号参数后,通过调用函数启动launch文件。

3.1 虚实驱动系统随动功能验证

工业机器人虚拟模型的随动功能模块需与创建的机器人控制器传输数据,驱动仿真空间中工业机器人虚拟模型的运行。在关节空间控制关节轴或在笛卡儿空间中基于选择的坐标系控制增量时,需要在Unity3D平台中定义robot_control话题,发布运动类型及增量值。增量值在定义过程中设为最大值,在实际使用过程中根据选择的运动倍率调整发布参数。ROS接收到运动类型及增量值后,进行运动学逆解及插补运算,将解算后的机器人关节角度通过JointState话题进行发布。Unity3D通过订阅JointState话题接收机器人数据,并将数据传输到虚拟机器人控制脚本,实现机器人的运动控制。机器人运动过程中,借助ROS的TF工具包提供的tf::transformPose()函数对机器人各坐标系在空间中的相对位姿关系进行转换,并将转换结果通过定义的IK_State话题发布。Unity3D订阅接收数据后,将坐标系相对位姿数据显示在界面中。机器人随动功能节点间关系如图14所示。

图14 机器人随动功能节点间关系

连接华数机器人控制器时,通过调用二次开发库接口的proVar.getJR()与proxyVar.getLR()函数,实时获取机器人关节轴角度及末端执行器的坐标轴数据,并将获取的数据传输到不同的功能模块进行计算。该部分功能的控制逻辑如图15所示,连接物理空间中的机器人控制器获取关节轴角度,并将其传输到状态随动模块的控制脚本,驱动仿真设备运行。

图15 轴数据获取控制逻辑

3.2 轨迹程序同步运行功能的验证

程序指令解析功能模块按照所选机器人,解析获取的轨迹指令程序,输出运动类型及目标点位姿参数。输入程序文本并解析运行后,仿真空间中的虚拟机器人按照编辑的轨迹程序指令运行,解释器检查机器人指令程序的正确性。出现错误时,机器人程序会在错误段落暂停,并在消息框中显示出错误内容,如图16所示。

图16 动作程序指令同步运行验证

3.3 反馈控制模块功能验证

与实际机器人通信时,采用TCP协议与机器人控制器进行通信,根据机器人控制类型调用对应的二次开发接口函数。添加虚拟设备模型后,通过匹配IP地址及端口连接实际机器人的控制器,选择创建的机器人连接节点并导入的仿真模型。创建的示教连接通信成功后,实际机器人的位置信息文本框会显示机器人的关节轴角度和坐标系参数。同时,操作界面会出现机器人的控制面板,机器人控制面板中的“运动类型”按钮用于关节轴的控制与笛卡儿线性控制之间的转换;
“运动倍率”按钮用于调节机器人的运动速度;
“控制类型”按钮用于 “手动模式”及“自动模式”之间的切换;
“坐标系”按钮用于工具坐标系、基坐标系、工件坐标系的创建、设置与切换,如图17所示。

图17 机器人控制面板

本文提出的工业机器人虚实驱动系统模块化的构建方法,不仅可以快速便捷地完成虚实驱动系统的构建,所构建的系统能够支持仿真状态以及同步运行状态下的机器人轨迹运行。

本文提出的工业机器人虚实驱动系统模块化的构建方法根据对工业机器人的功能分析,抽象出不同的基础功能模块,可对功能模块参数进行自定义,提高了构建数字孪生车间工业机器人虚实驱动系统的效率。

猜你喜欢 指令轨迹驱动 数据驱动世界。你得懂它 精读英语文摘(2022年4期)2022-06-05解析几何中的轨迹方程的常用求法中学生数理化(高中版.高考数学)(2022年4期)2022-05-25基于模糊PI控制的驱动防滑仿真系统分析汽车实用技术(2022年7期)2022-04-20屈宏斌:未来五年,双轮驱动,砥砺前行房地产导刊(2020年11期)2020-12-28轨迹读友·少年文学(清雅版)(2020年4期)2020-08-24轨迹读友·少年文学(清雅版)(2020年3期)2020-07-24《单一形状固定循环指令G90车外圆仿真》教案设计学校教育研究(2020年11期)2020-06-08新机研制中总装装配指令策划研究航空科学技术(2019年2期)2019-09-10深入实施创新驱动发展战略当代陕西(2019年8期)2019-05-09关于ARM+FPGA组建PLC高速指令控制器的研究科技与创新(2019年2期)2019-02-14

推荐访问:虚实 机器人 车间