圆弧加减速插补算法
椭圆加工中的圆弧拟合及加减速算法研究
数控加工技术现代制造工程(Modern Manufacturing Engineering)2011年第9期椭圆加工中的圆弧拟合及加减速算法研究陈光黎,张严林,钟震宇,肖先文(广东省科学院自动化工程研制中心,广州510070)摘要:很多数控机床不支持椭圆插补,因此椭圆加工一般采用圆弧拟合的方法转换成圆弧加工。
采用椭圆的最优四圆弧逼近拟合算法,用数字积分法(DDA)进行圆弧插补。
用小段割线拟合圆弧起点和终点的小段圆弧,将圆弧的加减速控制转换成直线的加减速控制,解决了DDA圆弧插补的加减速控制难题。
关键词:椭圆;圆弧;数字积分法(DDA);加减速中图分类号:TP273文献标志码:B文章编号:1671—3133(2011)09—0037—03Research on algorithm of arc approach&acceleration/decelerationcontrol for ellipse processCHEN Guang-li,ZHANG Yan-lin,ZHONG Zhen-yu,XIAO Xian-wen(Automation Engineering R&M Center,Guangdong Academy of Sciences,Guangzhou510070,China)Abstract:Most CNC machines are not equipped with ellipse interpolation,so the arc approach&arc process are often used as a substitute for ellipse process.The optimized4-arc approach algorithm is presented and the approximate error is analysed.The DDA arc interpolation has a difficulte problem of acceleration/deceleration algorithm.A short secant is as a substitute for a short art at arc’s endpoint,and acceleration/deceleration algorithm for DDA arc interpolation is substituted by one for line interpola-tion,which solve the problem of acceleration/deceleration for DDA arc interpolation by means of a common MCU.Key words:ellipse;arc;DDA;acceleration/deceleration1椭圆加工概述目前,椭圆加工一般有两种方案:椭圆插补及圆弧拟合加工。
一、插补及其算法 插补:是指在一条已知起点和终点的曲线上进行数
插补: 插补:是指在一条已知起点和终点的曲线上进行 数据点的密化。 数据点的密化。 CNC系统插补功能:直线插补功能 系统插补功能: 系统插补功能 圆弧插补功能 抛物线插补功能 螺旋线插补功能
淮海工学院
8.1
插补原理
直线和圆弧插补功能插补算法: 直线和圆弧插补功能插补算法:
⑴逐点比较法直线插补的象限与坐标变换 线 G01 型 偏 差 判 别 F≥0 F<0 象 2 限 3
1
4
+X +Y
+Y - X
-X -Y
-Y +X
淮海工学院
8.1
插补原理
(2)逐点比较法圆弧插补象限与坐标变换 )
象 线 型 偏差判别 F≥0 G02 G03 F<0 F≥0 F<0 1 -Y +X -X +Y 2 +X +Y -Y -X 3 +Y -X +X -Y 限 4 -X -Y +Y +X
淮海工学院
或半闭环)CNC系统的加减速控制 二、闭环(或半闭环 闭环 或半闭环 系统的加减速控制
前加减速控制: 前加减速控制 (1)稳定速度和瞬时速度 ) (2)线性加减速处理 ①加速处理 )
②减速处理 ③终点判别处理
8.1
插补原理
图8-2 逐点比较法直线插补轨迹
淮海工学院
8.1
插补原理
2.逐点比较法圆弧插补 逐点比较法圆弧插补
(1)判别函数及判别条件 ) (2)进给方向判别 ) (3)迭代法偏差函数F的推导 )迭代法偏差函数 的推导 (4)逐点比较法圆弧插补终点判别 )
淮海工学院
8.1
插补原理
⒊ 坐标变换及自动过象限处理
圆弧加减速插补算法
机电工程学院数控加工技术课程设计——插补算法实现学号:S311077006专业:机械工程学生姓名:胡晓锋任课教师:李霞副教授2011年4月基于PC的圆弧曲线加减速算法实现插补算法一直以来就是数控系统中的核心技术。
从数控系统的原理来说,插补的本质问题就是对任意曲线进行分解,成为若干段微小的曲线,当对曲线的分解达到无穷级时,每一段曲线便成为微小的直线段。
然后利用与相应微小曲线相类似的直线段代替,通过控制刀具按直线段行走进行加工,完成为整个曲线的插补运算加工。
实际问题中不可能对任意曲线的分解达到无穷,因此总是存在相应的误差。
然而在实际运用中对误差的容忍度有限,因此只需在满足精度的情况下进行曲线的分解。
对曲线的分解过程即是将其坐标点进行密化,不但要保证精度,还需要在极短的时间内完成。
受现代技术的限制,这一过程目前还存在一定的问题。
由此而产生的对插补算法的研究也一直没有停止过,从经典的逐点比较法到现在的自由曲面直接插补法,各种算法层出不穷。
本次对圆弧的插补算法是基于PC技术的算法,利用MATLAB软件编写相应的插补程序,实现对插补轨迹的模拟与分析。
一、问题描述本次设计针对圆弧曲线进行插补,采用加减速的方式完成刀具的行走过程。
根据数据采样插补原理,实现数控轨迹的密化。
本次插补的难点在于对刀具行走轨迹的自动加减速进行控制,由控制器发出相应指令,当刀具以不同速度运行到不同位置时,能够根据当前的状态判断下一个插补周期需要的状态,从而连续平滑的完成插补过程。
二、速度曲线的数学表达式刀具在进行插补时的速度应该是一个加速-匀速-减速的过程,各个过程与时间的关系应该由相应的加速度来控制。
因此曲线的形状呈现一定的抛物线形。
另初始进给速度为F1,末端进给速度为F2,指令速度为F,当前速度为V,减速距离为S,当前距离为CS,n为插补周期个数,t为当前时刻。
则速度的数学表达式如下:(F1<F)&&(CS>S),起始时刀具加速运动。
2DDA圆弧插补改进算法
其中提出了一个基于传统DDA圆弧插补算法的改进算法,并通过比较证明了该算法相对于弦线插补算法的优越性。实践表明DDA圆弧插补改进算法精简了计算步骤,提高了计算速度。
2DDA圆弧插补改进算法及其实现传统DDA圆弧插补计算过程简单,但是用切线逼近圆弧造成误差。该改进算法使用割线逼近圆弧,可以降低径向误差。改进算法的思想如图3所示,下面以顺圆为例说明。
IK坐标系原点A即切割枪位置,随着切割枪而移动,圆心C相对于原点A的坐标值为(K,I)。第i次迭代之后,切割枪按照插补命令移动到A i点,这时圆心C的坐标为(K i,I i)。
1传统DDA圆弧插补算法在用户编制的零件程序中,对于圆弧插补的程序段,提供了圆弧在XZ平面中的起点、终点以及圆心相对于起点的偏移量I 0、K 0值。现以第一象限的顺圆为例,说明传统DDA圆弧插补算法的实现。
在机床XZ坐标系中,设圆弧起点为A,圆心为C,坐标轴原点平移A点后构成IK坐标系。IK坐标系原点A即切割枪位置,随着切割枪而移动,圆心C相对于原点A的坐标值为(K,I)。第i次迭代之后,切割枪按照插补命令移动到A i点,这时圆心C的坐标为(K i,I i)。在第i+1次迭代中,切割枪将沿着切线A i C′方向移动,于是将按斜率为-K i/I i的切线进行插补迭代一步,切割枪移动到A i+1点。此时圆心C相对于A i+1,的坐标为(I i+1,K i+1)。
式(1)X和Z轴的进给步长可以根据编程速度按斜率为-K i/I i;的直线A i C′计算如下:△X i+1=v(3)因此,第一象限顺圆的传统DDA圆弧插补迭代公式如下式(4)I i=I i-1-△X i K i=K i-1-△Z i)式(5)X i=X i-1-△X i Z i=Z i-1-△Z i)式(6)上述公式中第一个公式用来计算第I次插补周期中坐标轴的进给步长,第二个公式用来修正圆心相对于切割枪位置的现时坐标,第三个公式用来计算切割枪应该达到的命令位置。图2中轨迹是根据传统DDA圆弧插补算法形成的轨迹曲线,包括8个插补点。由切线逼近圆弧的插补算法本身的误差所引起的径向误差较大。
基于向量的圆弧插补和加减速算法研究
基 于 向量 的 圆弧 插 补和 加减 速 算法 研 究
刘 国华 ,谢 明 红 ( 华侨大学机 电及 自 动化学院,福建厦 门 3 6 1 0 2 1 )
摘要 :提 出基于 向量 的圆弧插补算法 ,通过速度和 圆弧半径求出相邻两个插补 点的角度差 ,然后 通过 当前插补 点与 圆 心的一个 向量来求 出下一个插补点 的向量值 ,最后进行 向量差计 算 ,从而得到需要 的 和 Y方 向的速度值 。该算法 不需要 对所处象 限进行分 析 ,同时加工精度可 以得到保证 。还 提 出了离散型 S曲线加减 速控制 的新方法 ,以单位加 速度为基 础 , 根据当前速度和加速度从而求出下一 点的加速度与速度 ,使加速度 、速度 、位移 的计算 更为简单 。实验结 果表明 :该算法 保证 了速度 、加速度的连续 ,提 高了系统 的柔性 。
Ab s t r a c t :T h e c i r c u l a r i n t e r p o l a t i o n a l g o r i t h m b a s e d o n v e c t o r w a s p u t f o r w a r d .T h e a n g l e d e v i a t i o n b e t we e n t wo c o n q e c t i n g i n — t e po r l a c a l c u l a t e d b y v e l o c i t y a n d c i r c u l a r r a d i u s ,t h e n a n o t h e r v e c t o r o f c o n n e c t i n g i n t e po r l a t i o n p o i n t wa s c a l c u l a t e d b y o b t a i n i n g a v e c t o r f r o m p r e s e n t i n t e po r l a t i o n p o i n t a n d c i r c u l a r c e n t e r ,f i n a l l y t h e v e l o c i t i e s o f a n d Y d i r e c t i o n r e q u i r e d w e r e g o t t e n t h r o u g h v e c t o r d i f e r e n c e c a l c u l a t i o n .I n t h i s a l g o i r t h m,w h i c h q u a d r a n t t h e i n t e po r l a t i o n b e l o n g e d t o wa s n o t n e e d e d t o a n a l y z e , me a n w h i l e ma c h i n i n g p r e c i s i o n w a s g u a r a n t e e d .Al s o t h e n e w S - c u r v e a c c e l e r a t i o n — d e c e l e r a t i o n c o n t r o l me t h o d wa s p u t f o wa r rd .On b a —
DDA法圆弧插补误差分析及解决办法
4+3=
6
2
5
6<q
7<q
5 6+5= 11-8=
1 3 7+3= 10-8=
4
7
+X
-Y
5-1=4 11>q 3
1 3+1=4 10>q 2
4
3+4=
2+4=
8
1
4
7<q
6<q
4 7+4= 11-8=
4 6+4= 10-8=
9
+X 0
-Y 3
4-1=3 11>q 3
4+1=5 10>q 2
10
停止
乙tn
的时间,其积分值为 A 到 B 的坐标增量,即 xe -x0 =- t0 kyi
乙tn
dt,ye -y0 = t0 kxi dt,(Ⅲ)将式Ⅲ用累加和代替积分式得 xe -
n
n
Σ Σ x0 =- kyi Δt,ye -y0 = kxi Δt,若取 Δt 为一个脉冲时间间
i=1
i=1
n
n
Σ Σ 隔,即 Δt=1,则 xe -x0 =- kyi ,ye -y0 = kxi 由此可见,圆
对式求其在a到b区间的定积分t0和tn分别对应出发点和终点的时间其积分值为a到b的坐标增量即xex0tnt0乙kyidtyey0tnt0乙kxidt将式用累加和代替积分式得xenx0ni1kyityey0i1kxit若取t为一个脉冲时间间隔即t1则xex0ni1kyiyey0ni1kxi由此可见圆弧插补也可由两套数字积分器来实现圆弧插补被积函数为变量kxi和kyi且随着溢出脉冲而不断变化
数控系统中圆弧插补算法的改进和实现
1 数据采样法的圆弧插补算法
111 数据采样法圆弧插补算法
[2]
插补计算就其实质而言上是在一个插补周期内 , 如何快捷准确的计算出下一个插补点的进给量以及动 点坐标 。 现以插补第一象限顺圆弧 为例 , 如图 1 所 [5 ] Δ Δ 示 , 说明插补顺圆弧 时进给量 X i , Yi 以及动点坐 标 X i+1 , Yi+1 的产生与计算关系 。
组合机床与自动化加工技术
112 圆弧插补算法的改进
由圆的基本知识可知 : OM 垂直弦线 S E, 且平分该 圆弧所对应的中心角 ∠SO E, 故 ∠SO E = ∠M O E = δ 015 ,在 R Δ t S PE与 R Δ t M YM O 中 , 由于 S E ⊥ OM , S P ⊥
M YM , EP 的延长线 EYi+1 ⊥ O YM 因此 , R Δ t S PE 相似于 RΔ t M YM O
则
ΔX i = X i+1 ΔL 2 - X i = Yi - Xi 2 R 2R ΔL
Δ 2 Δ ΔY i = Y i+1 - Y i = - Y i L2 - X i L R 2R
插补准备阶段进行计算 , 以便准确快捷地计算进给量 。
・62・
2009 年第 7 期 113 两种算法的比较分析
R
简为
ΔX i = m Y i - nX i ΔY i = m X i + nY i
( 11 ) ( 12 )
由图 1 可得插补点 E 的坐标
X i+1 = X i +ΔX i Y i+1 = Y i - ΔY i ( 13 ) ( 14 )
且令 则
X i+1 = X i 1 Xi k
空间圆弧插补算法
空间圆弧插补算法
空间圆弧插补算法是一种用于控制机器人末端在三维空间内沿着圆弧路径进行插补运动的算法。
该算法需要计算出圆心、半径、起始点和结束点等关键信息,并根据这些信息来生成插补路径。
在插补路径生成过程中,需要考虑机器人末端的速度、加速度等因素,以确保机器人运动平稳、稳定。
同时,为了避免机器人与障碍物产生碰撞,还需要对插补路径进行适当的优化和规划。
空间圆弧插补算法在机器人控制领域具有广泛的应用,尤其在工业生产领域,可以用于控制机器人完成复杂的加工、装配等任务。
- 1 -。
(完整版)圆弧插补
Fi<0
O Fi≥0
X Fi<0 Fi≥0
2、圆弧插补的象限处理
前面的圆弧插补(顺圆、逆圆)只限于第一象限,其他 情况如图所示: Y
O
X
代入偏差函数,得Pi+1点的偏差为: Fi+1 = Fi-2Xi + 1
当Fi<0时,向+Y方向进给一步。动点由Pi(Xi,Yi) 移动到 Pi+1(Xi,Yi +1)则新动点的坐标为 Yi+1=Yi +1
代入偏差函数,得Pi+1点的偏差为:
Fi+1 = Fi + 2Yi + 1
所以,第一象限逆时针圆弧插补加工时偏差加工的递推 公式为:
6 F5= -7 +Y F6=F5+2Y5+1 =0, X6=3,Y6=4 ∑=4
7 F6=0 -X F7=F6-2X6+1 = -5, X7=2,Y7=4 ∑=3 8 F7= -5 +Y F8=F7+2Y7+1 =4, X8=2,Y8=5 ∑=2
9 F8=4 -X F9=F8-2X8+1 = 1, X9=1,Y9=5 ∑=1
若P点在圆弧上,则有 (Xi2 +Yi2 ) — (Xo2 +Yo2) = 0,我们定义偏差函数Fi为 Fi = (Xi2 +Yi2 ) — (Xo2 +Yo2 )
Y
B(Xe,Ye)
Pi(Xi,Yi)
A(Xo,Yo) O
X
可见,若Fi=0,表示动点位于圆弧上;若Fi>0,表示动 点位于圆弧外;Fi<0,表示动点位于圆弧内。
(2)进给控制
把Fi=0和若Fi>0合在一起考虑,当Fi≥0时,向-X方向进 给一步;当Fi<0时,向+Y方向进给一步。
圆弧插补指令编程【优质】PPT文档
② 根据图3-4得各点绝对坐标值为:
M(100, 100)、A(0, 47)、B(0, 45)、C(18.15, 25.148);
③ R为圆弧半径,不与I、K同时使用。当用半径R指定圆心位置时,由于在同一半径R 的情况下,从圆弧的起点到终点有两个圆弧的可能性,为区别两者,规定圆心角 ≦180° 时,用“+R”表示, ≧180°时,用“R”表示。用半径R指定圆心位置时,不能描述整圆。
如图5-15所示,两圆弧相切于C点。 D(22, 9)、E(22, 0)、F(26, 0)。 指令格式:G02/G03 X(U)Z(W) I K F 当用半径R指定圆心位置时,由于在同一半径R的情况下,从圆弧的起点到终点有两个圆弧的可能性,为区别两者,规定圆心角 ≦180°时,用“+R”表示, ≧180°时,用“ R”表示。 ② 圆心坐标(I, K)为圆弧起点到圆弧中心点所作矢量分别在X、Z坐标轴方向上分矢量(矢量方向指向圆心)。 ① 用绝对值编程时,圆弧终点坐标为圆弧终点在工件坐标系中的坐标值,用X、Z 表示。 根据余弦定理:DG2=GH2+HI2 2DG×HI×cos∠DHG
在直角三角形Rt△DIH中:
DH2= HI2+DI2 =242+112
DH=26.401 Sin∠DHI=DI/DH=11/26.401
∠DHI=24.62°
根据余弦定理:DG2=GH2+HI22DG×HI×cos∠DHG
112=26.4012+2322×26.401×12×cos∠DHG 故∠DHG=24.51°
① 用绝对值编程时,圆弧终点坐标为圆弧终点在工件坐标系中的坐标值,用X、Z 表 示。当用增量值编程时,圆弧终点坐标为圆弧终点相对于圆弧起点的增量值,用U、W表示。
圆弧插补
<1>例1:请分别用半径法R方式和圆心坐标I、 J、K方式编写下列圆轨迹的加工程序。
例1程序如下:
I、J、K方式(A点起刀)
% O0001; T01; M06; G90G54G17G00X-100.0Y0S600M03; G02X-100.0Y0I100.0F100; M05; M30; %
例1程序如下:
R方式(A点起刀)
% O0001; T01; M06; G90G54G17G00X-100.0Y0S600M03; G02X0Y100.0R100.0F100; X100.0Y0R100.0; X0Y-100.0R100.0; X-100.0Y0R100.0; M05; M30; %
<2>例2:请分别用半径法R方式和圆心坐标I、 J、K方式在G90方式和G91方式下编写下列 圆轨迹的加工程序。
% O0001; T01; M06; G91G54G18G00X10.0Z40.0S600M03; G03X20.0Z-20.0I0K-20.0F100; G02X-10.0Z-10.0I0K-10.0; M05; M30; %
例2程序如下:
(G90)R方式(A点起刀)
% O0001; T01; M06; G90G54G18G00X10.0Z40.0S600M03; G03X30.0Z20.0R20.0F100; G02X20.0Z10.0R10.0; M05; M30; %
<3>
坐标字I_、J_、K_表示圆弧 圆心的坐标值, I、J、K分别与 X、Y、Z相对应,它是圆心相对 于圆弧起点在X、Y、Z轴方向上 的增量值,即圆心相对于圆弧起 点为原点的坐标值。如下列图所 示:
①、用指令G17时圆心坐标X轴方 向用I表示,Y轴方向用J表示。
圆弧加减速插补算法
圆弧加减速插补算法机电工程学院数控加工技术课程设计——插补算法实现学号:S311077006专业:机械工程学生姓名:胡晓锋任课教师:李霞副教授2011年4月基于PC的圆弧曲线加减速算法实现插补算法一直以来就是数控系统中的核心技术。
从数控系统的原理来说,插补的本质问题就是对任意曲线进行分解,成为若干段微小的曲线,当对曲线的分解达到无穷级时,每一段曲线便成为微小的直线段。
然后利用与相应微小曲线相类似的直线段代替,通过控制刀具按直线段行走进行加工,完成为整个曲线的插补运算加工。
实际问题中不可能对任意曲线的分解达到无穷,因此总是存在相应的误差。
然而在实际运用中对误差的容忍度有限,因此只需在满足精度的情况下进行曲线的分解。
对曲线的分解过程即是将其坐标点进行密化,不但要保证精度,还需要在极短的时间内完成。
受现代技术的限制,这一过程目前还存在一定的问题。
由此而产生的对插补算法的研究也一直没有停止过,从经典的逐点比较法到现在的自由曲面直接插补法,各种算法层出不穷。
本次对圆弧的插补算法是基于PC技术的算法,利用MATLAB软件编写相应的插补程序,实现对插补轨迹的模拟与分析。
一、问题描述本次设计针对圆弧曲线进行插补,采用加减速的方式完成刀具的行走过程。
根据数据采样插补原理,实现数控轨迹的密化。
本次插补的难点在于对刀具行走轨迹的自动加减速进行控制,由控制器发出相应指令,当刀具以不同速度运行到不同位置时,能够根据当前的状态判断下一个插补周期需要的状态,从而连续平滑的完成插补过程。
二、速度曲线的数学表达式刀具在进行插补时的速度应该是一个加速-匀速-减速的过程,各个过程与时间的关系应该由相应的加速度来控制。
因此曲线的形状呈现一定的抛物线形。
另初始进给速度为F1,末端进给速度为F2,指令速度为F,当前速度为V,减速距离为S,当前距离为CS,n为插补周期个数,t为当前时刻。
则速度的数学表达式如下:(F1<F)&&(CS>S),起始时刀具加速运动。
圆弧插补计算过程步骤
圆弧插补是指在数控机床上,通过控制工具沿着圆弧路径进行加工的过程。
下面是圆弧插补的计算过程步骤:
1. 确定圆弧的起点和终点坐标:根据加工要求和图纸,确定圆弧的起点和终点的坐标。
2. 计算圆弧的半径:根据起点和终点的坐标,计算出圆弧的半径。
3. 计算圆心坐标:根据起点、终点和半径的关系,计算出圆心的坐标。
4. 计算圆弧的角度:根据起点、终点和圆心的坐标,计算出圆弧的角度。
5. 确定圆弧的方向:根据起点、终点和圆心的位置关系,确定圆弧的方向(顺时针或逆时针)。
6. 计算插补点的坐标:根据圆心、半径、角度和方向,计算出插补点的坐标。
7. 控制工具移动:根据插补点的坐标,通过数控系统控制工
具在圆弧路径上移动。
8. 重复计算和移动:根据设定的插补步长,重复计算和移动,直到达到终点。
以上是圆弧插补的计算过程步骤,通过这些步骤可以实现精确的圆弧加工。
空间圆弧插补理论理与算法实现
1、空间圆弧插补理论理与算法实现1.1、背景在数控系统、机器人控制等领域要求完成空间上的移动。
这些移动轨迹需要准确定位,而且必须沿着所希望的路径在一定的精度范围内移动,即要进行精确的连续轨迹控制。
通常情况下,仅需要将运动路径上的某些关键点确定下来,然后根据轨迹特征算出这些点之间必须到达的中间位置点,通过插补进行控制,从而实现高效高精的运动控制。
运动路径一般由一些基本曲线组成而本文研究的是空间圆弧规则曲线的插补算法。
1.2、空间圆弧插补理论基础1.2.1、空间三点圆弧矢量插补空间三点圆弧矢量插补是根据空间不在一条直线上的三点确定下来的圆弧,通过空间矢量的变换、计算来进行插补实现的一种手段。
其基本流程为:1. 通过不在一条直线上的空间三点确定圆弧所在圆的圆心坐标2. 通过圆心与三点中任意一点的距离确定所在圆的半径3. 通过圆心与起点、终点所在矢量确定圆弧的圆心角大小4. 通过圆心角、速度、插补周期、半径、三点坐标、圆心坐标等标量与矢量计算出当前时间点上的插补坐标 这种算法的优势体现在:1. 上位机仅需提供空间三点的坐标即可2. 矢量坐标都为绝对坐标,中间无需坐标转换3. 理论上可使所有插补点均落在圆弧上4. 采用矢量算法,避免了插补方向和过象限的判断5. 没有累积误差此算法最大的劣势在于:在插补前计算量较大,CPU 处理的时间较长,快速且小距离运动有可能导致时间误差,需要实验认证1.2.2、空间三点所确定的圆心坐标圆心坐标的确定有两种常用方法: 1. 矢量法设已知空间不在同一直线上的任意三点为圆弧起点P、中间点Q 和终点R。
各自的坐标为111,,z y x 、 222,,z y x 、 333,,z y x 。
所求圆心O 坐标为 000,,z y x 。
有:由QO PO (1) RO QO (2)以及由不共线的三点确定的平面方程:01111333222111000 z y x z y x z y x z y x (3)即可求出圆心O 的坐标。
圆弧插补算法原理
圆弧插补算法原理1. 圆弧路径定义:首先,需要定义圆弧路径的起点、终点和半径。
这些参数可以通过人机界面或计算机辅助设计软件来输入。
2. 轴角度计算:根据圆弧路径的起点、终点和半径,可以计算出机器人或数控机床各个关节轴的角度变化。
这些角度变化将用于控制机器人或数控机床的运动。
3. 圆弧分割:根据给定的线段长度,将圆弧路径分割成一系列离散的线段。
通常,线段长度越小,插补误差越小,但计算量也随之增加。
4. 插补计算:对于每个线段,需要计算出机器人或数控机床的位置和速度指令。
这可以通过差值计算的方法来实现。
具体来说,可以使用Bezier曲线、B样条曲线或插值方法来计算。
5. 运动控制:将计算出的位置和速度指令发送给机器人或数控机床的控制器,控制其沿着离散的线段依次运动。
通常,控制器会使用闭环反馈来实时调整机器人或数控机床的运动轨迹,以保证准确性和稳定性。
位置插值是指根据给定的圆弧路径和线段长度,计算出机器人或数控机床在每个插补周期内的位置坐标。
常用的方法有直线插值、Bezier曲线插值和B样条曲线插值等。
这些插值方法根据路径的形状和曲线度来选择,以尽量减小插补误差。
速度插值是指根据位置插值得到的机器人或数控机床的位置坐标,计算出其在每个插补周期内的速度。
常用的方法有线性插值和三次样条插值等。
速度插值旨在提前计算出机器人或数控机床在下一个插补周期内的运动速度,以便在运动控制中调整运动轨迹和避免速度突变。
总的来说,圆弧插补算法通过分割圆弧路径和插补计算位置和速度,在机器人或数控机床上实现曲线运动。
这种算法可以提高工作效率和精度,同时降低机器人或数控机床的机械负荷,提高设备的寿命和可靠性。
数控技术数控机床的插补原理直线插补与圆弧插补计算原理
(一)插补的基本概念
插补运算过程:
进入一个插补周期
根据指令的进给速度计算出 一个微小的直线数据段。
通常经过若干个插补周期加工完一个程序段, 即从数据段的起点走到终点。
计算机数控系统是一边插补,一边加工。 而在本次处理周期内,插补程序的作用是
计算下一个处理周期的位置增量。
八方向逐点比较法以45o折线逼近给定轨迹,逼近误差小 于半个脉冲当量,加工出来的工件质量要比四方向逐点 比较法的高。
以四方向逐点比较法为基础,可以导出八方向逐点比较 法的插补原理及算法。这里限于篇幅,不作具体推导和 详细说明。
插补分类:(插补采用的原理和计算方法)
基准脉冲插补:(又称为行程标量插补或脉冲增量插补) 每次插补结束,向每个运动坐标输出基准脉冲序列。 脉冲序列的频率代表了运动速度,而脉冲的数量表示 移动量。
①逐点比较法;②数字积分法;③数字脉冲乘法器插补法;④矢 量判别法;⑤比较积分法;⑥最小偏差法;⑦目标点跟踪法;⑧ 单步追踪法;⑨直接函数法。
数据采样插补:(又称为时间标量插补或数字增量插 补,8ms,10.24ms)数控装置产生的不是单个脉冲,而 是采样周期内,各坐标的位移量
①直线函数法;②扩展数字积分法;③二阶递归扩展数字积分插 补法;④双数字积分插补法;⑤角度逼近圆弧插补法。
(四)逐点比较法
思想:“走一步看一步”:就是每走一步都要和给定 轨迹上的坐标值进行一次比较,视该点在给定轨迹 的上方或下方,或者给定轨迹的里面或者外面,从 而决定下一步的进给方向,使之趋近加工轨迹。
分段逼近,相连成轨迹
脉冲当量:一个脉冲所产生的 坐标轴移动量叫做脉冲当量
脉冲当量与坐标显示分 辨率往往是一致的
一个实用的圆弧插补算法及实现
"
图& 数据预处理 圆上或圆外时,2 ! 类的共同特点是:4 " 4 $,4 $ 4 %, 圆内时,2 " " " $,
结束语
本文介绍的圆弧插补功能模块的设计方法 (下转第 !’ 页)
万方数据
&/
・ 设计与研究 ・ $%%# 年第 & 期 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! " #转化后输入到工控机。 计数 " 定时卡 采用凌华 !$% & ’()(, 检测大流量 (系 统 流 量) 、 输入轴转角、 输出轴转角和控制步进电机。计算机通过此 卡测试涡轮流量计 (大流量) 发出的脉冲的频率从而得到大流 量; 通过对编码器的计数可以得到输入轴和输出轴的转角; 通过 控制 $* & 、 方向和状态。 #+, & 和 -. & 控制步进电机的速度、 按钮信号、 行程开关 + " / 卡 采用研华 *$% & 012 " *$% & 011, 状态信号、 指示灯和电磁阀控制信号均为开关量信号, 计算机通 过 + " / 卡实现对这些开关量信号的检测和控制。 智能仪表 采集温度传感器和流量计的信号, 将其在控制面 板上动态显示, 并通过计算机 $/3 口进行通讯 ( ,4515) 使工控 机获得温度和流量两个参数的信号。 磁粉制动器控制器 采用工控机通过 $/3 (,4515) 控制输出 电流, 从而控制磁粉制动器的摩擦力。
插补算法——圆弧插补
17-6-16上午10:16H:\Matlab Do...\demo.m第 1 页,共 1 页%% 初始化clear,clcclose allwarning offfeature jit off%% 主程序% R代表所插补的圆的半径R=10;%ThetaAround代表所要插补的角度范围ThetaAround=[135,90;90,0;0,-45];;% Use_SN代表所在控制的插补方向% Use_S表示进行顺向插补 Use_N表示进行逆向插补Use_SN='Use_S';% 通过OCT_MControl函数进行插补并返回插补信息% Data是切削刀头的移动坐标数据% MovePosition是切削刀头的移动方向信息[Data,MovePosition]=OCT_MControl(ThetaAround,R,Use_SN);%% 作图,动态演示插补过程hold ongrid onaxis equalezplot(strcat('x^2+y^2=',num2str(R^2)),[-R,R]);mycomet(Data.X,Data.Y)function [Data,MovePosition]=OCT_MControl(ThetaAround,O_R,Use_SN) % 插补过程的总控制函数% 对于跨过几个象限的圆弧,程序可以分段对其每个象限圆弧进行插补Data.X=[];Data.Y=[];Data.Fm=[];% 确定插补段数for n=1:size(ThetaAround,1)% 将半径及角度信息转换为插补的起始与终止点坐标Position.X_FirstPosition=O_R*cosd(ThetaAround(n,1));Position.Y_FirstPosition=O_R*sind(ThetaAround(n,1));Position.X_EndPosition=O_R*cosd(ThetaAround(n,2));Position.Y_EndPosition=O_R*sind(ThetaAround(n,2));% 对每一象限的圆弧进行单独插补并返回数据TmpData{n,1}=OCT_GetData(OCT_Function(Position,Use_SN));% 记录移动方向信息MovePosition{n,1}=TmpData{n,1}.MovePosition;% 记录坐标及误差等数据信息Data.X=[Data.X;TmpData{n,1}.X];Data.Y=[Data.Y;TmpData{n,1}.Y];Data.Fm=[Data.X;TmpData{n,1}.Fm];endfunction mycomet(varargin)[ax,args,nargs] = axescheck(varargin{:});if nargs < 1error(message('MATLAB:narginchk:notEnoughInputs'));elseif nargs > 3error(message('MATLAB:narginchk:tooManyInputs'));endif nargs < 2, x = args{1}; y = x; x = 1:length(y); endif nargs == 2, [x,y] = deal(args{:}); endif nargs < 3, p = 0.10; endif nargs == 3, [x,y,p] = deal(args{:}); endif ~isscalar(p) || ~isreal(p) || p < 0 || p >= 1error(message('MATLAB:comet:InvalidP'));endax = newplot(ax);if ~ishold(ax)[minx,maxx] = minmax(x);[miny,maxy] = minmax(y);axis(ax,[minx maxx miny maxy])endco = get(ax,'colororder');m = length(x);k = round(p*m);if size(co,1)>=3colors = [ co(1,:);co(2,:);co(3,:)];lstyle = '-';elsecolors = repmat(co(1,:),3,1);lstyle = '--';endhead = line('parent',ax,'color',colors(1,:),'marker','o','linestyle','none', ...'xdata',x(1),'ydata',y(1),'Tag','head');body = matlab.graphics.animation.AnimatedLine('color',colors(2,:),...'linestyle',lstyle,...'Parent',ax,...'MaximumNumPoints',max(1,k),'tag','body');tail = matlab.graphics.animation.AnimatedLine('color',colors(3,:),...'linestyle','-',...'Parent',ax,...'MaximumNumPoints',1+m,'tag','tail');if ( length(x) < 2000 )updateFcn = @()drawnow;elseupdateFcn = @()drawnow('update');endfor i = 1:kpause(0.1);set(head,'xdata',x(i),'ydata',y(i));if ~( body.isvalid() )returnendaddpoints(body,x(i),y(i));updateFcn();enddrawnow;for i = k+1:mpause(0.1);set(head,'xdata',x(i),'ydata',y(i));if ~( body.isvalid() )returnendaddpoints(body,x(i),y(i));addpoints(tail,x(i-k),y(i-k));updateFcn();enddrawnow;for i = m+1:m+kpause(0.1);if ~( body.isvalid() )returnendaddpoints(tail,x(i-k),y(i-k));updateFcn();enddrawnow;endfunction [minx,maxx] = minmax(x) minx = min(x(isfinite(x)));maxx = max(x(isfinite(x)));if minx == maxxminx = maxx-1;maxx = maxx+1;endendfunction CurrentData=OCT_GetData(OriginData) % 提取插补返回信息% 因为插补返回的数据信息是进行的打包的% 所以还需要从打包的数据中把数据提取出来Tmp1=zeros(length(OriginData),4);Tmp2=[];for n=1:length(OriginData)Tmp1(n,1:3)=OriginData{n,1}.Data;Tmp2{n,1}=OriginData{n,1}.MovePosition; end% 重新构建数据CurrentData.X=Tmp1(:,1);CurrentData.Y=Tmp1(:,2);CurrentData.Fm=Tmp1(:,3);CurrentData.MovePosition=Tmp2;endfunction Message=OCT_Function(Position,Use_SN)% 对单个区间的圆弧进行插补并返回进程信息TmpData.Xm=abs(Position.X_FirstPosition);TmpData.Ym=abs(Position.Y_FirstPosition);TmpData.Fm=0;Message{1,1}.MovePosition='FirstPosition';Message{1,1}.Data=[Position.X_FirstPosition,Position.Y_FirstPosition,0]; StepNumber=abs(Position.X_FirstPosition-Position.X_EndPosition)+...abs(Position.Y_FirstPosition-Position.Y_EndPosition);switch Use_SNcase'Use_S'% 使用顺向插补的处理程序段for n=1:StepNumber% 判别所要插补的象限if Position.X_FirstPosition>=0 && Position.Y_FirstPosition>0 % SR1[TmpData,List]=OCT_SetData(OCT_ForS(TmpData,1),1);Message{n+1,1}=List;elseif Position.X_FirstPosition>0 && Position.Y_FirstPosition<=0 % SR4[TmpData,List]=OCT_SetData(OCT_ForS(TmpData,4),4);Message{n+1,1}=List;elseif Position.X_FirstPosition<0 && Position.Y_FirstPosition>=0 % SR2[TmpData,List]=OCT_SetData(OCT_ForS(TmpData,2),2);Message{n+1,1}=List;elseif Position.X_FirstPosition<=0 && Position.Y_FirstPosition<0 % SR3[TmpData,List]=OCT_SetData(OCT_ForS(TmpData,3),3);Message{n+1,1}=List;endendcase'Use_N'% 使用逆向插补的处理程序段for n=1:StepNumber% 判别所要插补的象限if Position.X_FirstPosition>0 && Position.Y_FirstPosition>=0 % NR1[TmpData,List]=OCT_SetData(OCT_ForN(TmpData,1),1);Message{n+1,1}=List;elseif Position.X_FirstPosition>=0 && Position.Y_FirstPosition<0 % NR4[TmpData,List]=OCT_SetData(OCT_ForN(TmpData,4),4);Message{n+1,1}=List;elseif Position.X_FirstPosition<=0 && Position.Y_FirstPosition>0 % NR2[TmpData,List]=OCT_SetData(OCT_ForN(TmpData,2),2);Message{n+1,1}=List;elseif Position.X_FirstPosition<0 && Position.Y_FirstPosition<=0 % NR3[TmpData,List]=OCT_SetData(OCT_ForN(TmpData,3),3);Message{n+1,1}=List;endendendendfunction [TheNowPosition,RuternMessage]=OCT_SetData(TheLastPosition,Quadrant)% 将切削信息打包返回,切削刀头坐标位置进行更新% 将上次插补的结束点坐标变为下次插补的开始点坐标TheNowPosition.Xm=TheLastPosition.NewXm;TheNowPosition.Ym=TheLastPosition.NewYm;TheNowPosition.Fm=TheLastPosition.NewFm;% 装载刀头的移动方向信息RuternMessage.MovePosition=TheLastPosition.MovePosition;% 因为插补数据中的Xm、YM信息是取了绝对值的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机电工程学院数控加工技术课程设计——插补算法实现学号:S311077006专业:机械工程学生姓名:胡晓锋任课教师:李霞副教授2011年4月基于PC的圆弧曲线加减速算法实现插补算法一直以来就是数控系统中的核心技术。
从数控系统的原理来说,插补的本质问题就是对任意曲线进行分解,成为若干段微小的曲线,当对曲线的分解达到无穷级时,每一段曲线便成为微小的直线段。
然后利用与相应微小曲线相类似的直线段代替,通过控制刀具按直线段行走进行加工,完成为整个曲线的插补运算加工。
实际问题中不可能对任意曲线的分解达到无穷,因此总是存在相应的误差。
然而在实际运用中对误差的容忍度有限,因此只需在满足精度的情况下进行曲线的分解。
对曲线的分解过程即是将其坐标点进行密化,不但要保证精度,还需要在极短的时间内完成。
受现代技术的限制,这一过程目前还存在一定的问题。
由此而产生的对插补算法的研究也一直没有停止过,从经典的逐点比较法到现在的自由曲面直接插补法,各种算法层出不穷。
本次对圆弧的插补算法是基于PC技术的算法,利用MATLAB软件编写相应的插补程序,实现对插补轨迹的模拟与分析。
一、问题描述本次设计针对圆弧曲线进行插补,采用加减速的方式完成刀具的行走过程。
根据数据采样插补原理,实现数控轨迹的密化。
本次插补的难点在于对刀具行走轨迹的自动加减速进行控制,由控制器发出相应指令,当刀具以不同速度运行到不同位置时,能够根据当前的状态判断下一个插补周期需要的状态,从而连续平滑的完成插补过程。
二、速度曲线的数学表达式刀具在进行插补时的速度应该是一个加速-匀速-减速的过程,各个过程与时间的关系应该由相应的加速度来控制。
因此曲线的形状呈现一定的抛物线形。
另初始进给速度为F1,末端进给速度为F2,指令速度为F,当前速度为V,减速距离为S,当前距离为CS,n为插补周期个数,t为当前时刻。
则速度的数学表达式如下:(F1<F)&&(CS>S),起始时刀具加速运动。
F1<F/2,加速度为2=;a tnF1>=F/2,加速度为a=(F1>=F)&&(CS>10),刀具做匀速运动。
(F1>=F)&&(CS<S),刀具做减速运动。
V<4F2,加速度为a=V>=F/2,加速度为2=。
a tn其速度曲线如图2.1所示。
图2.1 圆弧插补速度曲线三、插补轨迹的数学表达式本次插补对象为圆弧,因此其数学表达式为222+= (3-1)X Y R这里对圆弧第一象限部分进行插补,利用MATLAB软件进行图形绘制,这里令圆直径为50,其M函数如下:x1=50;y1=0;x2=0;y2=50;r=50;i=0:pi/20:1/2*pi plot(r*cos(i),r*sin(i)); 其圆弧轨迹如图3.1所示。
图3.1 圆弧轨迹四、 插补原理设被插补圆弧如图4.1所示,其半径为R ,圆心位于坐标原点O ,端点为A 和C 。
根据采样插补原理,圆弧插补的任务是,沿给定的圆弧轨迹在两端点之间进行坐标密化,并使插补点之间的距离i L ∆满足速度和精度要求。
根据图中关系,位于圆弧轨迹上的插补点坐标可按下式求得:cos sin i ii ix R y R θθ== (4-1)这样,根据进给方向、进给速度和精度要求控制i θ的增加或减少,即可控制懂点沿圆弧轨迹逆时针或顺时针运动,从而实现逆圆或顺圆插补。
图4.1 圆弧插补原理由于式(4-1)就是圆弧的参数方程,因此可确保其计算的插补点位于圆弧指令轨迹上。
剩下的问题是,如何使插补速度和逼近误差满足要求,为此采取以下措施。
(1)速度控制由图3可知,两相邻插补点对应的位置角有以下关系:1i i i θθθ-=+∆ (4-2) 式中i θ∆为步距角(插补直线段i L ∆对应的圆心角)。
如果对步距角进行控制,使其满足60000i i i L F TR Rθ∆∆∆≈= (4-3) 式中i F 为进给速度(/min mm ); T ∆为插补周期(ms )。
则可使插补误差的运动速度满足给定的进给速度i F 。
(2)误差控制为满足误差的要求,可按给定的允许误差对i θ∆进行约束控制,使其最大值满足max θ∆=式中e 为所允许的最大径向误差。
这样,实际运行过程中各种若max i θθ∆<∆,则按式(4-3)求出的i θ∆进行插补运算,否则按max i θθ∆=∆进行插补运算。
因为式(4-4)的计算可在预处理阶段完成,所以上述误差控制不会影响插补的实时性。
五、 柔性加减速控制为充分利用机床的有效工作行程,要求机床运动具有极短的加减速过渡过程。
而仅从时间上去考虑缩短过渡过程,而不对机床的加减速动态过程进行合理的控制,必将给击穿钢结构带来很大的冲击。
为解决问题,一方面要求数控系统能因机而异,另一方面需在控制系统中采用特殊方法来实现这种动态规律。
显然,传统数控系统采用的固定加减速控制方法是无法实现这一要求的。
为此采用一种可根据任意曲线对数控机床的运动进行自动加减速控制的方法。
这种方法将自动加减速控制有传统的固定模式推向新的柔性模式,为有效提高数控机床的动态性能探索出一条新的途径。
在数控系统软件中,设计一条通用的与加减速数据库内容无关的通道,由其独立完成加减速计算和轨迹控制。
该方法的实现原理图如图5.1所示。
图5.1 柔性加减速控制原理图1、柔性自动加速控制设给定的加速曲线如图5.2所示,现将其作为样板以数表形式存放于加减速曲线库中。
图中,d f 为加速过程进给速度总该变量(样板速度差),d t 为加速过程所需时间(样板加速时间)。
根据加速曲线数表实现加速控制的过程如下: 根据加速开始前的进给速度F1,加速过程结束后进给速度F2,求出加速过程速度差21D F F F =-,并据此计算出实际速度差与样板速度差的比值21D F F F =- (5-1)根据加速开始前到当前时刻所经过的插补周期个数n ,计算出查表时间(T ∆为采样时周期/n t Tn K =∆ (5-2)根据n t 差加速曲线表可得样板速度增量n f 。
由此可计算出经过n 个插补周期后实际速度的该变量n n F f K ∆= (5-3)进一步,经求出的n 周期速度该变量n F ∆代入下式,求出当前插补周期的实际进给速度1i n F F F =+∆ (5-4)最后,根据所求得的i F 计算当前采样周期中插补直线的长度,并据此进行归集计算,即可实现满足图5.3所示曲线要求的自动加速控制。
图5.2自动加速曲线 图5.3 自动减速曲线2、自动减速控制设给定的减速曲线如图5.3所示,如同加速控制一样将去作为样板以数表的形式存放于加减速曲线库中。
根据加速曲线数表实现自动减速控制的过程如下:同加速过程一样,减速过程速度差为12D F F F =-。
按照与加速控制相同的过程,求出查表时间n t ,并查减速曲线表得样板速度增量n f ,由此可计算出经过n 个插补周期后实际速度的改变量n D n F F f K ∆=- (5-5)进一步,将求出的n 周期改变量n F ∆代入下式,求出当前插补周期的实际进给速度1i n F F F =-∆ (5-6)最后,根据i F 计算当前插补周期中插补直线段的长度,并据此进行轨迹计算,即可实现满足图5.4所示曲线要求的自动减速控制。
对于自动减速控制,减速前还需要预测减速点,以决定何时开始减速。
确定减速点的依据是减速距离s ,其计算公式为:21212()2d d d dF F F F s s t F f f --=+ (5-7) 式中d t 为样板减速时间;d s 为样板减速距离。
样板减速距离d s 可通过下式以离线方式预先求出,并存储于加减速数据库中。
1()dmt d i i s f t dt f t ==≈∆∑⎰ (5-8)式中i f 为样板减速曲线()f t 的离散取值;m 为样板减速曲线离散点总数;t ∆为竖直几分的时间增量。
六、 程序流程图插补程序流程图如图6.1所示图6.1 程序流程图七、代码插补程序部分代码如下:clear allv1=input('输入起始速度')v2=input('输入末端速度')x1=100;y1=0;x2=0;y2=100;R=100;x=x1;y=y1;X=[x];Y=[y];T=0.01;t=0;N=[t];v0=30;v=v1;V=[v];a_max=10;a=0;A=[a];rad=0;status=1;if (v2>v0)&&((v2-v0)>(a_max/2)) %距离判断res_s=(v0+v2)/2*((v2-v0)/a_max+1/2);elseres_s=(v0+v2)*sqrt((v2-v0)/a_max/2);endif (v2<v0)&&(v0-v2)>(a_max/2)res_s=(v0+v2)/2*((v0-v2)/a_max+1/2);elseres_s=(v0+v2)*sqrt((v0-v2)/a_max/2);endif v2==v0res_s=0;endc_s=R*pi/2;while rad<(pi/2)while c_s>res_st=t+T;switch statuscase 1if v1<v0 %加速if (v0-v1)<=(1/2*a_max)if (v-v1)<(v0-v)ap=a;a=2*a_max*t;a1=a;t1=t;elseap=a;a=a1-2*a_max*(t-t1);endvp=v;v=v+1/2*(a+ap)*T;if (v>v0)a=0;v=v0;endelseif (v0-v)>(1/4*a_max)if a<a_max ap=a;a=2*a_max*t;vp=v;v=v+1/2*(a+ap)*T;elsea=a_max;vp=v;v=v+a*T;enda2=a;t2=t;elseap=a;a=a2-2*a_max*(t-t2);vp=v;v=v+1/2*(a+ap)*T;if (v>v0)a=0;v=v0;endendendendif v1>v0 %减速if (v1-v0)<=(1/2*a_max)if (v1-v)<(v-v0) ap=a;a=-2*a_max*t;a1=a;t1=t;elseap=a;a=a1+2*a_max*(t-t1);endvp=v;v=v+1/2*(a+ap)*T;if (v<v0)a=0;v=v0;endelseif (v-v0)>(1/4*a_max)if a>(-a_max) ap=a;a=-2*a_max*t;vp=v;v=v+1/2*(a+ap)*T;elsea=-a_max;vp=v;v=v+a*T;enda2=a;t2=t;elseap=a;a=a2+2*a_max*(t-t2);vp=v;v=v+1/2*(a+ap)*T;if (v<v0)a=0;v=v0;endendendendendrad=rad+p_rad;x=R*cos(rad);y=sqrt(R*R-x*x);c_s=R*(pi/2-rad);X=[X x];Y=[Y y];V=[V v];A=[A a];N=[N t];t3=t;endx=x2;y=y2;X=[X x];Y=[Y y];plot(N,V,'r')figureplot(X,Y,'g')figureplot(N,A,'b')八、结果分析在MATLAB程序窗口输入以上命令并点击运行之后,输入相应的参数,可得到以下数据:速度曲线、加速度曲线、圆弧轨迹。