三次函数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条回答
dukelec
1楼-- · 2020-01-23 23:47
本帖最后由 dukelec 于 2019-1-11 17:49 编辑
doujiang 发表于 2019-1-11 15:46
可以,搜下相关专利,很多都讲了变化点的判断方法。实现也挺简单。FPGA逻辑资源消耗大概在700个左右。 ...


以當前速度和加速度順着推減速到 0 所需要路程,再與當前路程差做對比,來判斷變化點是非常不準的做法,會導致收尾到不了指定點。

因爲高速部分的一個小誤差帶來的位移對於低速部分來說是非常巨大的。

正確做法是根據當前位置差、速度和 jerk 去反推最大加速度,當算出來的最大加速度超過用戶設置的最大加速度值,則當做第 5 階段(加減速)的拐點,並每次都以實時算出來的加速度爲準來修改速度。
如果已經到第 7 階段(減減速),則是要反推 jerk, 同樣計算出來的 jerk 可能會稍微超出所設置的 jerk 值。

這種在規劃過程中不斷修正的方式,可以保證收尾非常乾淨,其實 T 型加減速要做好也是類似的方式。
pengtaoABC
2楼-- · 2020-01-24 00:16

先出来这样一个简易版本,逐渐迭代就好,点对点做好了,再考虑运动中变参数
wzbwzb
3楼-- · 2020-01-24 01:22
你用stm32做了伺服电机?
Error.Dan
4楼-- · 2020-01-24 04:37
dukelec 发表于 2019-1-11 17:36
以當前速度和加速度順着推減速到 0 所需要路程,再與當前路程差做對比,來判斷變化點是非常不準的做法, ...

这个就是典型的位置前馈算法,其实大部分的系统里面有这个就够了,我以前做过一个类似的就是定点运动过程中根据剩余位移调整最高速阈值,保证系统在启动和停止的点上是以一个无限接近0的速度就可以有效避免冲击。
当然,速度调整怎么调整也是花了很多时间的,而且跟物理性能是强相关的,我那个东西简单加减速直接按2倍速率翻上去就行了,最后效果还行~
dukelec
5楼-- · 2020-01-24 10:14
 精彩回答 2  元偷偷看……
doujiang
6楼-- · 2020-01-24 11:18
dukelec 发表于 2019-1-11 17:36
以當前速度和加速度順着推減速到 0 所需要路程,再與當前路程差做對比,來判斷變化點是非常不準的做法, ...

感谢你的回复,可能是方法不同,我现在没有遇到你说的这个问题。

一周热门 更多>