评论
合作者
上面链接的 repo 不包含代码,只有文档,所以我无法查看您的代码更改。 |
贡献者作者
对不起这是我的错。我是新来的。我的第一个开源项目,也是第一次像这样使用 github。我把文档放在一个单独的仓库中,因为我不确定把它放在哪里。代码更改位于https://github.com/forbin1ab/FluidNC/tree/Devt的 devt 分支的分叉回购中 |
合作者
这消除了循环内的乘法和除法 float seg_x = position[X_AXIS];
float seg_y = position[Y_AXIS];
float seg_z = position[Z_AXIS];
dx /= segment_count;
dy /= segment_count;
dz /= segment_count;
for (uint32_t segment = 0; segment < segment_count; segment++) {
// next segment endpoint
seg_x += dx;
seg_y += dy;
seg_z += dz;
|
合作者
关于: void WallPlotter::lengths_to_xy(float h1, float h2, float& x, float& y) {
// calculate x y lengths from the two given hypotenuses
// Assumes origin is to the right and below of left motor...
// TODO Optimize equations to reduce floating point operations
float m = abs(_left_anchor_x)+abs(_right_anchor_x); // motor separation
x = (h1*h1-h2*h2+m*m) / (2*m); // solve for X1
...
我可以看到,这里唯一的算法变化(不包括变量名替换和子表达式分解)是替换 float m = abs(_left_anchor_x)+abs(_right_anchor_x); // motor separation
代替 float distance = _right_anchor_x - _left_anchor_x;
新版本似乎不正确。例如,如果左锚点为 1,右锚点为 4,则旧版本给出的正确距离为 3,而新版本给出的距离为 5。新版本给出正确答案的唯一情况是锚点具有不同的符号. 当 right_anchor < left_anchor 时,旧版本可能会给出错误的距离,但可以说这是出于其他原因的错误。 |
贡献者作者
合作者
贡献者作者
完毕。感谢您对新手的耐心…
|
合并
合作者
如果您将 <issue_number> 放在 PR 评论中,PR 和问题将被链接起来以便于导航和跟踪。GitHub 有一些像这样的便利功能。 现在,想解决进给率转换数学问题吗?我的第一个猜测是通过电缆空间和笛卡尔空间中矢量长度的比率来缩放进给率,但也许我遗漏了一些东西。 |
贡献者作者
我将检查进给率转换,还想测试将 z 轴配置为带有步进器和伺服器的笔是否有效。接下来的两周我要出城。我将加快了解 github 功能,例如您提到的功能。谢谢。
|
机器上下文
Wallplotter 运动学测试机。
功能说明
我很高兴最近偶然发现了 FluidCNC,特别是 WallPlotter 运动学模块。我设法让事情在我的机器上工作,但似乎在笛卡尔空间到绘图仪空间转换期间分割的工作方式存在不一致。我最终研究了由 pentacular 创建的 wallplotter.cpp 中的代码,并进行了一些更改以使其更好地工作。我对 git、github 和 discord 有点陌生,但我创建了一个分支,其中包含对 forbin1ab/FLuidNC 的最新 devt 分支的更改以及我制作的示例 .yaml 文件。我还创建了一些关于 markdown 中使用的测试机器的文档,并将其放在https://github.com/forbin1ab/FluidNCWallplotter上。
其他方法
不适用
我能提供什么帮助
我可以帮助对 wallplotter 运动学和可能的其他运动学模块进行任何额外的测试,因为我现在对这些模块更加熟悉了。