[0023] 本发明包括三个子任务,下面结合附图和实施例对本发明作进一步说明。
[0024] 图1为本发明总体模型结构示意图。
[0025] 本发明方法分为三个衔接的子任务,具体步骤如下:
[0026] 任务1.识别目标物体
[0027] 步骤(1)、对输入的语言指令和环境图像进行预处理。所述的预处理包括使用带有LSTM的Bi-RNN提取语言指令的语言特征和使用F-RCNN预处理环境图像,从而获得目标候选区域特征。具体步骤如下:
[0028] 1.1指令编码:将i个单词组成的指令Ii={x1,x2,x3,…,xi}输入RNN网络。通过带有LSTM的Bi-RNN对语言指令进行编码,递归生成隐藏状态序列Ii,然后通过学习函数ψxxi将指令映射到固定维度。
[0029] Ii=Bi_LSTM(ψx(xi),Ii-1) (1)
[0030]
[0031] 表示指令均值,Ii是指令 的词嵌入表示。
[0032] 1.2环境编码:使用F-RCNN对环境图像进行预处理,得到全连接层获取图像候选区域特征:
[0033]
[0034] 表示前m个检测框的d维视觉嵌入表示。 是每个物体的空间和性状的特征表示,WB和a分别是物体的权重和偏差值参数。
[0035] 通过一个全连接层和一个一维卷积层分别将V和I映射到相同维度:
[0036] V=relu(CONV1d(Vm)) (4)
[0037] I=relu(LINEAR(Ii)) (5)
[0038] 其中V∈Rm×d是m个对象V={V1,V2,…,Vm}的集合。I∈Rd是指令的特征。
[0039] 步骤(2)、识别语言指令指定的物体。如何正确将指令和环境物体匹配,以及如何从相似的环境物体中选取确定的物体,这提高识别精度的关键。本发明采用对齐匹配算法解决语言和物体匹配问题,另外使用多注意力机制提高机器视觉精度。具体过程如下:
[0040] 提出一个新的多注意力机制处理过程:由Word-Object,Object-Instruction和Object-Object三个注意力联合。使用多注意力机制衡量语言指令与每个环境中物体的匹配概率,即预测环境中每个物体的可能性。通过注意力模块 匹配物体和语言指令,然后使用Softmax函数归一化获得条件分布P,由 指令确定的目标物体分布概率。
[0041]
[0042] 是源目标物体的离散表示。
[0043] 预测源目标物体的损失函数是条件分布概率 和物体在环境中的真实位置G(E)的交叉熵,本发明使用Adam优化器对损失函数进行调优。
[0044]
[0045] 多步注意力机制流程如下:
[0046] 2.1Object-Object:首先将步骤(1)F-RCNN抽取的图像候选区域特征计算差值,生成O-O关系注意力机制矩阵:
[0047] AWp=Wf×p(Vi-Vj) (8)
[0048] Vi,Vj已在上文中定义,(Vi-Vj)是m×m的矩阵,表示第i个目标物体与第j个物体图像特征表示的差异。Wf是训练的注意力矩阵,表示执行n次后的关系注意力矩阵。
[0049] 2.2Word-Object:
[0050] 使用对齐算法计算语言指令中每个单词xi每个时态的隐藏单元输出ht,从而表示xi与环境中每个物体m的匹配分数score:
[0051]
[0052] 全局向量 是目标物体bm的权重之和:
[0053]
[0054] 2.3Object-instruction:将所有目标物体与O-O关系注意力矩阵AWp相乘,在全局自然语言向量 的引导下,计算全局向量和目标物体的嵌入特征矩阵。
[0055]
[0056] 步骤(3):训练多注意力机制模型,将结果归一化得到目标物体的概率分布,确定目标物体的位置(Source)。
[0057] 任务2:预测目标放置的位置
[0058] 步骤(4)、再次使用多注意力机制模型,预测参照物位置并结合语言指令特征。通过蒙特卡洛算法(MCMC)预测目标物体将要被放置的位置,输出坐标。
[0059] 将预测过程分解为两个子过程:参照物识别(Reference)和偏移(Offset),具体过程如下:
[0060] 4.1 Reference(R):预测参照物位置的方法与步骤(3)预测目标物体位置相同,所以使用步骤(3)中相同的方法计算参照物位置的概率:
[0061]
[0062] bm为环境中m个对象, 为当前环境下的注意力矩阵
[0063] 4.2Offset(O):根据语言指令特征对偏移量O(真实目标位置和预测位置的差值)进行建模,假定语言指令特征服从高斯分布,采用固定协方差的多维高斯分布拟合指令,从而预测偏移量O。
[0064] P(O=o|I)∝N(μo,∑o) (13)
[0065] μo=W1σ(W2hfc6+b1)+b2 (14)
[0066] hfch是F-RCNN的倒数第二个全连接层,μo是由全连接层和指令特征生成的高斯分布的中心(物体坐标(x,y,z))。b1,b2是偏置参数,W1,W2分别是指令和物体的权重矩阵。
[0067] 4.3预测目标位置:将目标位置定义为T=Offset+Reference,采用蒙特卡洛采样(MCMC)法确定物体放置点的坐标。
[0068] 对reference和offset进行分布采样,用一组 的序列表示采样样本集合,tn是由 预测的位置。
[0069]
[0070]
[0071]
[0072] 将tGi-tn真实位置与预测位置的距离作为负奖励,采用Reinforce Learning思想,通过蒙特卡罗方法拟合N个随机变量 的采样序列样本。具体方法如下:
[0073]
[0074] 通过蒙特卡洛方法拟合确认指令所指定物体在环境中的放置点,并输出放置点坐标(x,y,z)。
[0075] 任务3.生成机器人代码
[0076] 步骤(5)、构建可编程控制器约束的数据库(PLC约束库)和CoBlox模块化编程。
[0077] 5.1 PLC约束库:实际生产环境中,机器人任务会受到PLC信号的约束。根据实际情况选择合适的PLC约束作为PLC约束库。PLC是一种可以与机器人交互并约束机器人行为的可编程控制器,由PLC工程师编写和定义。目前各生产机械臂厂家没有统一的PLC信号规定,存在机器同一个信号在编程平台中存在多种表示的问题。针对目前各家厂商规定不统一的问题,本实施例采用ABB码垛机器人的PLC信号表格(部分见附图2)。
[0078] 5.2 CoBlox模块化编程:采用CoBlox模块化编程的方式封装带有默认参数的函数体。例如Moveto表示命令机械臂移动到固定位置,神经网络预测机械臂抓取的目标和放置位置()以代替原始手动输入的位置参数,将分配默认参数并允许程序员手动更改;SET则由分词工具截取PLC字段映射到相应信号。
[0079] 步骤(6)、采用StanfordNLP工具解析语言指令,在PLC约束库中匹配分词与PLC信号,随后采用BM25算法组合匹配CoBlox模块化编程,自动生成机器人程序框架。最后结合步骤(4)预测的目标位置坐标即放置点坐标,填充到机器人程序中,生成完整的机器人代码。(任务流程见附图3)
[0080] 本发明由工程师控制,允许语音和文本输入机器人任务指令,并且直接在终端输出任务执行代码,中间过程不可见。这种代码生成方法不仅支持灵活的输入方式,还采用模块化编程方法在简化编程任务的同时也能约束工程师编程行为,提高编程规范性。(任务流程见附图4)。