CN114491865B - 一种工件表面轮廓自适应离散方法 - Google Patents
一种工件表面轮廓自适应离散方法 Download PDFInfo
- Publication number
- CN114491865B CN114491865B CN202210117507.XA CN202210117507A CN114491865B CN 114491865 B CN114491865 B CN 114491865B CN 202210117507 A CN202210117507 A CN 202210117507A CN 114491865 B CN114491865 B CN 114491865B
- Authority
- CN
- China
- Prior art keywords
- curve
- arc
- point
- vector
- spline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000011438 discrete method Methods 0.000 title claims abstract description 6
- 239000006185 dispersion Substances 0.000 claims abstract description 16
- 239000013598 vector Substances 0.000 claims description 42
- 238000000034 method Methods 0.000 claims description 28
- 230000008859 change Effects 0.000 claims description 13
- 238000005070 sampling Methods 0.000 claims description 13
- 230000009021 linear effect Effects 0.000 claims description 5
- 238000005452 bending Methods 0.000 claims description 4
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 238000012800 visualization Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 2
- OMPJBNCRMGITSC-UHFFFAOYSA-N Benzoylperoxide Chemical compound C=1C=CC=CC=1C(=O)OOC(=O)C1=CC=CC=C1 OMPJBNCRMGITSC-UHFFFAOYSA-N 0.000 claims 1
- 229940060894 topex Drugs 0.000 claims 1
- 238000004026 adhesive bonding Methods 0.000 abstract description 7
- 238000003466 welding Methods 0.000 abstract description 7
- 238000001514 detection method Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 abstract description 2
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000007789 gas Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/17—Mechanical parametric or variational design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Numerical Control (AREA)
Abstract
本发明公开了一种工件表面轮廓自适应离散方法。本发明中,首先通过BRepAdaptor_Curve获取曲线的参数域,对曲线的参数域进行等参划分,根据等参划分所得的参数值计算B样条曲线上型值点的值。根据计算所得型值点的值反求B样条曲线的控制点Pi以及样条基函数Ni,k(t)。然后输入弧长的步长s,对B样条曲线进行等弧长离散;通过拾取待处理表面,对表面进行遍历所有环,得到弧长最大环。对轮廓进行遍历,得到不同特征的边界,通过对不同特征的边界进行处理,实现了路径点的快速与准确获取。并且通过对B样条曲线的离散,使得机器人运动轨迹更加贴合工件边界。提高了焊接和涂胶检测的精度。
Description
技术领域
本发明属于工业机器人离线编程技术领域,具体为一种工件表面轮廓自适应离散方法。
背景技术
装备制造业的发展是我国重工业的核心,汽车制造领域是我国装备制造业的重要组成部分。近几年来,我国在汽车领域发展迅速,消费者越来越看重汽车的安全性,舒适性。这就对汽车零配件的装配提出了很高的要求。部分汽车零配件的装配采取焊接和涂胶的方式,目前零配件的焊接和涂胶有人工方式和机器人方式两种。但是由于恶劣的工作环境以及高强度的劳动方式,越来越多的汽车生产厂商采取机器人焊接和涂胶的方式。为了提高零配件的装配精度,需要对焊接和涂胶机器人进行路径规划。路径规划的方式有人工示教法和离线编程法。人工示教法需要机器人操作人员在机器人工作空间中进行大量的实验,记录下机器人不同工作位置的路径点的坐标,速度等信息。
但是焊接和涂胶环境都是充满了有害气体并且有一定的危险性,操作人员的健康得不到保证。同时考虑到人工示教需要在机器人停止工作的情况下进行,不利于装配效率的提高。因此,离线编程方法的优点越来越突出。
发明内容
本发明的目的在于:为了解决上述提出的问题,提供一种工件表面轮廓自适应离散方法。
本发明采用的技术方案如下:一种工件表面轮廓自适应离散方法,所述工件表面轮廓自适应离散方法包括以下步骤:
S1:先进行模型的读取,首先定义读取文件的格式为STLControl_Reader;然后使用ReadFile()方法加载文件,文件读取成功返回True,否则返回false;接着转换CAD模型中的所有实体,转换为拓扑形状,模型数据储存到TopoDS_Shape类,数据储存到定义的拓扑类型的哈希表中;最后将TopoDS_Shape类型的对象转换为可交互操作的AIS_Shape类型的对象;
S2:再进行曲面的选取,利用OpenCASCADE可视化模块中的AIS_InteractiveContext类实现曲面的选取;首先通过AIS_InteractiveContext::ActivateStandardMode确定拾取的类型为TopAbs_FACE类型;然后通过AIS_InteractiveContext::SetSelected将选择的曲面加入到队列中,通过AIS_InteractiveContext::HightSelected对拾取的面进行高亮显示,建立TopoDS_shape类型的vector容器,通过AIS_InteractiveContext::SelectedShape从队列中取出拾取的面储存到vector容器中;
S3:之后进行环的选取,利用OpenCASCADE的建模数据模块中的TopExp类实现对环的选取;首先从TopoDS_shape的vdector数组中取出选取的曲面m_selshape,然后对TopExP::MapShape进行初始化,设定遍历操作的对象为m_selshape,遍历的类型为TopAbs_WIRE,遍历所得的所有环储存到TopTools_IndexedMapOfShape图中;利用OpenCASCADE的建模算法模块中的BRepGProp::LinearProperties计算遍历所得环的弧长,比较每一段弧长的大小,取得弧长最大环Max_wire;
S4:进行轮廓线的分段
首先对TopExP::MapShape进行初始化,设定遍历的操作对象为Max_wire,遍历的类型为TopAbs_EDGE,遍历所得的所有边储存到TopTools_IndexedMapOfShape图中;根据直线,圆弧,B样条曲线对遍历所得的所有边进行分类;首先确定所有边中的直线,空间中直线的表达式为:
p=p(u)=[x(u),y(u),z(u)],u∈[u0,un];
S5:通过BRepAdaptor_Curve获取直线的参数域,按照u0,(u0+un)/2,un对参数域进行划分,分别计算直线在u0,(u0+un)/2,un处的切向量;分别比较三处切向量的模长与向量角是否相等;如果三处的模长,向量角均相等,则获取的这条边为直线,计算直线在u0,un处的x,y,z值;否则进入下一个判断语句,判断其是否为圆弧;空间中圆弧的表达式为:
C=C(u)=[x(u),y(u),z(u)],u∈[u0,un];
S6:同样通过BRepAdaptor_Curve获取曲线的参数域,随机选取参数域中的参数值u0,u1,…,u5,计算x(u0),y(u0),z(u0)…x(un),y(un),z(un)等坐标值;通过这种方法我们随机获得了圆弧上六组坐标点的值;六组坐标点分别为:
P0(x0,y0,z0),P1(x1,y1,z1),p2(x2,y2,z2),…,P5(x5,y5,z5);取前三组坐标构成一段圆弧,后三组坐标构成一段圆弧,分别计算得到圆弧的圆心D0,D1,半径R0,R1;设定圆心的偏离误差qc=0.01,半径容许误差qr=0.001;比较圆心D1相对于D0的偏离是否在偏离误差内,比较R1相对于R0的误差是否在容许误差内;
S7:进行B样条曲线的离散,所述B样条曲线的离散为自适应的B样条曲线离散算法,采样点合理地分布在曲率变化不大和曲率变化较大的区域,满足轮廓的变化特征;
首先通过BRepAdaptor_Curve获取曲线的参数域,对曲线的参数域进行等参划分,根据等参划分所得的参数值计算B样条曲线上型值点的值;根据计算所得型值点的值反求B样条曲线的控制点Pi以及样条基函数Ni,k(t);通过积分法计算B样条曲线的弧长L;
S8:接着根据弧长的步长以及曲线的弧长L确定离散点的节点矢量t,进而确定离散点的位置;若要想求得节点矢量t,首先要确定节点t所在的节点区间,假定t为第n个离散点,第n-1个离散点对应的节点区间为[tm-1,tm),n个离散点,n个离散点到起点的弧长为Ln=n*s,
B样条曲线在[0,tm]上的弧长为如果/>则离散点t可能在节点区间[tm,tm+1)上;计算B样条曲线在[0,tm+1)上的弧长/>如果/>则离散点t在节点区间(tm,tm+1)上;
S9:接着遍历等弧长离散所得离散点,所有离散点储存到gp_pnt类型的容器中,从容器中依次取出两点对B样条曲线进行分段,假设有n个离散点,则B样条曲线被分为(n-1)段,分别取(n-1)段曲线的首端点P1,中点P3,末端点P2;
S10:最后依次取出分段曲线L1,L2...Ln-1,首先将曲线L1以及曲线的两端点压入栈中,然后记录曲线的两端点,接着判断栈是否为空,若为空输出采样点Pi,不为空计算当前曲线的中点,角度偏差θ和曲率偏差α,若θ>θb,α<αb,取曲线的中点,将曲线分成两段,继续压入栈中,若θ>θb,α<αb,判断栈是否为空。
在一优选的实施方式中,所述步骤S6中,如果满足条件,此段边界为圆弧,计算圆弧在u0,(u0+un)/2,un处的x,y,z值;空间圆弧在笛卡尔坐标系下三点表示法可以写成
(x-x0)2+(y-y0)2+(z-z0)2=R2
(x-x1)2+(y-y1)2+(z-z1)2=R2
(x-x2)2+(y-y2)2+(z-z2)2=R2
又因为三点在同一圆弧上,满足三点共面方程
联立上述两个方程可以分别求得圆心D0,D1以及半径R0,R1。
在一优选的实施方式中,所述步骤S6中,如果既不满足直线的判断条件又不满足圆弧的判断条件,则所获取的边界为B样条曲线。
在一优选的实施方式中,所述步骤S7中,B样条曲线可以表示为
然后输入弧长的步长s,角度偏差θb,曲率偏差αb。
在一优选的实施方式中,所述步骤S8中,节点矢量t可有公式:
求得;
如果则继续迭代。
在一优选的实施方式中,所述步骤S9中,假设P1,P2对应的参数值分别为u1,u2,则P3对应的参数值为(u1+,u2)/2;曲率表示的是曲线的弯曲程度,角度偏差θ,曲率偏差α越大,曲线弯曲程度越大;所以通过角度偏差θ,曲率偏差α来近似反应曲率的变化;角度偏差θ为向量P1P3与向量P3P2的夹角,曲率偏差α为向量P1P2与向量P1P3的夹角和向量P1P2模长的乘积。
在一优选的实施方式中,所述步骤S10中,若为空输出采样点Pi;依次对曲线L1,L2...Ln-1执行上述操作,直到输出所有采样点。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明中,通过拾取待处理表面,对表面进行遍历所有环,得到弧长最大环。对轮廓进行遍历,得到不同特征的边界,通过对不同特征的边界进行处理,实现了路径点的快速与准确获取。并且通过对B样条曲线的离散,使得机器人运动轨迹更加贴合工件边界。提高了焊接和涂胶检测的精度。
附图说明
图1为本发明中工件模型图;
图2为本发明中待处理面模型图;
图3为本发明中轮廓拾取结果图;
图4为本发明中直线拾取结果图;
图5为本发明中圆弧拾取结果图;
图6为本发明中等弧长离散结果图;
图7为本发明中B样条曲线自适应曲率离散结果图;
图8为本发明的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1-8,
实施例:
首先定义读取文件的格式为STLControl_Reader;然后使用ReadFile()方法加载文件,文件读取成功返回True,否则返回false;接着转换CAD模型中的所有实体,转换为拓扑形状,模型数据储存到TopoDS_Shape类,数据储存到定义的拓扑类型的哈希表中;最后将TopoDS_Shape类型的对象转换为可交互操作的AIS_Shape类型的对象。读入的工件模型如图1;
利用OpenCASCADE可视化模块中的AIS_InteractiveContext类实现曲面的选取。首先通过AIS_InteractiveContext::ActivateStandardMode确定拾取的类型为TopAbs_FACE类型。然后通过AIS_InteractiveContext::SetSelected将选择的曲面加入到队列中,通过AIS_InteractiveContext::HightSelected对拾取的面进行高亮显示,建立TopoDS_shape类型的vector容器,通过AIS_InteractiveContext::SelectedShape从队列中取出拾取的面储存到vector容器中。选取的曲面如图2;
利用OpenCASCADE的建模数据模块中的TopExp类实现对环的选取。首先从TopoDS_shape的vdector数组中取出选取的曲面m_selshape,然后对TopExP::MapShape进行初始化,设定遍历操作的对象为m_selshape,遍历的类型为TopAbs_WIRE,遍历所得的所有环储存到TopTools_IndexedMapOfShape图中。利用OpenCASCADE的建模算法模块中的BRepGProp::LinearProperties计算遍历所得环的弧长,比较每一段弧长的大小,取得弧长最大环Max_wire。总共拾取到了11个闭合环;
首先对TopExP::MapShape进行初始化,设定遍历的操作对象为Max_wire,遍历的类型为TopAbs_EDGE,遍历所得的所有边储存到TopTools_IndexedMapOfShape图中。轮廓中总共拾取到11个边界。拾取到的边界如图3所示:
首先确定所有边中的直线,空间中直线的表达式为
p=p(u)=[x(u),y(u),z(u)],u∈[u0,un];
通过BRepAdaptor_Curve获取直线的参数域,按照u0,(u0+un)/2,un对参数域进行划分,分别计算直线在u0,(u0+un)/2,un处的切向量。分别比较三处切向量的模长与向量角是否相等。如果三处的模长,向量角均相等,则获取的这条边为直线,计算直线在u0,un处的x,y,z值。总共拾取到7条直线。分别计算7条直线的首末端点值,并表示在模型图中,如图4所示;
否则进入下一个判断语句,判断其是否为圆弧。空间中圆弧的表达式为
C=C(u)=[x(u),y(u),z(u)],u∈[u0,un];
同样通过BRepAdaptor_Curve获取曲线的参数域,随机选取参数域中的参数值u0,u1,…,u5,计算x(u0),y(u0),z(u0)…x(un),y(un),z(un)等坐标值。通过这种方法我们随机获得了圆弧上六组坐标点的值。六组坐标点分别为P0(x0,y0,z0),P1(x1,y1,z1),p2(x2,y2,z2),…,P5(x5,y5,z5)。取前三组坐标构成一段圆弧,后三组坐标构成一段圆弧,分别计算得到圆弧的圆心D0,D1,半径R0,R1。设定圆心的偏离误差qc=0.01,半径容许误差qr=0.001。比较圆心D1相对于D0的偏离是否在偏离误差内,比较R1相对于R0的误差是否在容许误差内。如果满足条件,此段边界为圆弧,总共拾取到3段圆弧,计算圆弧在u0,(u0+un)/2,un处的x,y,z值,并表示在模型中。空间圆弧在笛卡尔坐标系下三点表示法可以写成
(x-x0)2+(y-y0)2+(z-z0)2=R2
(x-x1)2+(y-y1)2+(z-z1)2=R2
(x-x2)2+(y-y2)2+(z-z2)2=R2;
又因为三点在同一圆弧上,满足三点共面方程
联立上述两个方程可以分别求得圆心D0,D1以及半径R0,R1。圆弧拾取结果如图5所示:
所述B样条曲线的离散为自适应的B样条曲线离散算法,采样点合理地分布在曲率变化不大和曲率变化较大的区域,满足轮廓的变化特征。
首先通过BRepAdaptor_Curve获取曲线的参数域,对曲线的参数域进行等参划分,根据等参划分所得的参数值计算B样条曲线上型值点的值。根据计算所得型值点的值反求B样条曲线的控制点Pi以及样条基函数Ni,k(t)。B样条曲线可以表示为:
然后输入弧长的步长s,角度偏差θb,曲率偏差αb。
接着通过积分法计算B样条曲线的弧长L。
接着根据弧长的步长以及曲线的弧长L确定离散点的节点矢量t,进而确定离散点的位置。若要想求得节点矢量t,首先要确定节点t所在的节点区间,假定t为第n个离散点,第n-1个离散点对应的节点区间为[tm-1,tm),n个离散点,n个离散点到起点的弧长为Ln=n*s,
B样条曲线在[0,tm)上的弧长为如果/>则离散点t可能在节点区间[tm,tm+1)上。计算B样条曲线在[0,tm+1)上的弧长/>如果/>则离散点t在节点区间[tm,tm+1)上。
节点矢量t可有公式求得。如果
则继续迭代。计算所得B样条曲线的弧长为87.99mm,这里步长s设为3mm。将自由曲线离散为31个点。等弧长离散结果图如图6所示;
所有离散点储存到gp_pnt类型的容器中,从容器中依次取出两点对B样条曲线进行分段,假设有n个离散点,则B样条曲线被分为(n-1)段,根据等弧长离散结果,B样条曲线被分为30段,分别取30段曲线的首端点P1,中点P3,末端点P2。假设P1,P2对应的参数值分别为u1,u2,则P3对应的参数值为(u1+,u2)/2。曲率表示的是曲线的弯曲程度,角度偏差θ,曲率偏差α越大,曲线弯曲程度越大。所以通过角度偏差θ,曲率偏差α来近似反应曲率的变化。角度偏差θ为向量P1P3与向量P3P2的夹角,曲率偏差α为向量P1P2与向量P1P3的夹角和向量P1P2模长的乘积。
最后依次取出分段曲线L1,L2...L30,首先将曲线L1以及曲线的两端点压入栈中,然后记录曲线的两端点,接着判断栈是否为空,若为空输出采样点Pi,不为空计算当前曲线的中点,角度偏差θ和曲率偏差α,若θ>θb,α<αb,取曲线的中点,将曲线分成两段,继续压入栈中,若θ<θb,α<αb,判断栈是否为空,若为空输出采样点Pi。依次对曲线L1,L2...Ln-1执行上述操作,直到输出所有采样点。这里角度偏差θb=0.09,曲率偏差αb=0.01。离散为137个点,且离散点的分布满足曲率的变化特征。B样条曲线自适应曲率离散结果图如图7所示
工作原理:
首先通过对STL格式的CAD模型进行待处理表面拾取。
接着遍历待处理表面的所有闭合环,比较环的弧长,最大环即为待处理表面的轮廓。
接着遍历轮廓的所有边界,将边界按照直线,圆弧,B样条曲线进行离散。
根据机器人直线运动的特点,获取直线的首末端点坐标值,根据机器人圆弧运动的特点,获取圆弧的首末端点以及圆弧中间点坐标值。
根据机器人自由曲线插补运动的特点,对B样条曲线进行自适应离散。
首先通过BRepAdaptor_Curve获取曲线的参数域,对曲线的参数域进行等参划分,根据等参划分所得的参数值计算B样条曲线上型值点的值。根据计算所得型值点的值反求B样条曲线的控制点Pi以及样条基函数Ni,k(t)。然后输入弧长的步长s,对B样条曲线进行等弧长离散。
接着遍历等弧长离散所得离散点,所有离散点储存到gp_pnt类型的容器中,从容器中依次取出两点对B样条曲线进行分段,假设有n个离散点,则B样条曲线被分为(n-1)段,对(n-1)段分段曲线进行自适应曲率离散。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种工件表面轮廓自适应离散方法,其特征在于:所述工件表面轮廓自适应离散方法包括以下步骤:
S1:先进行模型的读取,首先定义读取文件的格式为STLControl_Reader;然后使用ReadFile()方法加载文件,文件读取成功返回True,否则返回false;接着转换CAD模型中的所有实体,转换为拓扑形状,模型数据储存到TopoDS_Shape类,数据储存到定义的拓扑类型的哈希表中;最后将TopoDS_Shape类型的对象转换为可交互操作的AIS_Shape类型的对象;
S2:再进行曲面的选取,利用OpenCASCADE可视化模块中的AIS_InteractiveContext类实现曲面的选取;首先通过AIS_InteractiveContext::ActivateStandardMode确定拾取的类型为TopAbs_FACE类型;然后通过AIS_InteractiveContext::SetSelected将选择的曲面加入到队列中,通过AIS_InteractiveContext::HightSelected对拾取的面进行高亮显示,建立TopoDS_shape类型的vector容器,通过AIS_InteractiveContext::SelectedShape从队列中取出拾取的面储存到vector容器中;
S3:之后进行环的选取,利用OpenCASCADE的建模数据模块中的TopExp类实现对环的选取;首先从TopoDS_shape的vdector数组中取出选取的曲面m_selshape,然后对TopExP::MapShape进行初始化,设定遍历操作的对象为m_selshape,遍历的类型为TopAbs_WIRE,遍历所得的所有环储存到TopTools_IndexedMapOfShape图中;利用OpenCASCADE的建模算法模块中的BRepGProp::LinearProperties计算遍历所得环的弧长,比较每一段弧长的大小,取得弧长最大环Max_wire;
S4:进行轮廓线的分段
首先对TopExP::MapShape进行初始化,设定遍历的操作对象为Max_wire,遍历的类型为TopAbs_EDGE,遍历所得的所有边储存到TopTools_IndexedMapOfShape图中;根据直线,圆弧,B样条曲线对遍历所得的所有边进行分类;首先确定所有边中的直线,空间中直线的表达式为:
p=p(u)=[x(u),y(u),z(u)],u∈[u0,un];
S5:通过BRepAdaptor_Curve获取直线的参数域,按照u0,(u0+un)/2,un对参数域进行划分,分别计算直线在u0,(u0+un)/2,un处的切向量;分别比较三处切向量的模长与向量角是否相等;如果三处的模长,向量角均相等,则获取的这条边为直线,计算直线在u0,un处的x,y,z值;否则进入下一个判断语句,判断其是否为圆弧;空间中圆弧的表达式为:
C=C(u)=[x(u),y(u)z(u)],u∈[u0,un];
S6:同样通过BRepAdaptor_Curve获取曲线的参数域,随机选取参数域中的参数值u0,u1,…,u5,计算x(u0),y(u0),z(u0)…x(un),y(un),z(un)等坐标值;通过这种方法我们随机获得了圆弧上六组坐标点的值;六组坐标点分别为:
P0(x0,y0,z0),P1(x1,y1,z1),p2(x2,y2,z2),…,P5(x5,y5,z5);取前三组坐标构成一段圆弧,后三组坐标构成一段圆弧,分别计算得到圆弧的圆心D0,D1,半径R0,R1;设定圆心的偏离误差qc=0.01,半径容许误差qr=0.001;比较圆心D1相对于D0的偏离是否在偏离误差内,比较R1相对于R0的误差是否在容许误差内;
S7:进行B样条曲线的离散,所述B样条曲线的离散为自适应的B样条曲线离散算法,采样点合理地分布在曲率变化不大和曲率变化较大的区域,满足轮廓的变化特征;
首先通过BRepAdaptor_Curve获取曲线的参数域,对曲线的参数域进行等参划分,根据等参划分所得的参数值计算B样条曲线上型值点的值;根据计算所得型值点的值反求B样条曲线的控制点Pi以及样条基函数Ni,k(t);通过积分法计算B样条曲线的弧长L;
S8:接着根据弧长的步长以及曲线的弧长L确定离散点的节点矢量t,进而确定离散点的位置;若要想求得节点矢量t,首先要确定节点t所在的节点区间,假定t为第n个离散点,第n-1个离散点对应的节点区间为[tm-1,tm),n个离散点,n个离散点到起点的弧长为Ln=n*s,
B样条曲线在[0,tm)上的弧长为如果/>则离散点t可能在节点区间[tm,tm+1)上;计算B样条曲线在[0,tm+1)上的弧长/>如果/>则离散点t在节点区间[tm,tm+1)上;
S9:接着遍历等弧长离散所得离散点,所有离散点储存到gp_pnt类型的容器中,从容器中依次取出两点对B样条曲线进行分段,假设有n个离散点,则B样条曲线被分为(n-1)段,分别取(n-1)段曲线的首端点P1,中点P3,末端点P2;
S10:最后依次取出分段曲线L1,L2...Ln-1,首先将曲线L1以及曲线的两端点压入栈中,然后记录曲线的两端点,接着判断栈是否为空,若为空输出采样点Pi,不为空计算当前曲线的中点,角度偏差θ和曲率偏差α,若θ>θb,α>αb,取曲线的中点,将曲线分成两段,继续压入栈中,若θ<θb,α<αb,判断栈是否为空。
2.如权利要求1所述的一种工件表面轮廓自适应离散方法,其特征在于:所述步骤S6中,如果满足条件,此段边界为圆弧,计算圆弧在u0,(u0+un)/2,un处的x,y,z值;空间圆弧在笛卡尔坐标系下三点表示法可以写成
(x-x0)2+(y-y0)2+(z-z0)2=R2
(x-x1)2+(y-y1)2+(z-z1)2=R2
(x-x2)2+(y-y2)2+(z-z2)2=R2
又因为三点在同一圆弧上,满足三点共面方程
联立上述两个方程可以分别求得圆心D0,D1以及半径R0,R1。
3.如权利要求1所述的一种工件表面轮廓自适应离散方法,其特征在于:所述步骤S6中,如果既不满足直线的判断条件又不满足圆弧的判断条件,则所获取的边界为B样条曲线。
4.如权利要求1所述的一种工件表面轮廓自适应离散方法,其特征在于:所述步骤S7中,B样条曲线可以表示为
然后输入弧长的步长s,角度偏差θa,曲率偏差αb。
5.如权利要求1所述的一种工件表面轮廓自适应离散方法,其特征在于:所述步骤S8中,节点矢量t可有公式:
求得;
如果则继续迭代。
6.如权利要求1所述的一种工件表面轮廓自适应离散方法,其特征在于:所述步骤S9中,假设P1,P2对应的参数值分别为u1,u2,则P3对应的参数值为(u1+,u2)/2;曲率表示的是曲线的弯曲程度,角度偏差θ,曲率偏差α越大,曲线弯曲程度越大;所以通过角度偏差θ,曲率偏差α来近似反应曲率的变化;角度偏差θ为向量P1P3与向量P3P2的夹角,曲率偏差α为向量P1P2与向量P1P3的夹角和向量P1P2模长的乘积。
7.如权利要求1所述的一种工件表面轮廓自适应离散方法,其特征在于:所述步骤S10中,若为空输出采样点Pi;依次对曲线L1,L2…Ln-1执行上述操作,直到输出所有采样点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210117507.XA CN114491865B (zh) | 2022-02-08 | 2022-02-08 | 一种工件表面轮廓自适应离散方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210117507.XA CN114491865B (zh) | 2022-02-08 | 2022-02-08 | 一种工件表面轮廓自适应离散方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114491865A CN114491865A (zh) | 2022-05-13 |
CN114491865B true CN114491865B (zh) | 2024-02-20 |
Family
ID=81477942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210117507.XA Active CN114491865B (zh) | 2022-02-08 | 2022-02-08 | 一种工件表面轮廓自适应离散方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114491865B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117272550B (zh) * | 2023-11-17 | 2024-03-22 | 陕西空天信息技术有限公司 | 一种流道设计的方法、装置、设备及计算机存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726896A (en) * | 1995-08-30 | 1998-03-10 | University Of Utah Research Foundation | Method and system for spline interpolation, and their use in CNC |
CN105425725A (zh) * | 2015-12-09 | 2016-03-23 | 华中科技大学 | 一种离散刀具轨迹的曲线拟合方法 |
CN107450472A (zh) * | 2017-08-31 | 2017-12-08 | 华中科技大学 | 一种基于三次Bezier曲线插值实现刀具轨迹参数弧长化的方法 |
CN108508847A (zh) * | 2018-01-22 | 2018-09-07 | 浙江工业大学 | 一种基于近似等弓高误差小线段逼近Nurbs曲线的方法 |
CN110929455A (zh) * | 2019-10-14 | 2020-03-27 | 青岛数智船海科技有限公司 | 一种基于曲率分布的三维曲面自适应离散方法 |
WO2021248797A1 (zh) * | 2020-06-08 | 2021-12-16 | 苏州艾吉威机器人有限公司 | 基于b样条曲线的路径规划方法、运动控制方法及系统 |
-
2022
- 2022-02-08 CN CN202210117507.XA patent/CN114491865B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726896A (en) * | 1995-08-30 | 1998-03-10 | University Of Utah Research Foundation | Method and system for spline interpolation, and their use in CNC |
CN105425725A (zh) * | 2015-12-09 | 2016-03-23 | 华中科技大学 | 一种离散刀具轨迹的曲线拟合方法 |
CN107450472A (zh) * | 2017-08-31 | 2017-12-08 | 华中科技大学 | 一种基于三次Bezier曲线插值实现刀具轨迹参数弧长化的方法 |
CN108508847A (zh) * | 2018-01-22 | 2018-09-07 | 浙江工业大学 | 一种基于近似等弓高误差小线段逼近Nurbs曲线的方法 |
CN110929455A (zh) * | 2019-10-14 | 2020-03-27 | 青岛数智船海科技有限公司 | 一种基于曲率分布的三维曲面自适应离散方法 |
WO2021248797A1 (zh) * | 2020-06-08 | 2021-12-16 | 苏州艾吉威机器人有限公司 | 基于b样条曲线的路径规划方法、运动控制方法及系统 |
Non-Patent Citations (3)
Title |
---|
基于曲率优化的机器人砂带磨削轨迹规划;马凯威;韩良;孙小肖;刘平文;张凯;;机器人;20180211(第03期);全文 * |
基于给定精度的空间B样条曲线弧长分段点求取方法;丁立军;戴曙光;穆平安;侯文玫;;计算机应用;20130501(第05期);全文 * |
基于视觉的空间曲线机器人加工轨迹规划;苏工兵;李超;刘天祥;房纯;;激光与光电子学进展;20200525(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114491865A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1681607B1 (en) | Bending apparatus comprising means for performing setup operations | |
CN111243017B (zh) | 基于3d视觉的智能机器人抓取方法 | |
JP2023513841A (ja) | 産業ロボット用の衝突回避モーション計画方法 | |
CN114491865B (zh) | 一种工件表面轮廓自适应离散方法 | |
Liu et al. | Online time-optimal trajectory planning for robotic manipulators using adaptive elite genetic algorithm with singularity avoidance | |
CN111660296B (zh) | 一种基于全域空间条件数的优化机器人灵活度的方法 | |
CN113715016A (zh) | 一种基于3d视觉的机器人抓取方法、系统、装置及介质 | |
CN114227685A (zh) | 机械臂控制方法、装置、计算机可读存储介质及机械臂 | |
CN114115131B (zh) | 一种应用于五轴数控机床的时间样条曲线拟合与插补方法 | |
Wen et al. | Uniform coverage tool path generation for robotic surface finishing of curved surfaces | |
CN111709095B (zh) | 一种面向复杂曲面6d虚拟夹具构造方法 | |
Meddahi et al. | API based graphical simulation of robotized sites | |
Hsu et al. | Design of smooth path based on the conversion between η 3 spline and Bezier curve | |
Singh et al. | Robot motion planning in a dynamic environment using offset Non-Uniform Rational B-Splines (NURBS) | |
Kohler et al. | Fast computation of the C-space of convex 2D algebraic objects | |
Lu et al. | Collision-free and smooth path generation method of five-axis ball-end milling considering effective tool diameter change | |
CN112356025B (zh) | 一种用双圆弧近似nurbs曲线的机器人运动方法和装置 | |
Berger et al. | An approach for the automatic generation of robot paths from CAD-data | |
Posada et al. | Machine learning approaches for offline-programming optimization in robotic painting | |
Benzaid et al. | Filtered medial surface based approach for 3D collision-free path planning problem | |
Hichri et al. | Genetic Algorithms for Stable Robot Grasping | |
Mandala et al. | Synchronous dual-arm manipulation by adult-sized humanoid robot | |
Garg et al. | Path tracing and object avoidance algorithm for robotic manipulators incorporating constrained filters | |
Iuvshin et al. | Development of Complex Surfaces Adaptive Polishing Method for Robotic Cell | |
Zhang et al. | Bi-RRT* based trajectory optimization and obstacle avoidance for a serial manipulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |