搜索
bottom↓
12
返回列表 发新帖
楼主: 落叶知秋

[分享]几个开源运动控制项目的源码笔记

  [复制链接]

出0入0汤圆

发表于 2020-11-2 17:40:24 | 显示全部楼层
感谢分享。这些解读过程非常重要。

出0入0汤圆

发表于 2020-11-14 14:03:10 | 显示全部楼层
学习了,谢谢!!!!

出0入0汤圆

发表于 2020-11-16 22:53:57 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2020-11-28 11:42:04 | 显示全部楼层
在看LinuxCNC,有难度,先看看这几个怎么样,感谢楼主

出40入42汤圆

 楼主| 发表于 2020-11-28 15:25:43 | 显示全部楼层
catshit_one 发表于 2020-11-28 11:42
在看LinuxCNC,有难度,先看看这几个怎么样,感谢楼主

坛里倒是比较少人提LinuxCNC这个项目

其实在写这个帖子里的几个项目的源码笔记前,就写了LinuxCNC的运动控制部分的源码笔记,
只是LinuxCNC整个项目比较大,只读了运动控制部分的,而且也没有搞得很明白,就没有放上来

出0入0汤圆

发表于 2020-12-12 21:23:44 来自手机 | 显示全部楼层
最近学习时间分割法插补,发那科M7 CNC插补也是用的时间分割法插补。百度上只能找到一些原理性的说明,具体怎么实现的都没有介绍。有没有大牛知道哪个开源的运控用时间分割法做插补的,这样学习效率更高,先谢了

出0入0汤圆

发表于 2020-12-12 22:01:52 | 显示全部楼层
谢谢分享

出0入4汤圆

发表于 2021-1-14 16:16:58 | 显示全部楼层
有空试试

出0入0汤圆

发表于 2021-8-5 08:16:18 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2021-8-5 10:21:38 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2021-8-16 16:58:07 | 显示全部楼层
非常感谢!

出0入0汤圆

发表于 2021-12-1 13:06:24 | 显示全部楼层
学习学习

出20入62汤圆

发表于 2023-3-11 21:32:40 | 显示全部楼层
这个是真心牛逼。
学习学习。

出0入0汤圆

发表于 2023-3-29 09:59:02 | 显示全部楼层
本帖最后由 black0118 于 2023-3-29 10:02 编辑

请教楼主,我现在想做款刻字机,只有XY两轴,用哪个开源较好?选用的MCU是ESP32S3

出40入42汤圆

 楼主| 发表于 2023-3-29 15:01:45 | 显示全部楼层
black0118 发表于 2023-3-29 09:59
请教楼主,我现在想做款刻字机,只有XY两轴,用哪个开源较好?选用的MCU是ESP32S3 ...
(引用自114楼)

grbl吧,通用一点,GitHub上也有ESP32的开源版本

出0入0汤圆

发表于 2023-4-13 17:47:17 | 显示全部楼层
落叶知秋 发表于 2023-3-29 15:01
grbl吧,通用一点,GitHub上也有ESP32的开源版本
(引用自115楼)

多谢楼主回复!现在已将GRBL_ESP32移植到ESP32S3上并加载成功。我最终要加入USB及U盘,除了解析GCODE,还要解析HPGL,所以代码还要花时间熟悉,不然无从下手啊

出0入0汤圆

发表于 2023-4-13 17:50:37 | 显示全部楼层
black0118 发表于 2023-4-13 17:47
多谢楼主回复!现在已将GRBL_ESP32移植到ESP32S3上并加载成功。我最终要加入USB及U盘,除了解析GCODE,还 ...
(引用自116楼)

再次请教楼主,最新的marlin已支持S曲线加减速,不知好不好移植到grbl上来

出40入42汤圆

 楼主| 发表于 2023-4-13 19:31:41 | 显示全部楼层
black0118 发表于 2023-4-13 17:50
再次请教楼主,最新的marlin已支持S曲线加减速,不知好不好移植到grbl上来
(引用自117楼)

marlin那个S型曲线挺简单的,跟grbl的速度规划器没有太大的冲突,移植是没什么问题的
楼主位的文档也有写一点分析,可以参考一下

出0入0汤圆

发表于 2023-4-16 08:48:12 | 显示全部楼层
谢谢分享。

出0入10汤圆

发表于 2023-4-17 21:34:38 | 显示全部楼层
落叶知秋 发表于 2023-4-13 19:31
marlin那个S型曲线挺简单的,跟grbl的速度规划器没有太大的冲突,移植是没什么问题的
楼主位的文档也有写 ...
(引用自118楼)

你好,非常感谢你的分享!有一个问题想请教下

1、我用grbl实现了插补联动运动。但是现在有一个需求是 我需要按照某一个方程来实现某个运动。比如按照sinx 方程  来进行运动。比如一个轴运动 x变量。另外一个轴按照sinx  来运动位置。
这样的改怎么实现了?
2、我看grbl的是迪卡坐标下的插补联动。没有那个旋转轴的  。我与一个疑问是  旋转轴怎么样和其他的普通轴做联动运动了?

3、grbl 他的联动 比较好理解 就是三个坐标轴 相互垂直。但是如果遇到其他的非垂直的轴  那该怎么样实现联动呢?

4、我看tinyg 插补方式好像和grbl不一样。他好像是固定的频率 下计算 需要输出多少个脉冲。而grbl是计算出每一个脉冲的频率。这两则 我感觉 tinyg这种的好像更好实现多轴联动,尤其那种非垂直轴的。不知道我理解的有没有问题。

期待你的解答!!感谢

出40入42汤圆

 楼主| 发表于 2023-4-18 09:21:27 | 显示全部楼层
jaywen 发表于 2023-4-17 21:34
你好,非常感谢你的分享!有一个问题想请教下

1、我用grbl实现了插补联动运动。但是现在有一个需求是 我 ...
(引用自120楼)

1. 可以参考一下grbl里面怎么实现圆弧插补的,其实就是将圆弧离散化、小线段化,然后每个小线段都看作直线,然后让XY走,做好小线段之间的速度衔接就行了;
2. 旋转轴的插补,其实本质上跟直线轴的插补没有太大差别,只是旋转轴的姿态跟直线轴不一样而已,这个都是在运动学逆解中计算好(就是根据姿态末端目标位置反推各个轴的行程),
    网上有grbl的6轴还是9轴版本的,这个应该是加了旋转轴处理的,可以找来看一下;
3. 参考2;
4. tinyg是以一个固定的比较高的频率来计算脉冲的发送,grbl是为了省资源,把定时器设计成变长的,tinyg算是硬件升级后的改动,其实本质差不多,都是DDA的方式,
    在速度规划的模块中,都是取固定的频率来进行计算的,发脉冲这个只是一种方式,grbl设计成这样主要是以前在avr上跑的,硬件资源很紧张,现在用性能更高的硬件的话,可以改一下,
    论坛有用32位arm发脉冲的帖子,可以参考一下,改一下也很简单,只要改发送脉冲的模块就行了。

出0入10汤圆

发表于 2023-4-18 09:33:54 | 显示全部楼层
落叶知秋 发表于 2023-4-18 09:21
1. 可以参考一下grbl里面怎么实现圆弧插补的,其实就是将圆弧离散化、小线段化,然后每个小线段都看作直 ...
(引用自121楼)

非常感谢。对于疑问2:目前公司要做一个类似螺旋的一个结构。也就是一个电机是水平运动,一个电机控制旋转。这样两者联动后 就是一个圆柱一样的运动。这样的方式也是必须要进行逆运算才可以实现的吗?
                                    因为有一个问题是:给出的运动方式不是目标的运动方式。而是单个轴的运动方式。比如水平按照一个速度运行。旋转那个电机按照另外一个速度运行。这样改怎么样实现了?



疑问1:如果按照sinx 来运动。我看过grbl的圆弧插补哈。需要输入 圆弧r,角度  这个sinx 或者其他的曲线我该怎么样确定这个r了?

出40入42汤圆

 楼主| 发表于 2023-4-18 10:23:25 | 显示全部楼层
jaywen 发表于 2023-4-18 09:33
非常感谢。对于疑问2:目前公司要做一个类似螺旋的一个结构。也就是一个电机是水平运动,一个电机控制旋 ...
(引用自122楼)
疑问1:如果按照sinx 来运动。我看过grbl的圆弧插补哈。需要输入 圆弧r,角度  这个sinx 或者其他的曲线我该怎么样确定这个r了?

这个不需要确定r,r是圆弧轨迹用的,你用sinx的轨迹,那么应该是确定的弦曲线轨迹,直接算就行了

对于疑问2:目前公司要做一个类似螺旋的一个结构。也就是一个电机是水平运动,一个电机控制旋转。这样两者联动后 就是一个圆柱一样的运动。这样的方式也是必须要进行逆运算才可以实现的吗?
                                    因为有一个问题是:给出的运动方式不是目标的运动方式。而是单个轴的运动方式。比如水平按照一个速度运行。旋转那个电机按照另外一个速度运行。这样改怎么样实现了?

grbl本身有螺旋插补,不过是3轴的,2轴圆弧+1轴直线,你这种情况就是把圆弧的省略成1个旋转轴,原理差不多,就是运动学要稍微改一下,圆弧的角度直接换算成旋转轴的角度,你看一下吧

出0入10汤圆

发表于 2023-4-18 10:55:28 | 显示全部楼层
落叶知秋 发表于 2023-4-18 10:23
这个不需要确定r,r是圆弧轨迹用的,你用sinx的轨迹,那么应该是确定的弦曲线轨迹,直接算就行了


(引用自123楼)

非常感谢。还是有点不明白。grbl本身有螺旋插补,不过是3轴的,2轴圆弧+1轴直线,你这种情况就是把圆弧的省略成1个旋转轴,原理差不多,就是运动学要稍微改一下,圆弧的角度直接换算成旋转轴的角度,你看一下吧

这个是grbl 1.1版本里面有这个吗?我好像没有找到耶。可能我代码看的还是不够仔细。

对于您说的sinx 直接计算。不需要进行圆弧插补吗?这个不也是曲线吗?

出40入42汤圆

 楼主| 发表于 2023-4-18 14:16:49 | 显示全部楼层
jaywen 发表于 2023-4-18 10:55
非常感谢。还是有点不明白。grbl本身有螺旋插补,不过是3轴的,2轴圆弧+1轴直线,你这种情况就是把圆弧的 ...
(引用自124楼)

1.1版本有,在圆弧插补里面,有个第3辅助轴,能实现螺旋插补中的圆柱型螺旋插补场景

对于您说的sinx 直接计算。不需要进行圆弧插补吗?这个不也是曲线吗?

要用XY画出弦曲线,最简单的方法就是以y=Asin(ωx+φ)+k的公式来计算XY的位置值,而不是正常的通过轨迹来分解,
圆弧插补是针对圆弧轨迹通过内角α分解成XY来计算,如果弦曲线有标准的轨迹公式,也可以通过这种方式来实现,
但查了一下发现没有,只有最简单的XY关系式,可以在这个公式上面来实现,然后根据坐标偏移量和轨迹方向来对XY方向进行补偿,
不过这样就不好算合成速度和做线段衔接过渡;
另外的一种方法是,3轴的XY-Z圆柱型螺旋插补,在XZ或YZ平面的投影是一条弦曲线,可以通过把X或Y轴虚轴化来得到实际的曲线轨迹,
不过这样同样不好算合成速度和做线段衔接过渡;
不知道你们的需求是什么样的,弦曲线轨迹一般很少用到,也少有人研究

出40入42汤圆

 楼主| 发表于 2023-4-18 14:22:42 | 显示全部楼层
jaywen 发表于 2023-4-18 10:55
非常感谢。还是有点不明白。grbl本身有螺旋插补,不过是3轴的,2轴圆弧+1轴直线,你这种情况就是把圆弧的 ...
(引用自124楼)

如果只是需要用XY画出一条正弦曲线,那么可以以X轴为主动轴,根据公式y=sinx来计算Y轴的对应位置,
然后根据固定时间周期来确定X轴每次的位置增量,用公式y=sinx来计算Y的位置增量,XY联动出来的就是正弦曲线轨迹了

出0入10汤圆

发表于 2023-4-18 21:10:01 | 显示全部楼层
落叶知秋 发表于 2023-4-18 14:16
1.1版本有,在圆弧插补里面,有个第3辅助轴,能实现螺旋插补中的圆柱型螺旋插补场景


(引用自125楼)

非常感谢 您详细的解答。我们的一个需求就是 有两个电机。比如a电机、b电机、两个电机其实没有数学上的关系(比如垂直坐标系),简单来说就是两个电机分别 带动两个物体运动。然后a电机与b电机之间。运动有一个数学的关系。也就是sinx。就是b电机转动x距离。那么a电机需要转到sinx距离 。

我想的是直接用固定频率来简单做:已知b电机的速度。那么就知道 这个固定频率下他需要的脉冲数量。sinx  计算 那么耶知道a电机脉冲数量  。不知道这样行不行。就是参考 tinyg那样的dda

ps:其实我是需要做两个。一个就是我说的sinx。另外一个就是螺旋的那样插补是另外一个项目

出0入10汤圆

发表于 2023-4-18 21:19:39 | 显示全部楼层
落叶知秋 发表于 2023-4-18 14:22
如果只是需要用XY画出一条正弦曲线,那么可以以X轴为主动轴,根据公式y=sinx来计算Y轴的对应位置,
然后 ...
(引用自126楼)

和我想的一块了。。那么最终还是需要通过dda算法来实现的吧?


还有一个问题想请教。关于dda直线插补的。当xy是相互垂直的情况下。比如我需要直线插补。那么类似逐次比较一样。每次计算各个轴是否需要输出脉冲。

当非垂直的情况下。这个时候 通过 dda来实现是不是就不对了?比如tinyg 有6轴  非联动的  但是最终都是一个dda定时器。这为啥可以了?这都用的同一个dda
最后 导致的结果是啥了?他的数学书的关系怎么样解释这个呢?这个一直困扰我。

出40入42汤圆

 楼主| 发表于 2023-4-19 08:52:49 | 显示全部楼层
jaywen 发表于 2023-4-18 21:19
和我想的一块了。。那么最终还是需要通过dda算法来实现的吧?


(引用自128楼)

你对定时器和DDA算法的作用混淆了
定时器的作用是提供稳定的时基,DDA算法是一种通用的直线插补算法,前者主要是服务于速度规划模块,DDA算法在轨迹进行了速度规划后,划分坐标系分量,然后通过时基来判断是否输出脉冲
至于为什么DDA能够应用在非垂直坐标系中,可以想象一下你上面回帖的旋转轴和直线轴的螺旋插补,假如把旋转轴当作直线轴,旋转角度换算成直线距离,那么就可以套入到DDA算法里面了
虽然物理上不是垂直坐标系,但只要通过换算后能符合垂直坐标系的特性,使用DDA进行插补就没啥问题

出0入10汤圆

发表于 2023-4-19 11:09:00 | 显示全部楼层
落叶知秋 发表于 2023-4-19 08:52
你对定时器和DDA算法的作用混淆了
定时器的作用是提供稳定的时基,DDA算法是一种通用的直线插补算法,前 ...
(引用自129楼)

   谢谢。明白了  。其实就需要转换成垂直的那种坐标系。比如机械臂 那么需要把轴映射到垂直坐标系下的关系   然后进行dda

出0入10汤圆

发表于 2023-4-23 15:36:22 | 显示全部楼层
落叶知秋 发表于 2023-4-19 08:52
你对定时器和DDA算法的作用混淆了
定时器的作用是提供稳定的时基,DDA算法是一种通用的直线插补算法,前 ...
(引用自129楼)

还有一个问题想请教下:用tinyg的方式输出波形,与grbl的方式 哪种效果更好呢?不考虑mcu的处理能力的情况下。不知道marlin的方式是不是和tinyg一样

出40入42汤圆

 楼主| 发表于 2023-4-23 16:28:37 | 显示全部楼层
jaywen 发表于 2023-4-23 15:36
还有一个问题想请教下:用tinyg的方式输出波形,与grbl的方式 哪种效果更好呢?不考虑mcu的处理能力的情 ...
(引用自131楼)

如果你说的是输出的脉冲波形,其实都一样的,tinyg和marlin的脉冲机制都是跟grbl差不多
如果你觉得这种DDA方式不好,可以自己写一个stepper替换掉

出0入10汤圆

发表于 2023-4-23 18:17:51 | 显示全部楼层
落叶知秋 发表于 2023-4-23 16:28
如果你说的是输出的脉冲波形,其实都一样的,tinyg和marlin的脉冲机制都是跟grbl差不多
如果你觉得这种DD ...
(引用自132楼)

我指的是  tinyg 固定脉冲周期   然后 grbl 是变速脉冲周期。这两种方式。
感觉tinyg的 这种方式扩展性比较强 可以扩展很多轴。grbl 这种方式好像不是很好扩展

出40入42汤圆

 楼主| 发表于 2023-4-23 19:09:17 | 显示全部楼层
jaywen 发表于 2023-4-23 18:17
我指的是  tinyg 固定脉冲周期   然后 grbl 是变速脉冲周期。这两种方式。
感觉tinyg的 这种方式扩展性比 ...
(引用自133楼)

如果你说的可以扩展到很多轴,是说的每个轴独立运动,而不是联动的话,tinyg的方式适合一些

出0入10汤圆

发表于 2023-4-23 22:47:19 | 显示全部楼层
落叶知秋 发表于 2023-4-23 19:09
如果你说的可以扩展到很多轴,是说的每个轴独立运动,而不是联动的话,tinyg的方式适合一些 ...
(引用自134楼)

是的哈 。非常感谢您的回答!!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 04:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表