从上图中我们可以得到如下信息:

    1. 速度截面是一个抛物线
    1. P0P_0P0​、V0V_0V0​是上一次指定的,P1P_1P1​、V1V_1V1​是当前期望的,TA是当前期望的运动时间
    1. A0A_0A0​是上一次计算的,A1A_1A1​是当前计算的,加加速度dA/dtdA/dtdA/dt是常数

根据上述几条信息,可以看出轨迹插补方式有点类似于三次多项式。


此图下方接下来有一段话:

PVT mode provides excellent contouring capability, because it takes the interpolated commanded path exactly through the programmed points. It creates a path known as a “Hermite spline”. To use PVT mode for this multi-axis contouring, the axis velocities at each programmed point must be specified in addition to the positions.

划关键词Hermite spline,结合文首推测,应该是用的三次Hermite曲线,不了解Hermite曲线的朋友可以移步这篇文章:传送门

这里直接给出三次Hermite曲线的表达式:
p(t)=(1−3t2+2t3)p0+(t−2t2+t3)v0+(3t2−2t3)p1+(t3−t2)v1p(t)=(1-3t^2+2t^3)p_0+(t-2t^2+t^3)v_0+(3t^2-2t^3)p_1+(t^3-t^2)v_1p(t)=(1−3t2+2t3)p0​+(t−2t2+t3)v0​+(3t2−2t3)p1​+(t3−t2)v1​
v(t)=(6t2−6t)p0+(3t2−4t+1)v0+(6t−6t2)p1+(3t2−2t)v1v(t)=(6t^2-6t)p_0+(3t^2-4t+1)v_0+(6t-6t^2)p_1+(3t^2-2t)v_1v(t)=(6t2−6t)p0​+(3t2−4t+1)v0​+(6t−6t2)p1​+(3t2−2t)v1​
a(t)=(12t−6)p0+(6t−4)v0+(6−12t)p1+(6t−2)v1a(t)=(12t-6)p_0+(6t-4)v_0+(6-12t)p_1+(6t-2)v_1a(t)=(12t−6)p0​+(6t−4)v0​+(6−12t)p1​+(6t−2)v1​
j(t)=12p0+6v0−12p1+6v1j(t)=12p_0+6v_0-12p_1+6v_1j(t)=12p0​+6v0​−12p1​+6v1​

由此可见,加加速度确实为定值。

令p0=0p_0=0p0​=0、v0=0v_0=0v0​=0、p1=△Pp_1=\triangle Pp1​=△P、v1=Vv_1 = Vv1​=V,则有:
v(t)=(6t−6t2)△P+(3t2−2t)V=(3V−6△P)t2+(6△P−2V)tv(t)=(6t-6t^2)\triangle P+(3t^2-2t)V=(3V-6\triangle P)t^2+(6\triangle P-2V)tv(t)=(6t−6t2)△P+(3t2−2t)V=(3V−6△P)t2+(6△P−2V)t
a(t)=(6−12t)△P+(6t−2)V=(6V−12△P)t+(6△P−2V)a(t)=(6-12t)\triangle P+(6t-2)V=(6V-12\triangle P)t+(6\triangle P-2V)a(t)=(6−12t)△P+(6t−2)V=(6V−12△P)t+(6△P−2V)

以下是说明书中给出的常见PVT模式的时间-速度曲线,发现图像与上述公式完全相符。转载请注明出处,罗伯特祥。matlab符号运算验证代码如下:

syms t p0 p1 v0 v1 real;p = (1 - 3*t^2 + 2*t^3)*p0 + (t - 2*t^2 + t^3)*v0 + (3*t^2-2*t^3)*p1 + (t^3-t^2)*v1v = diff(p,t)v = subs(v,p0,0);
v = subs(v,v0,0);
v = subs(v,p1,2*v1/3);
v = expand(v)

注意:下图中▲P与V的关系中,横坐标标注的t是一个单位量,代入公式时应当作一个常量看待。

此外,说明书还给出了一个比较有意思的圆弧构建案例:

最后,给出一个PVT插补案例,代码如下:

clear,clc,close alldt = 1;
t = 0:dt:20;
X = 100*sin(0.2*pi*t);
Vx = 0.2*pi*100*cos(0.2*pi*t);count = 1;
time = 0;
n = 1000;
for i=1:length(X)if(i>=2)q0 = X(i-1);q1 = X(i);v0 = Vx(i-1);v1 = Vx(i);traj = pvt(q0,q1,v0,v1,n);for k=1:length(traj)Xpvt(count) = traj(k);time = time + dt/n;tpvt(count) = time;count = count + 1;endend
endplot(t,X,"*")
hold on
plot(tpvt,Xpvt)
t = 0:0.0001:20;
plot(t,100*sin(0.2*pi*t))
legend("插值点","pvt","理想轨迹")function traj = pvt(p0,p1,v0,v1,n)dt = 1/n;tt = dt:dt:1;for i=1:length(tt)t = tt(i);H0 = 1 - 3*t^2 + 2*t^3;H1 = t - 2*t^2 + t^3;H2 = 3*t^2 - 2*t^3;H3 = t^3 - t^2;traj(i) = H0 * p0 + H1*v0 + H2*p1 + H3*v1;end
end


结论: PMAC应用三次Hermite spline实现的PVT功能。

PMAC的PVT功能实现解析笔记相关推荐

  1. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  2. 源码解析:Spring源码解析笔记(五)接口设计总览

    本文由colodoo(纸伞)整理 QQ 425343603 Java学习交流群(717726984) Spring解析笔记 启动过程部分已经完成,对启动过程源码有兴趣的朋友可以作为参考文章. 源码解析 ...

  3. React深入学习与源码解析笔记

    ***当前阶段的笔记 *** 「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v 点击链接保存,或者复制本段内容,打开「阿里云盘」 ...

  4. javaSE基础——集合全面解析笔记

    javaSE基础--集合全面解析笔记 英文单词 一.容器定义 1.1.容器继承体系 二.Set--------容器类 部分方法数学集合意义 2.1 HashSet 2.1.1 基本用法 2.1.2 特 ...

  5. obs 源码解析笔记

    obs 源码解析笔记 由于obs rtp音频传输有问题,所以可能需要修改obs源码,学习了两天,发现官方文档有些混乱,国内有关说明又少,特此记录,也方便以后自己查阅.这里主要涉及工作有关源码其他基本略 ...

  6. cuDNN 功能模块解析

    cuDNN 功能模块解析 Abstract 本cuDNN 8.0.4开发人员指南概述了cuDNN功能,如可自定义的数据布局.支持灵活的dimension ordering,striding,4D张量的 ...

  7. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  8. onenote快捷键_高效飞快地使用onenote快捷键:快捷键功能架构解析

    默认快捷键有近200组,涉及到的功能如此之多,但真正频繁使用的,可能也就几十组.如何从这么多快捷键中选择出自己需要的呢?你需要一张功能架构参考图. 1 默认快捷键功能架构图 官方文档已对快捷键做了初步 ...

  9. Plugin工具类-Unreal4源码拆解-UnrealBuildTool功能流程解析

    Unreal4源码拆解-UnrealBuildTool功能流程解析-Plugin 知乎专栏:UBT源码解析 4.2x功能不会差太多 主要功能 Plugin静态类,功能上大致是一个工具类,根据文件夹保存 ...

最新文章

  1. wine on ubuntu linux, and source insight 绿色版的安装
  2. 计算机英语语言学考研真题,考研类试卷英语专业语言学历年真题试卷汇编14
  3. mysql to mssql_MysqlToMsSql
  4. jmap+MAT实战内存溢出
  5. flask处理http request的时候是多线程还是多进程?
  6. 使用jquery datatables插件遇到fnReloadAjax的问题
  7. 中专计算机应用完整教学计划,中职生教学计划
  8. 为什么说 Transformer 就是图神经网络?
  9. sqlserver isnull函数使用
  10. java---多线程及线程的概念
  11. Arm 中国原 CEO 被“罢免”,新指定“官方”:已获员工大力支持
  12. 程序员如何高效准备简历和面试06:使用STAR法则表现自己
  13. Google 2016开发者大会
  14. Euler配置yum源
  15. 人工智能是怎么准备训练样本的
  16. 运用 Ntop 监控网络流量
  17. 作为优秀的DBA,究竟需要掌握多少种数据库?
  18. 新手向:如何用python打开网址
  19. 2021朔城区一中高考成绩查询,青春有志逐梦远行—朔城区一中2021届高三毕业典礼暨高考壮行大会...
  20. 5年大厂Java高频面试题及答案整理

热门文章

  1. 学生HTML个人网页作业作品下载 HTML5+CSS大作业——个人网页(4页)
  2. python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...
  3. 面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
  4. Linux主机访问实达终端辅口,实达系列终端操作说明.doc
  5. 【微信小程序】在wxss中引入其他的css
  6. Excel绝对引用和相对引用
  7. Java数据结构之二分查找/插值查找/斐波那契查找
  8. Codeforces Round #738 (Div. 2)——C. Mocha and Hiking
  9. 用python做股票智能投顾模型_如何用Python建模GGM模型并对股票估值?
  10. python求偏导函数_Python中多元函数的向量化偏导数