多项式轨迹--七次多项式轨迹

多项式轨迹–七次多项式

1.6 Polynomial of degree seven

在某些特定场合,可能需要定义更高阶次的多项式来获得平滑的轨迹。具有七次的多项式如下
q ( t ) = a 0 + a 1 ( t − t 0 ) + a 2 ( t − t 0 ) 2 + a 3 ( t − t 0 ) 3 + a 4 ( t − t 0 ) 4 + a 5 ( t − t 0 ) 5 + a 6 ( t − t 0 ) 6 + a 7 ( t − t 0 ) 7 (1-26) q(t)=a_0+a_1(t-t_0)+a_2(t-t_0)^2+a_3(t-t_0)^3+a_4(t-t_0)^4+\\ a_5(t-t_0)^5+a_6(t-t_0)^6+a_7(t-t_0)^7 \\ \tag{1-26} q(t)=a0+a1(tt0)+a2(tt0)2+a3(tt0)3+a4(tt0)4+a5(tt0)5+a6(tt0)6+a7(tt0)7(1-26)
七次多项式可以指定八个边界条件
q ( t 0 ) = q 0 , q ˙ ( t 0 ) = v 0 , q ¨ ( t 0 ) = a c c 0 , q ( 3 ) ( t 0 ) = j 0 , q ( t 1 ) = q 1 , q ˙ ( t 1 ) = v 1 , q ¨ ( t 1 ) = a c c 1 , q ( 3 ) ( t 1 ) = j 1 , \begin{matrix} q(t_0)=q_0, & \dot{q}(t_0)=v_0, & \ddot{q}(t_0)=acc_0, &q^{(3)}(t_0)=j_0, \\ q(t_1)=q_1, & \dot{q}(t_1)=v_1, & \ddot{q}(t_1)=acc_1, &q^{(3)}(t_1)=j_1, \\ \end{matrix} q(t0)=q0,q(t1)=q1,q˙(t0)=v0,q˙(t1)=v1,q¨(t0)=acc0,q¨(t1)=acc1,q(3)(t0)=j0,q(3)(t1)=j1,
定义 T = t 1 − t 0 T=t_1-t_0 T=t1t0 h = q 1 − q 0 h=q_1-q_0 h=q1q0,系数 a i , i = 0 , … , 7 a_i,i=0,\ldots,7 ai,i=0,,7可求得
{ a 0 = q 0 a 1 = v 0 a 2 = a c c 0 2 a 3 = j 0 6 a 4 = 210 h − T [ ( 30 a c c 0 − 15 a c c 1 ) T + ( 4 j 0 + j 1 ) T 2 + 120 v 0 + 90 v 1 ] 6 T 4 a 5 = − 168 h + T [ ( 20 a c c 0 − 14 a c c 1 ) T + ( 2 j 0 + j 1 ) T 2 + 90 v 0 + 78 v 1 ] 2 T 5 a 6 = 420 h − T [ ( 20 a c c 0 − 39 a c c 1 ) T + ( 4 j 0 + 3 j 1 ) T 2 + 216 v 0 + 204 v 1 ] 6 T 6 a 7 = − 120 h + T [ ( 12 a c c 0 − 12 ∗ a c c 1 ) T + ( j 0 + j 1 ) T 2 + 60 v 0 + 60 v 1 ] 6 T 7 \begin{cases} a_0=q_0&\\ a_1=v_0 &\\ a_2=\frac{acc_0}{2}&\\ a_3=\frac{j_0}{6}\\ a_4=\frac{210h-T[(30acc_0-15acc_1)T+(4j_0+j_1)T^2+120v_0+90v_1]}{6T^4}&\\ a_5=\frac{-168h+T[(20acc_0-14acc_1)T+(2j_0+j_1)T^2+90v_0+78v_1]}{2T^5} &\\ a_6=\frac{420h-T[(20acc_0-39acc_1)T+(4j_0+3j_1)T^2+216v_0+204v_1]}{6T^6}\\ a_7=\frac{-120h+T[(12acc_0-12*acc_1)T+(j_0+j_1)T^2+60v_0+60v_1]}{6T^7} \end{cases} a0=q0a1=v0a2=2acc0a3=6j0a4=6T4210hT[(30acc015acc1)T+(4j0+j1)T2+120v0+90v1]a5=2T5168h+T[(20acc014acc1)T+(2j0+j1)T2+90v0+78v1]a6=6T6420hT[(20acc039acc1)T+(4j0+3j1)T2+216v0+204v1]a7=6T7120h+T[(12acc012acc1)T+(j0+j1)T2+60v0+60v1]
Eample 2.11:根据下面的条件利用七次多项式确定运动轨迹
t 0 = 0 , t 1 = 8 , q 0 = 0 , q 1 = 10 , v 0 = 0 , v 1 = 0 , a c c 0 = 0 , a c c 1 = 0 , j 0 = 0 , j 1 = 0. \begin{matrix} t_0=0,&t_1=8,\\ q_0=0,&q_1=10,\\ v_0=0,&v_1=0,\\ acc_0=0,&acc_1=0,\\ j_0=0,&j_1=0. \end{matrix} t0=0,q0=0,v0=0,acc0=0,j0=0,t1=8,q1=10,v1=0,acc1=0,j1=0.
结果如下图所示

在这里插入图片描述

图 9 七次多项式轨迹

matlab仿真代码参见examplesCode文件夹下的example2_11.m文件

%example2.11,七次多项式轨迹
clc
clear
close('all')
%轨迹定义条件
t0=0;t1=8;
q0=0;q1=10;
v0=0;v1=0;
acc0=0;acc1=0;
j0=0;j1=0;
%利用(1-26)式求系数
h=q1-q0;
T=t1-t0;

a0=q0;
a1=v0;
a2=acc0/2;
a3=j0/6;
a4=1.0/(6*power(T,4))*(210*h-T*((30*acc0-15*acc1)*T+(4*j0+j1)*T*T+120*v0+90*v0));
a5=1.0/(2*power(T,5))*(-168*h+T*((20*acc0-14*acc1)*T+(2*j0+j1)*T*T+90*v0+78*v1));
a6=1.0/(6*power(T,6))*(420*h-T*((45*acc0-39*acc1)*T+(4*j0+3*j1)*T*T+216*v0+204*v1));
a7=1.0/(6*power(T,7))*(-120*h+T*((12*acc0-12*acc1)*T+(j0+j1)*T*T+60*v0+60*v1));
%计算轨迹
t=linspace(t0,t1,100);
%位置
q=a0+a1*power(t-t0,1)+a2*power(t-t0,2)+a3*power(t-t0,3)+a4*power(t-t0,4)+...
    +a5*power(t-t0,5)+a6*power(t-t0,6)+a7*power(t-t0,7);
%速度
v=a1+2*a2*power(t-t0,1)+3*a3*power(t-t0,2)+4*a4*power(t-t0,3)+5*a5*power(t-t0,4)+...
    +6*a6*power(t-t0,5)+7*a7*power(t-t0,6);
%加速度
acc=2*a2+2*3*a3*power(t-t0,1)+3*4*a4*power(t-t0,2)+4*5*a5*power(t-t0,3)+...
    +5*6*a6*power(t-t0,4)+6*7*a7*power(t-t0,5);
%加加速度
j=2*3*a3+2*3*4*a4*power(t-t0,1)+3*4*5*a5*power(t-t0,2)+...
    +4*5*6*a6*power(t-t0,3)+5*6*7*a7*power(t-t0,4);

%绘图
subplot(4,1,1)
plot(t,q,'r');
hold on
axis([0,8,-1,12])
ylabel('position')
grid on
subplot(4,1,2)
plot(t,v,'b');
hold on
 axis([0,8,-1,3])
ylabel('velocity')
grid on
subplot(4,1,3)
plot(t,acc,'g');
axis([0,8,-1.5,1.5])
ylabel('acceleration')
grid on
subplot(4,1,4)
plot(t,j,'k');
axis([0,8,-1.1,1])
ylabel('jerk')
grid on

参考文献:

[1]Biagiotti L, Melchiorri C. Trajectory Planning for Automatic Machines and Robots[M]. Springer Berlin Heidelberg, 2009.

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: matlab中七次多项式轨迹函数是用于生成七次多项式曲线的函数。七次多项式曲线是一种高次多项式曲线,由七个系数控制。在matlab中,可以使用polyfit函数来拟合七次多项式曲线,并使用polyval函数计算曲线上的点。 使用matlab的polyfit函数,可以通过给定的一组数据点,得到七次多项式曲线的系数。函数的语法为: p = polyfit(x, y, 7) 其中,x是一个包含数据点的x坐标的向量,y是一个包含数据点的y坐标的向量,7表示生成七次多项式曲线。函数会返回一个包含七次多项式曲线系数的向量p。 然后,可以使用matlab的polyval函数计算七次多项式曲线上的点。函数的语法为: yfit = polyval(p, x) 其中,p是前面polyfit函数返回的七次多项式曲线系数,x是一个包含要计算的点的x坐标的向量。函数会返回一个包含计算得到的七次多项式曲线上的点的y坐标的向量yfit。 通过这样的步骤,我们可以生成并计算七次多项式曲线上的点。根据需要,可以使用plot函数将计算得到的点连接起来,以可视化七次多项式轨迹。 ### 回答2: Matlab中的七次多项式轨迹函数主要是用来生成七次多项式曲线,以模拟实际运动或数据趋势。该函数可以通过给定的起始点、终点和其他条件,生成一个七次多项式方程,以得到一个平滑的曲线。 七次多项式轨迹函数可以使用Matlab中的polyfit和polyval函数来实现。首先,我们需要根据给定的起始点和终点,使用polyfit函数拟合一个七次多项式。然后,使用polyval函数来计算曲线上的各个点的坐标。 具体步骤如下: 1. 定义起始点和终点的坐标,例如起始点为(x1, y1)、终点为(x2, y2)。 2. 使用polyfit函数拟合七次多项式,如coeff = polyfit([x1, x2], [y1, y2], 7)。 3. 使用polyval函数计算曲线上的坐标,如x = linspace(x1, x2, 100)生成100个坐标点,然后y = polyval(coeff, x)计算对应的y坐标。 4. 最后,可以将生成的曲线绘制出来,使用plot函数绘制(x, y)。 七次多项式轨迹函数的具体特点是可以生成较复杂的曲线,能够充分拟合各种实际数据和运动过程。然而,由于七次多项式的复杂性,可能会导致过拟合问题,因此需要根据实际情况选择合适的拟合程度。 总之,Matlab中的七次多项式轨迹函数是一个强大的工具,可以生成平滑的七次多项式曲线,用于模拟实际运动或数据趋势。 ### 回答3: MATLAB中七次多项式轨迹函数可以使用`polyfit`函数来实现。`polyfit`函数可以拟合给定数据点,返回一个多项式的系数。 首先,准备好数据点的横坐标和纵坐标。假设有n个数据点,可以用两个一维数组存储,分别表示横坐标和纵坐标。假设用`x`表示横坐标数组,`y`表示纵坐标数组。 然后,使用`polyfit`函数拟合数据点,得到一个七次多项式的系数。语法如下: ```matlab p = polyfit(x, y, 7); ``` 其中,`x`和`y`为数据点的横坐标和纵坐标,`7`表示要拟合的多项式的次数。 拟合完成后,我们可以使用`polyval`函数来求解多项式在给定横坐标上的取值。语法如下: ```matlab y_fit = polyval(p, x_fit); ``` 其中,`p`为拟合得到的七次多项式系数,`x_fit`为给定的横坐标。 使用以上方法,可以轻松实现MATLAB中的七次多项式轨迹函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy_Robot

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值