【发布时间】:2013-10-02 02:19:58
【问题描述】:
我有一个有趣的问题(无论如何对我来说)。我正在为 V4 开发 OpenServo.org,我正在尝试确定行程弧的长度及其方向。
我有一个磁编码器,它可以将轴的位置从 0 返回到 4095。
舵机有两个逻辑端点,分别称为 MAX 和 MIN,它们在软件中设置并且可以随时更改,并且轴必须在 MAX 和 MIN 位置之间的一个圆弧上旋转(即行进)。例如,图中蓝色弧线有效,但红色弧线不适用于所有行程(包括 MIN 和 MAX)。
我正在尝试仅使用整数数学来制定一个简单的算法,该算法可以告诉我任意两点 A 和 B 之间的距离,该距离可以在圆周上的任何位置,以 MIN 和 MAX 为界,并且 A 作为当前位置B是目标位置,或者B是当前地点,A是目标(用B到A的负距离表示)。请注意,我允许旅行的一侧是已知的,它是“红色”或“蓝色”。
问题是当 ARC 中存在 4095/0 时,计算变得有点有趣。
【问题讨论】:
-
我们如何知道弧的哪一边是有效的? IE。为什么是蓝色的,而不是红色的?
-
在软件中设置,防止轴转动到不应该转动的地方。例如,这可能是肘关节,蓝色弧线有效但红色在机械上是不可能的(或者可能允许红色弧线,A 为 3000,B 为 2500,A 和 B 指示哪个 ARC 对旅行)..
-
更改 MIN 和 MAX 时是否保证 A 和 B 不会在对立面?
-
当 MIN 和 MAX 更改时,A 和 B 也会更改以指示您可以行驶哪一侧,因此 A 和 B 始终位于 MIN 和 MAX 之间的正确弧上
-
感谢您的回复,其中两个回复算法有效,第三个我无法开始工作。我真的很喜欢 Mark Ransom 非常简单的逻辑,但我很欣赏 Paul Griffith 的程序。非常感谢。