基于数据驱动实现拆装任务的快速配置
在虚拟装配系统的开发过程中,经常遇到任务需求同质化。如果以硬编码的形式将这些同质化的拆装任务进行开发,那么对每一个任务都需要进行定制开发。为了提高开发工作效率,将拆装任务的共性提取出来,并将之数据化,从而解决通用性问题。
拆装任务的共性包括:
(1)任务要素:描述该操作步骤在装配任务中的信息,包括该步骤的索引号、前继索引序列、后继索引序列。
(2)辅助要素:描述操作运动发生前的准备要素,包括所操作的零部件、所用工具。
(3)动作要素:描述装配操作的各个动作参数,包括操作类型和所需参数等。常见的装配操作动作要素类型包括隐藏、显示、触碰、旋转和移动。
1、任务组织
拆装任务由操作步骤节点组织而成,组织形式可以是线性表、也可以是AOV网。线性表适用于训练场景,用户在提示下随着专家配置的最佳拆装序列进行拆装,强化用户的学习记忆。AOV网适用于考核场景,在没有提示的情况下,用户需要在任意的拓扑拆卸序列中,找出最佳的拆卸序列。示例如图1.
图1 基于线性表和AOV网的步骤组织形式
2、实体要素
在拆装任务中,我们需要清楚一些拆装步骤的对象实体,例如,当前拆装步骤所拆装的零件、拆装该零件需要什么工具、零件需要移动到的位置或角度和步骤指引等等。这些实体要素将静态地保存在节点当中。
3、动作要素
拆装的动作类型主要分为移动,平移,自转,公转的动作,这些动作的形容对象均为相应操作实体,即所需拆装的零件。
每种拆卸动作有不同的动作参数,例如
移动的参数是目标位置;
平移的参数是方向与距离;
自转的参数是自转轴和角度;
公转的参数是公转轴和角度。
简易示例如下:
switch (actionType) { case MoveTo: MoveTo(posiston);//移动(位置) break; case Translation: Translation(vector, distance);//平移(方向,距离) break; case Rotation: Rotation(axis, angle);//自转(自转轴,角度) break; case Revolution: Revolution(axis, angle);//公转(公转轴,角度) break; }