三次函数S曲线运动控制效果(步进电机)

2020-01-12 17:13发布

本帖最后由 colinzhao 于 2018-6-26 19:58 编辑

本想增加个视频,可能是之前的帖子有点久了,编辑不了,只能再开个帖子了,之前的帖子:
https://www.amobbs.com/forum.php ... S%E6%9B%B2%E7%BA%BF
视频:
https://v.youku.com/v_show/id_XM ... j.8428770.3416059.1
几年前也做了一个算法,但之前的算法参数普适性不足,无法直接通过传递函数推导,当时的视频:
https://v.youku.com/v_show/id_XN ... 42.soresults.dtitle

目前可实现以下的算法:
1、给定时间、最高速度、最小速度、位移量。S曲线运行,时间精度可以做到10uS的精度。所有的参数均为双精度浮点数。此方式可用于多轴的同步运行,比如三轴坐标系下,合成运行轨迹是直线。
2、给定最高速度、变加加速度、位移量。S曲线运行。
3、给定加速段时间、减速段时间、位移量、最高速度、最小速度。S曲线运行。
4、给定最高速度、位移量。S曲线运行,最小速度为最高速度的1/10000,匀速段为0。此方式是最平稳的运行方式。
5、最高输出频率时5MHz,256细分的步进电机可驱动到1万转,视频里面的最大速度3500转左右。
6、若有需要可精确控制S曲线任何段位的参数。
7、所有运行参数严格遵循控制函数,直接用三次函数计算运行参数,比如可以根据运动部件的重量,由公式计算出最合适的运行参数。
8、准备把这个做成带CAN总线的单卡,方便多轴运行。

发出来大家拍拍砖!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
colinzhao
1楼-- · 2020-01-13 11:36
whatcanitbe 发表于 2018-6-26 20:06
能说说思路吗?

V = jerk * t^3,这个是基础函数,其实都是以这个函数为基础,只是一个完整的S运行曲线是一个分段函数。
kinsno
2楼-- · 2020-01-13 15:35
colinzhao 发表于 2018-6-26 20:08
V = jerk * t^3,这个是基础函数,其实都是以这个函数为基础,只是一个完整的S运行曲线是一个分段函数。 ...

jerk 是加加速度吗?,你这个就是指速度是这个jerk 乘以时间的3次立方吗?
公式是出自哪里,总不能拍脑门拍出来吧。。

colinzhao
3楼-- · 2020-01-13 18:28
 精彩回答 2  元偷偷看……
bsz84
4楼-- · 2020-01-13 23:02
本帖最后由 bsz84 于 2018-6-26 20:26 编辑

jerk是类似加速度a一样变的,是不是把七段中的加加速度段(减加速度段)再分为三段?
vjcmain
5楼-- · 2020-01-14 00:33
楼主,请问使用sigmoid 函数效果如何?


以下是网上找到的链接
sigmoid函数 y = 1/(1+exp(-in))是一个良好的阈值函数,函数连续、光滑,严格单调并关于(0,0.5)中心对称,函数值∈[-1.1],

其导数f'(x)=f(x)*[1-f(x)],可以节约计算时间

1130137-20170522093553570-534294834.png (18.44 KB, 下载次数: 0)

下载附件

2018-6-26 20:29 上传




https://www.cnblogs.com/Ich-Sun/p/6888303.html
colinzhao
6楼-- · 2020-01-14 06:15
kinsno 发表于 2018-6-26 20:20
jerk 是加加速度吗?,你这个就是指速度是这个jerk 乘以时间的3次立方吗?
公式是出自哪里,总不能拍脑门 ...

最简单的加减速算法是T型曲线,可此时的加速度是矩形的,也就是说作用力是阶跃的,不好,所以就弄成二次曲线,此时的速度是二次S曲线,加速度是T型曲线,仍然有尖角,要求高的还是不爽,比如飞针测试机,一秒钟点十几下,针头不能抖动啊,所以,就再加一次,变成三次曲线,此时加速度是二次s曲线,速度是s三次曲线!加速度是二次曲线,意味着作用力是平滑的,不会有突变的作用力!手打这么多字........

一周热门 更多>