2. 杭州新松机器人自动化有限公司, 浙江 杭州 311200
2. Hangzhou SIASUN Robot and Automation Co. LTD, Hangzhou 311200, China
工业机器人的早期应用主要涉及工件搬运、点焊、装配等简单任务.随着机器人及软件编程技术的进步, 目前已能实现复杂的空间轨迹运动, 完成喷涂[1]、零件加工[3]、相贯管焊接[3]等复杂任务, 其中, 切削加工(包括抛光、制孔、铣削等)尤具代表性.根据美国机器人工业联合会2009年发布的数据, 机器人在切削加工中的应用不足5%[4], 但由于成本低、工作空间大、配置灵活[5-6], 近年来逐渐成为研究热点.
三维头像雕刻是一个典型的铣削过程.在为数众多的加工方法中, 往复式行切[7]由于刀具负荷均匀, 是迄今为止最为常用的加工方式;环切[8]对外轮廓具有较好的适应性, 但由于计算复杂, 使用频率次之;空间填充曲线刀轨属于加工方法中的另类, 虽仍有相关研究[9], 但由于拐角过多, 很少使用;螺旋形刀轨适用于高速铣削, 目前尚处于研究阶段[10].其次, 零件表面质量与加工效率同刀轨步距息息相关.常用的步距优化方法主要有等参数线法、等截面法、等残留高度法等.其中, 等参数线法适用于uv参数表示的单张曲面, 等截面法还可用于网格曲面, 等残留高度法规划的刀轨残留高度均匀, 加工效率较高.Lasemi等[11]对这些方法作了详细的评述.
本文采用三角网切片算法获得刀具轨迹, 并在曲面上实施往复式行切.现有的加工方法多为浅层加工[12-13], 未考虑刀具夹头与工件之间可能发生的干涉, 这是本文需要着重解决的问题.
1 头像表面信息提取如图 1所示为STL(Stereolithography, 光固化立体造型术)格式的3D头像, 从左到右依次为线框模型及其渲染结果.STL文件由一系列无序排列的三角面片构成, 每个面片包含3个顶点及面的法向信息.
![]() |
图 1 光固化立体造型术(STL)格式的三维头像模型 Fig. 1 3D head model of Stereolithography (STL) format |
为获得头像表面的加工点位以及点附近的局部凸凹信息, 需要对三角网求解水平切片及径向切片.现有的切片方法主要分为两大类:一类是已知截面, 搜索与之相交的三角形, 可通过坐标分组减少相交判断的次数, 亦可建立模型的拓扑信息, 通过三角形之间的邻接关系确定相交三角形[14-15], 这类方法计算量大且耗费系统资源;另一类是已知三角形, 搜索与之相交的平面, 求出交点后, 通过一定的方法将交点连接起来[16-17], 该方法适用于需要密集分层的情况, 本文予以采用, 并借鉴文献[17]的求解思路.
1.1 水平切片以图 2为例, 顶点A~H构成四棱柱.其中4个侧面被分割成8个三角形, 与平面M相交得到8个交点CAE, CBE, …, CDE.对每个三角形, 分别记录左侧交点及左、右交线(沿面片法矢反向看).如表 1所示, 相邻2个三角形具有相同且唯一的公共边, 因此, 一个三角形的左交点与右侧哪个三角形的左交点相连是唯一确定的.
![]() |
图 2 平面与三角网格的截交线 Fig. 2 Intersection line between plane and triangular mesh |
![]() |
表 1 平面与三角网格的交点信息 Table 1 Information of intersection points between plane and triangular mesh |
为确定交点及相交边信息, 引入线性代数中的逆序数.如图 3所示, 令smin、smed、smax分别为三角形最低、中间、最高点在顶点数组中的序号, 当smin, smed, smax为偶排列时(0, 1, 2或1, 2, 0或2, 0, 1, 参见图 3中三角形t1), 左交点在smin-smax连线上, smin-smax同时还是左相交边.右相交边可能为smed-smax连线或smin-smed连线, 取决于截面相对于smed顶点的位置.反之, 当smin, smed, smax为奇排列时(0, 2, 1或1, 0, 2或2, 1, 0, 见图 3中三角形t2), 左交点可能在smed-smax连线上, 也可能在smin-smed连线上, 取决于截面的位置, 但右相交边一定是smin-smax连线.当smed等于smax时(见图 3中三角形t3的上侧水平边), 令smed=(smin+1)%3, smax=(smin+2)%3;当smed等于smin时(见图 3中三角形t4的下侧水平边), 令smin=(smax+1)%3, smed=(smax+2)%3.
![]() |
图 3 三角形顶点编号, 左、右相交边确定及左交点计算 Fig. 3 Triangular vertex numbering, left and right intersection edge determination and left intersection point calculation |
此外, 还需要处理一些特殊情况.当截交线过三角形中间顶点时, 如图 4中的△BDE, 规定交点B在边DB而非边BE上;当截交线过三角形下方顶点时, 如图 4中△BEC和△EGI, 认为没有交点;当截交线过三角形上方顶点时, 如图 4中△ADB, 认为交点在边AB而非边DB上;当截交线与三角形的一条边重合时, 若三角形的另一顶点在截交线上方, 认为没有交点, 如图 4中的△GHI;反之, 若另一顶点在截交线下方, 认为交点在左相交边上而不是水平线上, 如图 4中的△FHG.
![]() |
图 4 截交线过三角形顶点时交点的选取 Fig. 4 Intersection point selection as intersection line collinear with vertexes of triangle |
实际求解时, 采用双层链表结构, 如图 5所示.对每个三角面片, 首先确定与之相交的平面.对每个平面, 分别求出左交点, 并记录左、右相交边及面的法向, 形成节点信息, 插入交点链表IntersectionNode, 同时在环链表中建立新节点, 使其InterNode指针指向刚建立的交点链表首元素.如果已存在至少一个交点链表并再次插入新节点, 1) 若新节点的右相交边与某个交点链表首节点的左相交边重合, 则将新节点插入该交点链表头部, 成为新的首节点;2) 若新节点的左相交边与某个交点链表末节点的右相交边重合, 则把新节点插入该交点链表尾部, 成为新的末节点;3) 若1)、2) 同时发生, 且匹配到同一个交点链表, 说明链表构成了闭环, 只需要插入新节点1次;4) 若1)、2) 同时发生, 但匹配到的交点链表不同, 则插入新节点一次, 同时合并两交点链表;5) 若1)、2) 均未发生, 则创建新的交点链表, 并将新节点作为链表首元素, 与此同时, 在环链表中创建新节点, 使其InterNode指针指向新建交点链表的首元素.
![]() |
图 5 用于顺序连接交点以获得水平截交线的双层链表 Fig. 5 Double linked list to sequentially connect intersection points so as to get horizontal intersection line |
对所有面片执行以上操作后, 每个交点链表各存储了一条封闭截交线.当截交线只有一条时, 环链表最终只有一个元素.
1.2 径向切片径向切片的特点是, 所有截交面经过同一交线, 即头像包容圆柱的轴线.假设该轴线平行于z轴, 若将构成头像的空间点集沿z轴向xy平面投影, 则轴线退化为一点, 即投影点集最小包容圆圆心, 其求解方法参见文献[18].轴线确定后, 就可求解径向切片.如图 6所示, 在过z轴的等角度平面簇中, 假设仅M1、M2两个平面与△ABC相交, 设M1平面的单位法矢为n1, 则A、B、C三点在n1方向上的投影坐标分别为
![]() |
图 6 径向平面与三角网的截交线 Fig. 6 Intersection line between radial plane and triangular mesh |
${a_1} = \overline {OA} \cdot {\mathit{\boldsymbol{n}}_1},{b_1} = \overline {OB} \cdot {\mathit{\boldsymbol{n}}_1},{c_1} = \overline {OC} \cdot {\mathit{\boldsymbol{n}}_1}.$ | (1) |
比较a1、b1、c1的大小, 确定smin、smed、smax对应的顶点序号.余下的求解步骤同1.1节中的水平切片.值得一提的是, 径向平面簇中各平面方位角的取值范围为[0, π), 因方位角为α和α+π的2个点在同一径向面上.如图 7所示为30个径向切面的求交结果, 相邻两个切面的夹角为6°.
![]() |
图 7 过头像轴线的径向面与三角网求交 Fig. 7 Intersection between radial plane (which go through axis of head portrait) and triangular mesh |
在加工过程中, 若刀具轴线沿面的法向, 微小的皱褶会引起机器人关节的剧烈变化, 甚至发生干涉.为确保运动平稳, 令刀具坐标系的a轴(刀具轴线方向)沿水平面指向模型轴线, 将a轴在水平面内沿顺时针旋转90°, 得到n轴, o轴通过右手定则确定.
当刀具较短而切入较深时, 刀具夹头与工件可能发生干涉, 以图 8为例, 判断干涉的方法如下:在离刀触点P最近的纵向截交线上, 找到z坐标比夹头上部特征点K1略大的点P1、比夹头下部特征点K2略小的点P2, 从点P、P1、P2分别向模型轴线作垂线得垂足H、H1、H2.当点K1在纵向轮廓PP1及H1H构成的多边形内时, 说明上方存在干涉, 需要将刀具绕点P沿顺时针旋转.同理, 当点K2在纵向轮廓P2P及HH2构成的多边形内时, 表明下方存在干涉, 需将刀具绕点P沿逆时针旋转.
![]() |
图 8 径向平面内生发干涉时的刀具姿态调整 Fig. 8 Tool orientation adjustment when interference occur in the radial plane |
所需旋转角度按以下方法确定:以点为圆心、PK1为半径作圆弧, 与点P、P1之间的纵向轮廓交于点K, ∠K1PK为待求的调整角, 如图 9所示.由于纵向截交面在360°范围内, 刀具坐标系坐标矢量的旋转可借助通用旋转公式[19]:
![]() |
图 9 姿态调整角的确定 Fig. 9 Determination of orientation adjust angle |
$\begin{array}{l} {\rm{Rot}}(\mathit{\boldsymbol{f}},{\alpha _1}) = \\ \left[ {\begin{array}{*{20}{c}} {{f_x}{f_x}\overline {{c_1}} + {c_1}} & {{f_x}{f_y}\overline {{c_1}} - {f_z}{s_1}} & {{f_x}{f_z}\overline {{c_1}} + {f_y}{s_1}} & 0\\ {{f_y}{f_x}\overline {{c_1}} + {f_z}{s_1}} & {{f_y}{f_y}\overline {{c_1}} + {c_1}} & {{f_y}{f_z}\overline {{c_1}} - {f_x}{s_1}} & 0\\ {{f_z}{f_x}\overline {{c_1}} - {f_y}{s_1}} & {{f_z}{f_y}\overline {{c_1}} + {f_x}{s_1}} & {{f_z}{f_z}\overline {{c_1}} + {c_1}} & 0\\ 0 & 0 & 0 & 1 \end{array}} \right]. \end{array}$ | (2) |
其中, f=(fx, fy, fz)为旋转轴单位矢量, 即△PK1K法向.
此外, 当已加工区域与未加工区域之间的过渡台肩大于刀具伸出长度时, 刀具的夹持部分亦可能与工件发生干涉, 如图 10所示.其中, K1处发生干涉的条件为
![]() |
图 10 加工分界面发生干涉时的刀具姿态调整 Fig. 10 Tool orientation adjustment when interference occur between cut and uncut regions |
$\left. {\begin{array}{*{20}{l}} {O{K_1} < R,}\\ {\left| {\mathit{\boldsymbol{O}}{\mathit{\boldsymbol{K}}_1} \times \mathit{\boldsymbol{O}}{\mathit{\boldsymbol{L}}_1}} \right| > 0.} \end{array}} \right\}$ | (3) |
式中:R为毛坯包容圆柱半径, 点L1位于加工起始线上, PL1=PK1, 其坐标通过直线与圆求交获得.点K1的坐标为
$\left. {\begin{array}{*{20}{l}} {{x_{{K_1}}} = {x_P} + l{\rm{cos}}{\theta _P} + r{\rm{cos}}({\theta _P} - \pi /2),}\\ {{y_{{K_1}}} = {y_P} + l{\rm{sin}}{\theta _P} + r{\rm{sin}}({\theta _P} - \pi /2).} \end{array}} \right\}$ | (4) |
式中:r为夹头半径, l为刀具伸出夹头的长度, P为当前加工点.
为避免干涉, 需要令刀具以点P为基点, 沿逆时针旋转至少一个锐角∠L1PK1.点K2处的干涉判断及刀具姿态调整类似, 不再赘述.
3 曲线偏置受刀具单次进给深度的限制, 需要分多道完成头像加工, 为此需要对截交线进行曲线偏置.曲线偏置包括点沿外角平分线偏置、轮廓边平行偏置、滚动球方法等, 其难点主要是避免偏置曲线的自相交.从稳定性考虑, 本文采用Clipper函数库完成这一功能,其原理为平面区域的布尔运算及环绕数[17].
如图 11(a)所示为为3D头像及其包容圆柱的一个水平截交面.其中, 剖面线代表需要去除材料的区域.从内环往外均匀偏置, 当偏置曲线上的所有点均在包容圆之外时, 停止偏置, 结果如图 11(b)所示.作为实例, 本文仅雕刻头像的正面, 如图 11(c)所示.对于包容圆之外的点, 沿圆的径向映射到圆周上, 结果如图 11(d)所示.
![]() |
图 11 三维头像水平截交线的偏置与分割以及包容圆之外的点的映射 Fig. 11 Offset and segment of 3D head portrait's horizontal intersection line and mapping of point outside inscribed circle |
曲线偏置之后, 纵向信息需要重新获取.简单起见, 这里用径向平面与水平截交线的交线代替, 其实质是截面内射线与多边形求交.求出各层交点后, 将具有相同方位角的交点连接即得到纵向轮廓, 如图 12所示.区别于径向切片, 模型顶部和底部出现信息缺失, 但不影响加工.
![]() |
图 12 过头像轴线的径向面与水平截交线求交 Fig. 12 Intersection between radial plane (which go throuth axis of head portrait) and horizontal intersection line |
程序编写过程中难免出现错误, 通过仿真可以及时发现并改进.本文以新松SR6C型工业机器人为实验平台, 其参数模型如图 13所示.
![]() |
图 13 新松SR6C型工业机器人的参数模型 Fig. 13 Parametric model of SIASUN SR6C type industrial robot |
利用VC++与OpenGL图形引擎建立了机器人仿真平台,其程序界面如图 14所示.
![]() |
图 14 三维头像雕刻仿真界面 Fig. 14 Simulation interface for 3D head portrait sculpture |
如图 15(a)~(e)所示为自外而内分多道加工的模拟结果.由于模型头顶与颈部的偏置次数较多, 因此优先加工, 加工过程自顶向下.当所加工的上、下层截面线相邻时, 采用Zigzag往复式路线, 否则, 需要先沿刀具轴向退刀, 跳转到合适的位置后再进刀, 图 14(a)~(e)两侧的竖线即跳刀轨迹.最后一道精加工自底向上, 中间不涉及跳刀, 模拟结果如图 14(f)所示.
![]() |
图 15 三维头像雕刻模拟结果 Fig. 15 Simulation results of 3D head portrait sculpture |
如图 16所示为图 14(f)精加工前300个点所对应的6个关节转角的变化曲线(第1点从图 14(f)左下方开始).由图可见, 关节角度连续变化, 不存在突变.
![]() |
图 16 精加工(图 14(f))前300个点的关节角度变化 Fig. 16 Joint angles for the beginning 300 points in fig. 14(f) |
为验证算法的可行性, 利用新松SR6C型工业机器人进行了实际加工验证.实验毛坯采用圆柱形石膏, 其标准尺寸为Φ100 mm×220 mm, 安装定位后, 通过标定求得顶圆圆心(825.64, 205.77, 451.95), 半径51.84 mm, 通过平移、缩放将头像变换到毛坯所在位置, 此时, 虚拟头像的高度变为143.14 mm, 小于毛坯高度(220 mm).实验采用直径为Φ2 mm的球头刀, 粗、精加工层数分别为85和300层, 轴向进给深度为5 mm, 最终实验结果如图 17所示.
![]() |
图 17 工业机器人三维头像雕刻结果 Fig. 17 3D head portrait sculpture result by industrial robot |
由图可知, 加工结果较好地反映了虚拟模型, 但局部区域仍不够光顺, 其主要原因是截交线在偏置前利用Douglas-Peucker算法进行了简化, 去掉了其中部分点;其次, 模型表示及切片算法本身存在误差.此外, 图 17中的孔洞来自毛坯制造缺陷.
6 结语通过求解水平及径向切片, 获得了模型表面的局部凸凹信息, 将此信息用于刀具夹头碰撞检测, 有效避免了干涉的发生.其次, 针对刀具有效切割长度小于轴向切入深度的情况, 对截交线进行了偏置, 并分多个道次加工, 每个道次采用Zigzag路线, 且偏置次数大的路线优先加工.与此同时, 利用VC++及OpenGL建立了新松SR6C型工业机器人的仿真平台, 对三维头像的雕刻过程进行了仿真, 最后通过实验证实了所生成离线轨迹的正确性.
本系统目前无法处理单一截面含多个封闭环的情形, 如:人体躯干与左、右上肢以及撑开的双腿等, 这些部位的截交线均含有多个环, 需要在后期研究中更加深入的讨论.
[1] | DENG S H, CAI Z H, FANG D D. Application of robot offline programming in thermal spraying[J]. Surface and Coatings Technology, 2012, 206(19/20): 3875–3882. |
[2] | SLAMANI M, GAUTHIER S, CHATELAIN J F. A study of the combined effects of machining parameters on cutting force components during high speed robotic trimming of CFRPs[J]. Measurement, 2015, 59: 268–283. DOI:10.1016/j.measurement.2014.09.052 |
[3] | SHI L, TIAN X C, ZHANG C H. Automatic programming for industrial robot to weld intersecting pipes[J]. The International Journal of Advanced Manufacturing Technology, 2015, 81(9): 2099–2107. |
[4] | Robotic Industries Association. New advances in robotic machining white paper [R/OL]. (2009-1-22) [2016-05-25]. http://www.robotics.org/content-detail.cfm?content_id=1254. |
[5] | CHEN Y H, DONG F H. Robot machining: recent development and future research issues[J]. The International Journal of Advanced Manufacturing Technology, 2013, 66(9): 1489–1497. |
[6] | IGLESIAS I, SEBASTIAN M A, ARES J E. Overview of the state of robotic machining: current situation and future potential[J]. Procedia Engineering, 2015, 132: 911–917. DOI:10.1016/j.proeng.2015.12.577 |
[7] | KIM B H, CHOI B K. Machining efficiency comparison direction-parallel tool path with contour-parallel tool path[J]. Computer-Aided Design, 2002, 34(2): 89–95. DOI:10.1016/S0010-4485(00)00139-1 |
[8] | PARK S C, CHUNG Y C, CHOI B K. Contour-parallel offset machining without tool-retractions[J]. Computer-Aided Design, 2003, 35(9): 841–849. DOI:10.1016/S0010-4485(02)00111-2 |
[9] | LIN Z W, FU J Z, SHEN H Y, et al. Tool path generation for multi-axis freeform surface finishing with LKH TSP solver[J]. Computer-Aided Design, 2015, 69: 51–61. DOI:10.1016/j.cad.2015.07.002 |
[10] | ZHOU B, ZHAO J B, LI L, et al. CNC double spiral tool-path generation based on parametric surface mapping[J]. Computer-Aided Design, 2015, 67/68: 87–106. DOI:10.1016/j.cad.2015.06.005 |
[11] | LASEMI A, XUE D Y, GU P H. Recent development in CNC machining of freedom surfaces: a state-of-the-art review[J]. Computer-Aided Design, 2010, 42(7): 641–654. DOI:10.1016/j.cad.2010.04.002 |
[12] | MILUTINOVIC D, GLAVONJIC M, SLAVKOVIC N, et al. Reconfigurable robotic machining system controlled and programmed in a machine tool manner[J]. The International Journal of Advanced Manufacturing Technology, 2011, 53(9): 1217–1229. |
[13] | NIU X J, LIU J T SUN L, et al. Robot 3D sculpturing based on extracted NURBS [C] // International Conference on Robotics and Biomimetics. Sanya: IEEE, 2007: 1936-1941. |
[14] |
王正友, 黄林林, 张国贤. 基于分层切片原理的三维雕刻算法[J].
计算机应用, 2011, 31(2): 378–382.
WANG Zheng-you, HUANG Lin-lin, ZHANG Guo-xian. 3D sculpture algorithm based on hierarchical slicing theory[J]. Journal of Computer Applications, 2011, 31(2): 378–382. |
[15] |
陈昆, 潘小帝, 陈定方. 一种快速成型自适应分层算法[J].
武汉理工大学学报:交通科学与工程版, 2014, 38(3): 547–551.
CHEN Kun, PAN Xiao-di, CHEN Ding-fang. Anadaptive slicing algorithm of rapid prototyping[J]. Journal of Wuhan University of Technology: Transportation Science and Engineering, 2014, 38(3): 547–551. |
[16] |
王素, 刘恒, 朱心雄. STL模型的分层邻接排序快速切片算法[J].
计算机辅助设计与图形学学报, 2011, 23(4): 600–606.
WANG Su, LIU Heng, ZHU Xin-xiong. An algorithm for rapid slicing of STL model based on sorting by triangle adjacency in layers[J]. Journal of Computer-Aided Design and Computer Graphics, 2011, 23(4): 600–606. |
[17] | ZHANG Z Y, JOSHI S. An improved slicing algorithm with efficient contour construction using STL files[J]. The International Journal of Advanced Manufacturing Technology, 2015, 80(5): 1347–1362. |
[18] |
汪卫, 王文平, 汪嘉业. 求一个包含点集所有点的最小圆的算法[J].
软件学报, 2000, 11(9): 1237–1240.
WANG Wei, WANG Wen-ping, WANG Jia-ye. An algorithm for finding the smallest circle containing all points in a given point set[J]. Journal of Software, 2000, 11(9): 1237–1240. |
[19] | 谭民, 徐德, 侯增广, 等. 先进机器人控制[M]. 北京: 高等教育出版社, 2007: 34-36. |