1.本发明涉及自动化技术领域,尤其是一种木结构组合墙体的自动装配系统。
背景技术:2.当前,环保节能成为世界人民共同的追求,在建筑方面建筑材料多以钢筋混凝土为主,能源消耗及污染严重。木质材料来源于自然,材料环保、可持续,木质建筑本身抗震、易布局、艺术表现力强,所以市场占有率日益增高,但是传统木结构建筑墙面仍然处于单件小批量生产水平,人工规划的装配工艺产品普适性差,经常出现产品报废现象,人工装配或者装配生产线的自动化程度低。严重阻碍了墙体生产率的提高。
技术实现要素:3.本发明人针对上述问题及技术需求,提出了一种木结构组合墙体的自动装配系统,本发明的技术方案如下:
4.一种木结构组合墙体的自动装配系统,该自动装配系统包括仓储机构、上料机构、设置在上料机构末端的龙门机器人、装配工作台、若干个装配机器人和装配控制器,仓储机构中存储有木板,装配工作台在龙门机器人的操作范围内,各个装配机器人设置在装配工作台处且操作范围覆盖装配工作台,各个装配机器人的末端固定有自动射钉枪,装配控制器连接并控制仓储机构、上料机构、龙门机器人和装配机器人;
5.装配控制器的执行方法包括:
6.对待装配形成的组合墙体进行结构建模,得到由若干个木板模型搭建形成的组合墙体模型;
7.对组合墙体模型进行模型分析提取得到组合墙体模型中的各个木板模型的位姿信息,基于位姿信息检测组合墙体模型中相互贴合的木板模型;
8.按照预定打钉策略对相互贴合的木板模型在预定位置处进行打钉建模,得到在组合墙体模型的基础上添加有钉子模型的装配体模型;
9.基于装配体模型结合各个装配机器人的原点坐标进行装配序列规划得到行程最优的目标装配序列,目标装配序列指示木板的搭建顺序以及各个装配机器人的打钉顺序;
10.按照目标装配序列指示的木板的搭建顺序从仓储机构中依次提取木板并通过上料机构进行上料,控制龙门机器人将上料机构末端的木板转运至装配工作台按照装配体模型进行搭建,在搭建过程中根据装配体模型控制各个装配机器人按照目标装配序列指示的打钉顺序在对应位置通过自动射钉枪进行打钉。
11.本发明的有益技术效果是:
12.本技术公开了一种木结构组合墙体的自动装配系统,该系统可以实现对墙体的自动化分析提取装配信息、对墙体的自动打钉三维建模和数字化矩阵建模、对墙体的装配序列规划及评价、装配机器人的路径规划及离线程序生成等功能,实现了墙体装配加工工艺智能生成,进一步提高系统智能化程度,以提高墙体生产效率和生产制造水平,解放劳动
力。
附图说明
13.图1是本技术公开了一种木结构组合墙体的自动装配系统的系统架构图。
14.图2是该自动装配系统中的装配控制器的执行方法的流程图。
15.图3是装配控制器所执行的打钉建模的方法流程图。
16.图4是装配控制器所执行的得到候选装配序列的方法流程图。
17.图5是装配控制器所执行的计算行程评价函数值的方法流程图。
具体实施方式
18.下面结合附图对本发明的具体实施方式做进一步说明。
19.本技术公开了一种木结构组合墙体的自动装配系统,请参考图1,该自动装配系统包括仓储机构1、上料机构2、龙门机器人3、装配工作台4、若干个装配机器人5和装配控制器,图1以包括三个装配机器人5为例。其中,仓储机构1中存储有初始原木切割成的各种不同型号的木板。上料机构2主要包括传送带,上料机构2对仓储机构1提供的木板进行立式运料至末端。可选的,上料机构2还设置有扫码枪,木板上贴设有型号标识,则在运料过程中,通过扫码枪识别型号标识即可以确定木板的型号。
20.龙门机器人3设置在上料机构2末端处,装配工作台4在龙门机器人3的操作范围内,龙门机器人3用于对上料机构2末端的木板转运至装配工作台4,龙门机器人3主要包含三个方向直线自由度和末端的旋转自由度,其末端设置有双气缸夹爪和吸盘,双气缸夹爪用于夹持大型木板,吸盘用于吸取小型模板,因为双气缸夹爪无法夹取仅有17mm长度的木板。
21.各个装配机器人5设置在装配工作台4处且操作范围覆盖装配工作台4,装配机器人5主要包含三个方向直线自由度和末端的旋转自由度,其末端固定有自动射钉枪用于打钉。可选的,各个装配机器人5的末端还固定有排状吸盘,用于打钉装配时对木板的辅助定位,例如当多块木板贴在一起时,龙门机器人3夹爪无法夹持木板的两面进行固定,这时候便需要装配机器人5的排状吸盘对木板进行辅助定位来完成木板在打钉时的固定。可选的,龙门机器人3的末端也可以固定有自动射钉枪,可以用于当所有装配机器人5均无法打钉的情况时完成辅助打钉任务,但由于龙门机器人3行程较大,所以一般不使用龙门机器人3进行打钉。
22.该自动装配系统的各结构位置在安装完成后都固定已知,各个机器人在初始状态下都有各自已知的原点坐标,而且各个机器人都预先进行了标定,装配控制器作为该自动装配系统的核心控制结构,其连接并控制仓储机构1、上料机构2、龙门机器人3和装配机器人5。装配控制器可以通过控制各个机构的工作过程实现对木结构组合墙体的自动装配,其执行方法包括,请参考图2:
23.1、对待装配形成的组合墙体进行结构建模,得到由若干个木板模型搭建形成的组合墙体模型,这一步形成的组合墙体模型中是没有钉子的,只反映木板模型之间的相互搭建关系。
24.2、对组合墙体模型进行模型分析提取得到组合墙体模型中的各个木板模型的位
姿信息,基于位姿信息检测组合墙体模型中相互贴合的木板模型。
25.(1)提取得到的木板模型的位姿信息至少包括木板模型中各个面、边和角点的信息,主要利用solidworks二次开发中装配体点、线、面的api接口进行开发,利用solidworks的工具可以获取每一个木板模型的局部坐标和绝对坐标,还可以获取木板模型的所有面,对于木板模型的每个面,可以提取到所有的边,对于面上每条边,获取边的起始、结束向量,根据起始、结束向量可以获得角点坐标,如此可以提取得到木板模型的位姿信息。
26.(2)在提取得到各个木模板模型的位姿信息后,基于位姿信息检测组合墙体模型中相互贴合的木板模型,具体的:
27.遍历组合墙体模型中的所有木板模型,对于任意两块木板模型:根据两块木板模型的位姿信息中的面的信息计算两块木板模型之间的最短距离,当检测到两块木板模型的两个面之间的最短距离大于0时,可以确定两块木板模型之间不贴合。当检测到两块木板模型的两个面之间的最短距离为0时表示两块木板模型有重合面,但这时并不能代表相互贴合,还需要两个重合面有交集区域,以此区别于对齐关系。
28.因此根据两块木板模型的位姿信息中的边和角点的信息计算得到最短距离为0的两个面之间存在交集区域时,确定两块木板模型相互贴合且最短距离为0的两个面形成两块木板模型之间的贴合面。具体的判断交集区域可以采用现有的各种方法,比如:木板模型的重合面就是两个矩形,若两个矩形的长的和比横坐标的最大值跟最小值的差值还要小,那么可以确定两个矩形在横坐标方向就是有交集的,这里矩形的长即可以通过木板模型的位姿信息中的边的信息确定,而坐标则可以由木板模型的位姿信息中的角点的信息得到,纵坐标也可以如此确定,在本技术的应用场景下若存在贴合面则必然平行于三轴,可以分三种情况分别判断,判断机制都是如上类似的。
29.3、按照预定打钉策略对相互贴合的木板模型在预定位置处进行打钉建模,得到在组合墙体模型的基础上添加有钉子模型的装配体模型,请参考图3。
30.在确定组合墙体模型中相互贴合的木板模型后,对于任意两块相互贴合、存在贴合面的木板模型:将这两块木板模型中的所有面构成面集合,在平行情况下测量面集合中所有面与两块木板模型的贴合面之间的距离。若面集合中只存在一个面与贴合面之间的距离等于木板模型的厚度,则将其作为打钉面。若面集合中存在多个面与贴合面之间的距离等于木板模型的厚度,则将其中与贴合面位于相对于组合墙体模型的中心坐标的同一侧的面作为打钉面。在打钉面上对应于贴合面的交集区域的中心坐标处进行打钉建模。
31.在上述过中,将其中与贴合面位于相对于组合墙体模型的中心坐标的同一侧的面作为打钉面表示,若贴合面位于组合墙体模型的中心坐标的左侧,则取与贴合面之间的距离等于木板模型的厚度且位于左侧的一个面作为打钉面,反之右侧也是类似的。通过solidworks自带的测量功能可以得到组合墙体模型的中心坐标,或者,通过上述位姿信息提取过程的方法可以提取得到组合墙体模型的各个角点坐标同样可以得到组合墙体模型的中心坐标。而贴合面和其他各个面的中心坐标也可以由木板模型的位姿信息确定,通过中心坐标的比较就可以确定相对于组合墙体模型的中心坐标所在的一侧。
32.另外本技术对打钉建模的过程也进行了简化,使用中心坐标打钉的方法,而非网格化打钉的做法,可以简化钉子模型,也可以使得之后的处理过程更精简。
33.4、基于装配体模型结合各个装配机器人的原点坐标进行装配序列规划得到行程
最优的目标装配序列,目标装配序列指示木板的搭建顺序以及各个装配机器人的打钉顺序。
34.(1)首先,基于装配体模型的结构得到若干条候选装配序列,每条候选装配序列指示所有木板和钉子的装配顺序。具体的:
35.首先基于装配体模型生成紧固件连接矩阵fcm和紧固件阻挡矩阵fam:
36.紧固件连接矩阵fcm中的任意第i行第j列元素f
ij
表示装配体模型中第i个钉子模型与第j个木板模型的连接关系,当第i个钉子模型与第j个木板模型相连接时,f
ij
=1,否则f
ij
=0。得到该紧固件连接矩阵fcm的方法包括:按第一预定顺序遍历装配体模型中的所有钉子模型,按第二预定顺序遍历装配体模型中的所有木板模型,在遍历过程中,采用静态干涉检查法检查任意第i个钉子模型与第j个木板模型是否干涉,若检查结果指示干涉,则确定第i个钉子模型与第j个木板模型相连接、令对应的元素f
ij
=1,若检查结果指示不干涉,则确定第i个钉子模型与第j个木板模型不连接、令对应的元素f
ij
=0,依次遍历形成各个元素的取值得到紧固件连接矩阵。
37.紧固件阻挡矩阵fam中的任意第i行第j列元素h
ij
表示装配体模型中第i个钉子模型与第j个木板模型的贴合阻挡关系,当第i个钉子模型的端面与第j个木板模型的表面贴合时,h
ij
=1,否则h
ij
=0。与生成fcm类似,遍历所有钉子模型和木板模型检测贴合阻挡关系,检测钉子模型的端面与木板模型的表面是否的方法与上述检测两个木板模型之间是否相互贴合的方法是类似的,在此不再赘述。
38.得到的紧固件连接矩阵fcm和紧固件阻挡矩阵fam的结构是相同的,也即fcm中的第i行和fam中的第i行对应用一个钉子模型,fcm中的第j列和fam中的第j列对应用一个木板模型。
39.然后,可以根据紧固件连接矩阵fcm和紧固件阻挡矩阵fam基于拆卸法对装配体模型进行装配序列规划得到若干条候选装配序列。具体的,确定每一条候选装配序列的方法包括如下步骤,请参考图4:
40.确定候选装配序列中的第一块木板,分别将紧固件连接矩阵fcm和紧固件阻挡矩阵fam中对应于第一块木板的一列元素删除得到第一次迭代的fcm和fam。理论上可以选择任意一块木板作为第一块木板,但实际一般选取最大的一块木板作为第一块木板。
41.基于第m次迭代的紧固件连接矩阵fcm和紧固件阻挡矩阵fam进行第m次迭代循环处理,包括:
42.a、将第m次迭代的fam中的一行元素取值均为0的一个全零行对应的钉子的钉子零件号放入xulie数组中,m为参数且起始值为1。
43.b、将第m次迭代的fcm中对应于步骤a中确定的全零行的元素的取值为1、且所在列的所有元素之和为1的一列对应的木板的木板零件号放入xulie数组中。
44.c、将第m次迭代的fcm中对应于xulie数组中最后一个元素的列以及对应于xulie数组中最后第二个元素的行进行删除得到第m+1次迭代的紧固件连接矩阵,此时xulie数组中最后一个元素即为步骤b中加入的木板零件号,而最后第二个元素即为步骤a中加入的钉子零件号。
45.d、将第m次迭代的紧固件阻挡矩阵中对应于xulie数组中最后一个元素的列以及对应于xulie数组中最后第二个元素的行进行删除得到第m+1次迭代的紧固件阻挡矩阵。
46.经过第m次迭代循环处理后得到了相应的xulie数组,同时得到了第m+1次迭代的fcm和fam,若第m+1次迭代的fam的行数大于0,则令m=m+1并重复上述循环进行第m+1次迭代循环处理。若第m+1次迭代的紧固件阻挡矩阵的行数等于0,则对xulie数组取倒序得到一个候选装配序列。
47.比如,将基于装配体模型生成的fcm中对应于第一块木板的第5列删除得到第一次迭代的fcm、将基于装配体模型生成的fam中对应于第一块木板的第5列删除得到第一次迭代的fam。假设第一次迭代的fam中第一行、第8行、第10行的一行元素均为0、都是全零行,则从中选择一个全零行假设第一行,将第一行对应的钉子的钉子零件号放入xulie数组中。
48.然后检测第一次迭代的fcm中第一行的各个元素中取值为1的元素所在的列,假设第一行的第4列、第7列和第15列的元素均为1,同时第4列的所有元素之和为1、第15列的所有元素之和为1,但第7列的所有元素之和不为1。则从第4列和第15列中选择一列比如选择第4列将其对应的木板零件号放入xulie数组中。
49.此时xulie数组中对应于最后一个元素的列为第4列,对应于最后第二个元素的行为第1行,则将第一次迭代的fcm中的第1行和第4行删除得到第二次迭代的fcm,将第一次迭代的fam中的第1行和第4行删除得到第二次迭代的fam,继续循环直到fam中的行数为0。
50.该步骤对装配体模型进行装配序列规划得到的候选装配序列包括装配体模型的所有可能的装配序列,或者其中部分装配序列,一般为了保证最终得到的目标装配序列的装配效果较好,这一步会将装配体模型所有可能的装配序列都作为候选装配序列,则该步骤一般是通过循环遍历的方法来产生所有的候选装配序列的,具体的:
51.确定候选装配序列中的第一块木板,分别将紧固件连接矩阵fcm和紧固件阻挡矩阵fam中对应于第一块木板的一列元素删除得到第一次迭代的fcm和fam。确定第一次迭代的fam中所有的全零行的行号,并将各个全零行的行号各自对应的钉子的钉子零件号分别放入不同的xulie数组中。假设第一次迭代的fam中的第1行、第3行和第7行为全零行,第1行的行号id1对应的钉子零件号nail1放入xulie1中,第3行的行号id3对应的钉子零件号nail3放入xulie2中,第7行的行号id7对应的钉子零件号nail7放入xulie3中。
52.对于上述基于行号id1形成的xulie1,搜索第一次迭代的fcm中对应于id1的一行元素中取值为1的列,假设第一次迭代的fcm中第一行的第4列、第8列和第10列的元素的取值均为1。将对应于id1所在行的元素为1且整列元素的取值之和为1的列对应的木板的木板零件号分别加入id1所在的xulie1中,由xulie1中扩展形成一个或多个。比如上述确定的第4列的所有元素之和为1,第10列的所有元素之和为1,但第8列的所有元素之和不为1,则将第4列对应的木板零件号board4加入xulie1中得到一个数组为{nail1,board4},将第10列对应的木板零件号board10加入xulie1中得到另一个数组为{nail1,board10},由此xulie1数组又扩展形成两个xulie数组。
53.对于{nail1,board4}数组,从第一次迭代的fcm中删除第4列和第1行得到第二次迭代的fcm,从第一次迭代的fam中删除第4列和第1行得到第二次迭代的fam。假设第二次迭代的fam中的第1行和第11行为全零行,则分别将各个全零行的行号各自对应的钉子的钉子零件号加入{nail1,board4}数组又形成一个或多个数组,比如将此时第1行对应的钉子零件号nail2加入数组中得到{nail1,board4,nail2}数组,将第11行对应的钉子零件号nail13加入数组中得到{nail1,board4,nail12}数组,与第一次迭代循环一样,再基于现有
的数组加入木板零件号得到更多的数组,本技术不再赘述。
54.同样的,对于{nail1,board10}数组,也与{nail1,board4}数组一样进行迭代循环,由此可以得到nail1作为第一个元素的所有xulie数组。
55.对于上述基于行号id3形成的xulie2,采用与上述基于行号id1形成的xulie1一样的迭代循环方法,可以得到nail3作为第一个元素的所有xulie数组。同样的,可以得到nail7作为第一个元素的所有xulie数组。由此可以遍历得到装配体模型所有可能的装配序列、得到所有候选装配序列。
56.(2)根据各个钉子与装配机器人的预设对应关系,结合各个装配机器人的原点坐标计算所有候选装配序列的行程评价函数值,行程评价函数值基于总行程距离和机器人切换次数构建。
57.钉子与装配机器人的预设对应关系是预先确定好的,因此钉子的装配顺序实际就是装配机器人的工作顺序。装配的时候,木板在装配工作台上进行搭建和固定,各个木板的位置以及各个钉子的打钉位置都是可以获知的,因此可以求得装配机器人在打钉过程中的行程,而本技术的打钉原则是,如果打的前后两根钉子对应同一个装配机器人,此时装配机器人无需回到原点坐标,直接移动即可,但如果打的前后两根钉子对应不同的装配机器人,则需要前一个装配机器人回到原点坐标,后一点装配机器人从原点坐标出发打钉,基于这种打钉原则,对于每一条候选装配序列,计算行程评价函数值的方法如下,请参考图5所示的流程图:
58.a、初始化总行程距离和机器人切换次数为0。
59.b、计算候选装配序列中第一根钉子对应的装配机器人的原点坐标与第一根钉子的打钉位置之间的距离d1,确定总行程距离d=d1。
60.c、若第k根钉子对应的装配机器人与第k
‑
1根钉子对应的装配机器人相同,则更新总行程距离d=d+d1
k
,d1
k
是第k根钉子的打钉位置与第k
‑
1根钉子的打钉位置之间的距离,k为参数且起始值为2。
61.d、若第k根钉子对应的装配机器人与第k
‑
1根钉子对应的装配机器人不同,则更新总行程距离d=d+d2
k
+d3
k
并令机器人切换次数加1。其中,d2
k
是第k
‑
1根钉子对应的装配机器人从第k
‑
1根钉子的打钉位置回到其原点坐标的距离,d3
k
是第k根钉子对应的装配机器人的原点坐标与第k根钉子的打钉位置之间的距离。
62.e、令k=k+1并依次遍历候选装配序列中的各个钉子更新总行程距离和机器人切换次数,直到遍历完成所有钉子时,得到最后一个循环的总行程距离和机器人切换次数。此时最后一根钉子对应的装配机器人还在最后一根钉子的打钉位置处,需要控制回到其原点坐标进行复位,则在最后一个循环的总行程距离上增加最后一根钉子对应的装配机器人从最后一根钉子的打钉位置回到其原点坐标的距离更新得到最终的总行程距离。
63.f、根据最终得到的总行程距离和机器人切换次数计算得到所有候选装配序列的行程评价函数值,具体行程评价函数的构建有多种方式,总行程距离和机器人切换次数可以按照不同的权重拟合得到最终的行程评价函数值,但是总的原则是总行程距离越小、机器人切换次数越少,对应的行程评价函数值所指示的行程优劣程度表示行程更优。
64.(3)根据行程评价函数值确定行程最优的候选装配序列作为目标装配序列,该目标装配序列指示实际在进行组合墙体的自动装配过程中所采用的木板的搭建顺序以及各
个装配机器人的打钉顺序。
65.在得到目标装配序列后,还可以进行solidworks环境下动态装配演示,程序主要用到了solidworks的添加部件的api。
66.5、按照目标装配序列指示的木板的搭建顺序从仓储机构中依次提取木板并通过上料机构进行上料,控制龙门机器人将上料机构末端的木板转运至装配工作台按照装配体模型进行搭建,在搭建过程中根据装配体模型控制各个装配机器人按照目标装配序列指示的打钉顺序在对应位置通过自动射钉枪进行打钉。
67.首先将目标装配序列中第一块木板转运到装配工作台上进行固定,由此第一块木板的位置坐标等位姿信息都可以确定,然后将目标装配序列中的第二块木板转运到装配工作台处,并按照装配体模型指示的第二块木板与第一块木板的相对搭建关系将第二块木板搭建在第一块模板的相应位置,依次类推。对于目标装配序列中的钉子,按照装配体模型指示的钉子模型所在的位置可以确定其与所连接的木板之间的相对位置,由于木板在装配工作台上已经固定,因此实际打钉位置也是固定已知的,控制钉子对应的装配机器人在对应打钉位置处完成打钉即可,具体的:
68.控制目标装配序列中第一根钉子对应的装配机器人从其原点坐标处移动至第一根钉子的打钉位置处并进行打钉。
69.若目标装配序列中第r+1根钉子对应的装配机器人与第r根钉子对应的装配机器人相同,则控制第r根钉子对应的装配机器人从第r根钉子的打钉位置处移动至第r+1根钉子的打钉位置处进行打钉,其中,r为参数且起始值为1。
70.若第r+1根钉子对应的装配机器人与第r根钉子对应的装配机器人不同,则控制第r根钉子对应的装配机器人从第r根钉子的打钉位置处移动回其原点坐标处,并控制第r+1根钉子对应的装配机器人从其原点坐标处移动至第r+1根钉子的打钉位置处进行打钉。
71.令r=r+1并再次对目标装配序列中的第r+1根钉子进行打钉,直至完成装配,则再控制最后一根钉子对应的装配机器人移动回其原点坐标处。
72.其中,任意一个装配机器人在任意一次移动时,按照预定移动路径从起始位置移动至终点位置,因此首先还需要对装配机器人进行路径规划。
73.一种做法是,在无障碍条件下进行路径规划,通过提供装配机器人的改进d
‑
h参数及机器人名称、起点位置、终点位置、机器人原点坐标、插值点个数后,即可进行机器人无障碍条件下的三次样条插值法的路径规划,不仅能显示该过程的位移、速度、加速度曲线,还能用movj连接生成具有参考意义的机器人离线程序。
74.另一种做法是,在有障碍条件下进行路径规划,首先建立自动装配系统的系统环境模型,系统环境模型中包括各个机构对应的包围盒,具体的,包括aabb包围盒和/或圆柱包围盒。在需要建立aabb包围盒时,用户需要输入aabb包围盒起始点、aabb包围盒长宽高信息、包围盒rgb信息。在需要建立圆柱包围盒时,需要输入圆柱包围盒起点、圆柱包围盒终点、圆柱包围盒半径、包围盒rgb等信息。利用系统环境模型基于rrt算法进行避障路径规划,确定装配机器人从起始位置移动至终点位置的初始路径。具体的,实际还需要输入起点位置、终点位置、最大迭代次数、搜索阈值、前进步长、前2/3概率值、后1/3概率值、搜索空间、筛选最近节点权值等参数。
75.由于rrt算法得到初始路径存在“锯齿”现象,因此在得到初始路径后,利用贝塞尔
曲线对初始路径进行平滑处理,得到装配机器人从起始位置移动至终点位置的预定移动路径,即可以得到平滑的预定移动路线,并同样生成有参考意义的离线程序。
76.以上所述的仅是本技术的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。