现在,手臂已经组装好了,是时候将其提升到一个新的水平了。 现在是释放野兽并完全控制整个机器人手臂的时候了。 在这篇文章的结尾,您应该对如何对该机械臂进行编程以完成您想要的事情有一个想法。 要了解我如何到达这里,请访问我以前的文章,该文章描述了组装过程- 构建自己的机器人手臂-组装 。

你需要什么

再一次,您将需要一些额外的硬件来促进对伺服器的并行控制,并需要使用焊料来组装屏蔽层。

伺服护罩

让我们从第一步开始-准备伺服屏蔽。 如果您购买了随时可用的伺服护罩,则可以随时跳过此部分。 此处的主要目的是最终完成组装后的伺服护罩,如下图所示。

python开发机械手臂控制系统的过程 机械手臂编程_python

订购Adafruit防护罩时,它会像这样到达,您必须自己将其焊接在一起。 如果您以前有焊接经验,那应该是小菜一碟。 如果这是您的第一个焊接项目,我建议观看一些YouTube视频,以了解如何焊接和组装Arduino屏蔽罩。 准备就绪后,请查看有关如何组装防护罩的 Adafruits教程。

python开发机械手臂控制系统的过程 机械手臂编程_linux_02

准备好防护罩后,尝试将其中一个伺服器连接到它。 请记住,您需要将PWM,V +和GND引脚与伺服输出线匹配。

python开发机械手臂控制系统的过程 机械手臂编程_python开发机械手臂控制系统的过程_03

程式设计

要使用此屏蔽,我们需要能够以编程方式解决它。 Adafruit发布了一个库,以方便在此处使用 。 我还建议浏览库GitHub存储库 ,并查看用法示例。

研究和发展

在这一点上,需要一些研究。 目的是找到每个舵机的边缘位置或中间舵机的边缘位置,以便以后可以将它们用作参考点。 您需要尝试几个值来找到适合您的构建的最佳位置。 根据伺服规格,这些伺服的工作频率为50 Hz。 当涉及到伺服运动时,您需要检查的光谱范围是0到4096。您将得出的值是根据您组装手臂的方式得出的,因此它们可能与我的不同。

在这一点上,您可能希望利用以下简化伺服器控制的方法:

伺服写入方式

float SERVOFREQ = 50;
float pulseconstant;

void setup() {
    pulseconstant = (1000000/SERVOFREQ)/4096;
}

void servoWrite(uint8_t n, float pulse) {
    float pulsetick = pulse/pulseconstant;
    pwm.setPWM(n, 0, pulsetick);
}

对我有用的价值观如下:

  • 基本伺服
  • 左右旋转手臂
  • 高度伺服
  • 改变抓爪的高度
  • 长度伺服
  • 改变手臂的范围
  • 握把伺服
  • 打开和关闭抓手

伺服运动只是根据要移动伺服器的方向更改值的问题。

最终代码

将所有零件放在一起会得到一个像这样的简单草图。 该草图的全部目的是将手臂设置到其初始位置。

初始位置草图

#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

#define BASE 0
#define HEIGHT 1
#define LENGTH 2
#define GRIP 3

float base_init = 1440;
float height_init = 1675;
float length_init = 1440;
float grip_init = 2155;

float SERVOFREQ = 50;
float pulseconstant; 

void setup() {
    pulseconstant = (1000000/SERVOFREQ)/4096;

    pwm.begin();
    pwm.setPWMFreq(SERVOFREQ);

    servoWrite(BASE, base_init); 
    servoWrite(HEIGHT, height_init);
    servoWrite(LENGTH, length_init);
    servoWrite(GRIP, grip_init);
}

void loop() {
}

void servoWrite(uint8_t n, float pulse) {
    float pulsetick = pulse/pulseconstant;
    pwm.setPWM(n, 0, pulsetick);
}

下一步是什么?

此时,您应该将机器人手臂抬起并开始操作。 鉴于您的编程能力,您可以对其进行编程以完成自己喜欢的事情。 但这还不够(至少对我而言)。 这种设置非常酷,但是缺少交互性。 因此,在我的下一个也是最后一篇名为“构建您自己的机器人手臂-远程控制”的文章中,我将探讨对手臂进行交互式控制的选项。 有多种选择,例如台式机应用程序或移动应用程序,但是由于我拥有PlayStation 4,因此我决定使用我的PS4无线控制器来控制手臂。 是的,这很有趣:)

这篇文章中使用的所有图片均来自adafruit.com 。 随时检查他们。

翻译自: https://www.javacodegeeks.com/2015/07/build-your-own-robot-arm-programming.html