电机运动控制算法之S速度曲线规划算法

转自 | 小麦大叔
搞过电机或运动控制的小伙伴应该知道,s曲线很重要,下面一张动图对比一下,你就知道s曲线的好处。
今天就给大家描述一下s速度曲线规划算法。
1 前言
s形加减速的最重要特征是该算法的加速度/减速度曲线的形状如字母 s。s形加减速的速度曲线平滑 ,从而能够减少对控制过程中的冲击,并使插补过程具有柔性 [^1]。由于t形曲线在加速到匀速的切换过程中,实际中存在较大过冲,因此这里对比一下t曲线和7段s曲线的实际过程;
t形:加速 -> 匀速 -> 减速
s形:加加速(t1) -> 匀加速(t2) -> 减加速(t3)-> 匀速(t4)-> 加减速(t5)-> 匀减速(t6)-> 减减速(t7)
上文在加速这块的文字描述可能读起来起来有点绕,下面看图:
2 理论分析
由于s曲线在加减速的过程中,其加速度是变化的,因此这里引入了新的一个变量 j,即加加速度。
因此对应上图的7段s速度曲线中,规定最大加速为amax,最小加速度为-amax,则加速度的关系;
所以通常需要确定三个最基本的系统参数 :系统最大速度umax ,最大加速度a_{max} ,加加速度,就可以可确定整个运行过程[^2] ;
最大速度:反映了系统的最大运行能力 ;
最大加速度:反映了系统的最大加减速能力 ;
加加速度:反映了系统的柔性;
柔性越大,过冲越大,运行时间越短;
柔性越小,过冲越小,运行时间越长;
2.1 加速度时间关系方程
整个加速度变化的过程具体如下图所示;
2.2 速度时间关系方程
速度和加速度满足 ;加加速度和速度的关系满足:
结合加速度时间关系并结合② 式可以得到速度曲线关系,具体关系如下图所示;
进一步简化可以得到:
2.3 位移时间关系方程
积分忘的差不多了,回去再复习一下;
最终位移的方程如下所示;
3 程序实现的思路
正如前面所提到的,s曲线规划需要确定三个最基本的系统参数 :系统最大速度 ,最大加速度a_{max} ,加加速度,这样就可以确定这个运行过程。这里有一个隐性的条件,就是在运行的过程中可以达到最大速度,这样才是完整的7段s曲线,另外这里还有一些中间参数:
4 matlab 程序
matlab程序亲测可以运行,做了简单的修改,因为这里直接给定了整个运行过程的时间,所以需要在scurvepara函数中求出加加速度 的值,路程为 1:
scurvepara
function [tf1,v,a,j,t] = scurvepara(tf, v, a) t = zeros(1,7);for i=1:1000    % 加加速度 j    j = (a^2 * v) / (tf*v*a - v^2 - a);    % tk    t(1) = a / j;    t(2) = v / a - a / j; % t2 = v / a - t1;    t(3) = t(1);    t(4) = tf - 2 * a / j - 2 * v / a;    % t4 = tf - 4*t1 - 2*t2;    t(5) = t(3);    t(6) = t(2);    t(7) = t(1);    % 根据t2和t4判断s曲线的类型    if t(2) < -1e-6        a = sqrt(v*j);        display('t2<0');    elseif t(4) < -1e-6        v = tf*a/2 - a*a/j;        display('t4<0');    elseif j < -1e-6        tf = (v^2 + a) / (v*a) + 1e-1;        display('j= 0 && t  t(1) && t  t(1)+t(2) && t  t(1)+t(2)+t(3) && t  t(1)+t(2)+t(3)+t(4) && t  t(1)+t(2)+t(3)+t(4)+t(5) && t  t(1)+t(2)+t(3)+t(4)+t(5)+t(6) && t 1        sd(i-1) = (s(i) - s(i-1)) / dt;    end    if i>2        sdd(i-2) = (sd(i-1) - sd(i-2)) / dt;    endendsubplot(3,1,1);legend('theta');xlabel('t');subplot(3,1,1);plot(t,s)legend('位移');xlabel('t');title('位置曲线');subplot(3,1,2);plot(t,sd);legend('速度');xlabel('t');title('速度曲线');subplot(3,1,3);plot(t,sdd);legend('加速度');xlabel('t');title('加速度曲线');  
看到最终仿真结果和预期相同;
最后再看一下t形和s形速度曲线规划的效果对比:
5 总结
本文只对7段的s曲线规划做了详细的推导和介绍,matlab中的程序对于4段和5段都有做实现,很多是在理想情况下进行推导的,初始速度默认为0,终止速度也为0,并且假设加减速区域相互对称。最终运行结果符合预期效果。


韩企考虑缩减在华业务
医疗液晶屏的选型
基于TMS320DM643嵌入式系统的数字电视信号传输采集系
晶硅太阳能光伏组件结构
USB PD控制推动IC配合Type-C接口需求大爆发
电机运动控制算法之S速度曲线规划算法
快讯!唯样商城与开步睿思达成战略合作
如何使用模拟发现调试数字逻辑
大算力芯片何时迎来终局战?
基于区块链技术运行的dApp应用跟App有什么区别
BGO747光纤接收放大器模块的性能及引脚功能分析
步进电机在复印机中的应用
PCB设计工程师浅谈绕等长的概念
iphone8什么时候上市?iphone8最新消息:三星S9正式曝光:顶级配置 iPhone8头号劲敌
一文读懂通信串口(物理接口)1
【比特熊充电栈】Azure OpenAI 守护大模型数据与安全!
志高电磁炉检修方法
电动机如何一键实现启动和停止电路
TM-30是否具有明确的颜色质量指标
华为推出麦芒7,拥有大运存、长续航、智慧拍摄、GPU Turbo等产品优势