机械臂速成小指南(十四):多项式插值轨迹规划

这篇具有很好参考价值的文章主要介绍了机械臂速成小指南(十四):多项式插值轨迹规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

👨‍🏫🥰🥳需要机械臂相关资源的同学可以在评论区中留言哦🤖😽🦄

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

 

指南目录📖:

🎉🎉机械臂速成小指南(零点五):机械臂相关资源🎉🎉

机械臂速成小指南(零):指南主要内容及分析方法

机械臂速成小指南(一):机械臂发展概况

机械臂速成小指南(二):机械臂的应用

机械臂速成小指南(三):机械臂的机械结构

机械臂速成小指南(四):机械臂关键部件之减速机

机械臂速成小指南(五):末端执行器

机械臂速成小指南(六):步进电机驱动器

机械臂速成小指南(七):机械臂位姿的描述方法

机械臂速成小指南(八):运动学建模(标准DH法)

机械臂速成小指南(九):正运动学分析

机械臂速成小指南(十):可达工作空间

机械臂速成小指南(十一):坐标系的标准命名

机械臂速成小指南(十二):逆运动学分析

机械臂速成小指南(十三):轨迹规划概述

机械臂速成小指南(十四):多项式插值轨迹规划

机械臂速成小指南(十五):线性规划

机械臂速成小指南(十六):带抛物线过渡的线性规划

机械臂速成小指南(十七):直线规划 

机械臂速成小指南(十八):圆弧规划

机械臂速成小指南(十九):机械臂的电路板抓取实验

机械臂速成小指南(二十):机械臂的位姿重复性实验

机械臂速成小指南(二十一):几何雅可比矩阵

机械臂速成小指南(二十二):机械臂逆运动学的数值解方法

机械臂速成小指南(二十三):Paul方法求解机械臂运动学逆解(含matlab代码) 

🦾🌏🪐以下为正文🦾🌏🪐

        多项式插值(polynomial interopolation)在工业中的应用十分常见,常用的几种多项式插值法有:直接法、拉格朗日插值法和牛顿插值法。多项式插值轨迹规划也是一种常用的关节空间轨迹规划方法。

        下面,我们将以机械臂作点对点运动为例,从理论分析程序仿真实际应用三个方面对多项式插值轨迹规划进行介绍。

一、三次多项式(cubic polynomial)插值轨迹规划

1.理论分析

        点对点运动的过程中,机械臂必须在规定的时间t_f内到达目标点,各个关节也从初始状态转变为期望状态。

        机械臂初始位姿与期望位姿均已知,那么我们通过逆运动学运算就可以得到这两个状态下的关节变量。

        设初始时刻为t_0,则我们需要将每一个关节在(t_0,t_f)时间内的角度变化与时间的关系使用三次多项式进行描述,该多项式称为关节角度函数。以关节1为例,初始角度为θ_0,期望角度为θ_f。那么,关节1的关节角度函数曲线一定通过(t_0,t_0)与点(t_f,t_f)。

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab
关节1角度曲线可能的几种形状

        为了确定该三次多项式的4个系数,我们必须找到4个约束条件。我们已经知道了初始时刻与终止时刻机械臂的状态,这就可以确定2个约束条件,即

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

        此时,还缺少2个约束条件。由于机械臂进行的是点对点运动,机械臂的各关节角速度在t_0t_f 时刻均为0,可表示为

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

        该三次多项式可表示为

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

        则关节角速度与关节角加速度可分别表示为上述三次多项式的一次导数与二次导数,即

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

        将4个约束条件与上式联立即可得到三次多项式的4个系数,即

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

2.程序仿真

        使用MATLAB中的RTB工具箱对该轨迹规划方法进行仿真:

        首先,定义3个数组用于储存机械臂关节的角度、角速度及角加速度,用于绘制图像。

q = zeros(step,N);   %初始化机械臂关节的角度
qd = zeros(step,N);  %初始化机械臂关节的角速度
qdd = zeros(step,N); %初始化机械臂关节的角加速度

        第二步,按照上一小节中的计算思路计算多项式的4个系数。

a_0 = init_ang;                        %三次多项式的第1个系数
a_1 = zeros(1,6);                      %三次多项式的第2个系数
a_2 = 3/(step^2)*(targ_ang-init_ang);  %三次多项式的第3个系数
a_3 = -2/(step^3)*(targ_ang-init_ang); %三次多项式的第4个系数

        第三步,计算正运动学方程、输出末端轨迹并进行动画演示。

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

T=robot.fkine(q);  %运动学正解
nT=T.T;  %转为齐次变换矩阵
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));  %输出末端轨迹
title('三次多项式插值轨迹');
robot.plot(q);  %动画演示

        最后一步,将关节的角度曲线、角速度曲线以及角加速度曲线绘制出来。

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

figure(f)
subplot(6, 1, 1);
plot(q(:,1));
title('关节1角度(三次多项式插值)');

机械臂轨迹规划之三次多项式插值规划matlab仿真程序https://download.csdn.net/download/m0_53966219/87521943?spm=1001.2014.3001.5503

3.编程实现

        与仿真不同的一点是,在对机械臂进行实际控制时,是要考虑到轨迹点生成个数对于轨迹精度的影响的。因为关节变量与时间的函数是连续的,但我们所发送给上位机的指令实际上是一个个离散的轨迹点对应的关节变量。生成的轨迹点太多,运算量会增加;生成的轨迹点太少,机械臂的运行轨迹就会不够平滑。

        本文使用python编写上位机完成轨迹规划中的运算。

        首先,需要检测轨迹规划运算结果是否在机械臂的可达工作空间以及关节限度之内。

if (J1newAng < J1NegAngLim or J1newAng > J1PosAngLim) or (J2newAng < J2NegAngLim or J2newAng > J2PosAngLim) or (J3newAng < J3NegAngLim or J3newAng > J3PosAngLim) or (J4newAng < J4NegAngLim or J4newAng > J4PosAngLim) or (J5newAng < J5NegAngLim or J5newAng > J5PosAngLim) or (J6newAng < J6NegAngLim or J6newAng > J6PosAngLim or TrackNew < 0 or TrackNew > TrackLength):
    almStatusLab.config(text="AXIS LIMIT", bg = "red")
    almStatusLab2.config(text="AXIS LIMIT", bg = "red")
    tab1.runTrue = 0

        其次,对于每一个关节进行运算,以关节1为例:

J1calcAng = float(J1newAng) - float(J1AngCur)
J1steps = int(J1calcAng / J1DegPerStep)
J1StepCur = J1StepCur + J1steps #Invert
J1AngCur = round(J1NegAngLim + (J1StepCur * J1DegPerStep),2) #四舍五入,小数点为2
J1steps = str(J1steps)

        最后,生成指令字符串。

J1curAngEntryField.delete(0, 'end')
J1curAngEntryField.insert(0,str(J1AngCur))
机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab
使用AE追踪机械臂末端在空间中的运行轨迹

二、五次多项式(quintic polynomial)插值轨迹规划

1.理论分析

        当我们使用五次多项式对关节空间轨迹进行插值时,需要求解对应的6个系数,即与上文相比,我们需要再设定2个约束条件

        为保证关节速度函数的连续,假设在t_0t_f 时刻,机械臂的各关节角加速度为0,即

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

        此时我们可以唯一确定一个五次多项式,同样令t_0=0 ,该多项式可表示为

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

        将6个约束条件与上式联立,可得到五次多项式的系数为

机械臂三次多项式插值,机械臂速成小指南,机械臂,经验分享,单片机,嵌入式硬件,matlab

2.程序仿真

        我们使用MATLAB的RTB工具箱中自带函数jtraj()完成五次多项式轨迹规划的仿真:

[qt,qdt,qddt] = jtraj(q0, q1, tv, qd0, qd1)

        其中,qt、qdt、qddt分别为关节的旋转角度、角速度以及角加速度;q0、q1分别为关节的初始角度与终止角度;tv为生成的轨迹点个数;qd0与qd1分别为机械臂在起始点处及终止点处的速度,默认为0。

        关键代码段如下所示。

%轨迹规划
f = 1;
figure(f)
step = 50;
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
grid on
T=robot.fkine(q);  %根据插值,得到末端执行器位姿
nT=T.T;
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹

        其余代码与三次多项式轨迹规划仿真一致。

机械臂轨迹规划之五次多项式插值规划matlab仿真代码https://download.csdn.net/download/m0_53966219/87521950?spm=1001.2014.3001.5503文章来源地址https://www.toymoban.com/news/detail-823356.html

到了这里,关于机械臂速成小指南(十四):多项式插值轨迹规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合

    参考: https://blog.csdn.net/mao_hui_fei/article/details/103821601 1、多项式函数回归拟合 x ^3+ x ^2… 2、多项式函数插值拟合 对于插值函数 interp1d(phone_time, phone_x, kind=‘cubic’),无法直接获取多项式的参数与具体函数表达式。这是因为该函数使用样条插值方法,它的内部实现是基于一组数

    2024年02月16日
    浏览(77)
  • Lagrange插值法实验:求拉格朗日插值多项式和对应x的近似值matlab实现(内附代码)

    已知函数表: 求出Lagrange 插值多项式,并计算x=1.2处的y的近似值。 求解多项式: 求解近似值: 请输入横坐标向量X: X=[1, 2, 4, 5] 请输入纵坐标向量Y: Y=[16,12,8,9] 基函数为: q1(x)=(11 x^2)/12 - (19 x)/6 - x^3/12 + 10/3 q2(x)=(29 x)/6 - (5 x^2)/3 + x^3/6 - 10/3 q3(x)=(4 x^2)/3 - (17 x)/6 - x^3/6 + 5/3 q4(x)=

    2024年02月08日
    浏览(51)
  • 机器人在笛卡尔空间和关节空间的多项式轨迹规划以及matlab代码(三次、五次、七次)

    三次多项式轨迹规划就是s(t)相对于时间t的变化满足三次多项式变化,其表达式如下:                      如前文所述:t的取值范围是[0,T],s(t)的取值范围是[0,1], 又因为初始速度和末速度都为0,所以: S(t)的一阶导数表达式为: 从而可以计算出对应的系数: 将

    2024年01月17日
    浏览(45)
  • MATLAB仿真UR5机器人simulink simscape 自制建模 正向运动学,逆向运动学关节空间轨迹规划 五次多项式轨迹规划

    MATLAB仿真UR5机器人simulink simscape 自制建模  正向运动学,逆向运动学 关节空间轨迹规划 五次多项式轨迹规划 笛卡尔空间轨迹规划 直线插补    还包含机器人工具箱建立的模型对比 MATLAB仿真UR5机器人simulink simscape 自制建模及运动学规划 摘要:本文介绍了利用MATLAB仿真UR5机器

    2024年02月04日
    浏览(68)
  • AA@有理系数多项式@整系数多项式@本原多项式@有理多项式可约问题

    有理数域上一元多项式的因式分解. 作为 因式分解定理 的一个特殊情形,我们有结论: 每个次数大等于1的 有理系数多项式 都能 唯一地 分解成 不可约的有理系数多项式 的乘积. 有理数域版本中,从一般数域具体到了\\\" 有理系数 \\\" 我们讨论多项式的时候,都假设多项式是在某个数

    2024年02月16日
    浏览(51)
  • P4725 【模板】多项式对数函数(多项式 ln)

    洛谷P4725 【模板】多项式对数函数(多项式 ln) 题目大意 给你一个 n − 1 n-1 n − 1 次多项式 A ( x ) A(x) A ( x ) ,求一个   m o d   x n bmod x^n mod x n 下的多项式 B ( x ) B(x) B ( x ) ,满足 B ( x ) ≡ ln ⁡ A ( x ) B(x)equiv ln A(x) B ( x ) ≡ ln A ( x ) 。 在   m o d   998244353 bmod 998244353 mo

    2024年02月03日
    浏览(56)
  • 用链表表示多项式,并实现多项式的加法运算

    输入格式: 输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。 输出格式: 对每一组输入,在一行中输出POLYA+POLYB和多项式的系数和指数。 输入样例: 输出样例: 本

    2024年02月07日
    浏览(71)
  • 机械臂速成小指南(零点五):机械臂相关资源

    六自由度机械臂下位机代码及pcb设计 https://download.csdn.net/download/m0_53966219/88480657?spm=1001.2014.3001.5503 六自由度机械臂上位机python代码(带详细注释) https://download.csdn.net/download/m0_53966219/87521956?spm=1001.2014.3001.5503 ar2型机械臂DH参数及源码 https://download.csdn.net/download/m0_53966219/8848064

    2023年04月14日
    浏览(40)
  • 基于MATLAB的矩阵性质:行列式,秩,迹,范数,特征多项式与矩阵多项式

    本节主要讨论矩阵的基本概念和性质,结合MATLAB的基础代码,适合新手。 矩阵的 行列式 的数学定义如下: MATLAB调用的格式如下: 求以下矩阵的行列式: 解: MATLAB代码如下: 运行结果: ans =    5.1337e-13 利用解析解的方法计算20✖️20的Hilbert矩阵的行列式,并分析其代码运

    2024年02月05日
    浏览(64)
  • 【C 数据结构】 用单链表存储一元多项式,并实现两个多项式相加运算。

    本次代码纯c语言,可以支持输入两个多项式的项式、系数、指数。 实验目的: 1 掌握单链表的基本工作原理; 2 实现链式存储下的两个多项式的相加。 实验步骤 1 定义链式存储的数据结构 2 完成多项式的初始化,即给多项式赋初值 3 完成多项式的输出 4 实现多项式的相加及结

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包