开源改变世界

非线性变换 #1055

推推 grbl 3年前 (2023-01-23) 111次浏览

关闭
soswow 开了这个issue 2016 年 8 月 14 日 · 13条评论
关闭

非线性变换#1055

soswow 开了这个issue 2016 年 8 月 14 日 · 13条评论

注释

非线性变换 #1055
狼吞虎咽 评论了 2016 年 8 月 14 日  

你好,
我有一个立式绘图仪,它挂在两根电线上。它通过改变缠绕在线轴上的每根电线的长度来改变它的位置。
从 XY 到 AB 的坐标变换是非线性的:

  // x, y - input coordinats
  const y2 = h - y;
  const x2 = w/2 - x;
  const aAbs = Math.sqrt(Math.pow(y2, 2) + Math.pow(x2, 2));
  const bAbs = Math.sqrt(Math.pow(y2, 2) + Math.pow(w - x2, 2));
  // aAsbs, bAbs - are resulting coordinates

目前我解决问题,通过

  1. 准备 SVG,我将所有圆弧和直线分成小的直线段
  2. 生成正常的 XY Gcode
  3. 运行所有 G00 和 G01 命令并使用脚本修改每个点
  4. 将修改后的 g 代码发送到 grbl

我真正想要的是在固件内部完成所有转换,这样我就不需要将 SVG 切割成和平并发送所有可能的 G 命令。

很久以前我在这里看到过类似的问题:#33 but repo is dead。

我查看了代码并认为如果我引入其他类型的运动学,如 CoreXY,并在所有使用 COREXY 的地方添加我的所有东西。据我了解,主要地点是planner.c:plan_buffer_line

  • 我担心像 SQRT/power 这样的非线性操作不会在固件内部快速循环工作,因为它应该尽可能轻。
非线性变换 #1055
作者

行。经过初步调查(仍在进行中),看起来我将不得不创建类似于mc_arc线性运动命令的东西。因为我想最终得到和以前一样的小块mc_arc

非线性变换 #1055
作者

我需要两件事:

  1. 修改plan_buffer_line我需要将 XY 坐标转换为 AB 坐标的位置
  2. 如果给定的线段在 AB 空间中太长,我需要将这条线分成更小的线段(在 XY 空间中),然后再次通过 1)。

我的想法对吗?

非线性变换 #1055

我希望我知道,
我一直在为 polargraph/drawbot/v-plotter 研究 Grbl,但似乎找不到明确的答案。如果了解 GRBL 的人可以提供建议,那将非常有帮助!

非线性变换 #1055
成员

@sTVG: 明确的答案是什么?目前尚不清楚你在问什么。如果你问 Grbl 是否支持极坐标,不,它不支持。

非线性变换 #1055
成员

@soswow @sTVG这是一个添加了极坐标的叉子,也许它可以帮助你:
https ://github.com/ilaro-org/grbl-polar

非线性变换 #1055

从技术上讲,这些不是极坐标。

@chamnit什么@sTVG 问的不是正文这个问题。我打开这个问题是希望得到一些建议 1) 如果你认为它完全有可能(sqrt/power 操作)和 2)如果我对它应该放在哪里的想法是正确的。正文中有更多详细信息。不幸的是,2 个月后我没有收到任何回复,问题现在已关闭 =(

@winder谢谢你!会调查的。

非线性变换 #1055
成员

@soswow: 那么极地机器人如果不使用极坐标,就不应该被称为“极地”。:) 无论哪种方式,您都在进行某种 Grbl 未明确支持的坐标转换。

  1. 是的 sqrt 和 pow 是可能的,但取决于有多少。浮点数在 8 位 AVR 上非常昂贵。您可能可以通过添加大约 1-3 毫秒的时间来解析和规划 g 代码块。如果你行动缓慢,可能更多。
  2. 是的,只要有 CoreXY 代码,转换就会被正确地放置。你在做同样类型的事情。

抱歉,我试着回复所有人,但我总是收到很多问题。如果一个问题在一个多月后仍未得到解答,我认为该问题已关闭,因为通常情况下,提出问题的人已经解决了他们自己的问题。回答一个不再有用的问题是在浪费大量时间。除非您在适当的时间(例如超过几天)后再次询问以保持问题存在,否则很难判断您是否没有。

非线性变换 #1055

很高兴看到这里发生了一些交流。所以我想找出大致相同的东西。基本上做什么@chamnit为 Polar 使用 COREXY。我已经尝试过https://github.com/ilaro-org/grbl-polar,它在 motion_control.c 中有一些极坐标变换,但它不能正常工作,我试了 4 天才能让它绘图。

所以我的问题是:

  1. Arduino (ATmega328P) 可以处理浮动计算的平方根吗?好像它冻结了几次
  2. 如何设置每毫米的步数(因为它是一个移动目标 – 非线性变换)
  3. ilaro-org/grbl-polar 看起来只需要一些调整,或者可能只需要一些文档(是的,如果他们能自己解释它会很好,但他们是西班牙语,而且还没有,所以任何关于如何进行转换工作将非常有帮助)

谢谢

非线性变换 #1055
作者
狼吞虎咽 评论了 2016 年 10 月 24 日  

@sTVG
2. 每磨机的步数不会改变,因为您知道线轴 C 并且它不会改变。机器不是在 X 和 Y 中思考,而是在 A 和 B 中思考。A 和 B 是字符串长度。字符串的每磨步数不会改变(如果你不考虑第一层线轴已满且 C 略有变化)

我会更彻底地研究他们的解决方案。从我到目前为止所看到的来看,这可能是我一直在寻找的东西。不过应该清洗一下。

非线性变换 #1055

@winder,你了解这个叉子吗?如果是这样,请帮助填写。它是否只适用于绝对坐标,因为它必须计算相对于其已知原点的所有内容?

非线性变换 #1055

@winder但你已经在上面建议过了,不是吗?
@sTVG不确定我是否理解你的问题。在所有数控机床中,一切都与其已知位置有关。通常这个已知位置是原点,您可以通过归位获得。在这个分支的情况下,他们只是硬编码位置,然后在此时手动定位头部。我用我的绘图机做同样的事情。

非线性变换 #1055
成员

抱歉,我不确定为什么会第二次发布。我对叉子不熟悉,只记得前一阵子有人分享过它。

非线性变换 #1055

在 2018 年尝试这个……找不到解决方案 :(

喜欢 (0)