FirePick Delta 的项目日志,开源微工厂
软件拓扑和运行原理
OpenPnP 是机器的高级大脑,它执行看似简单的事情,例如“拿起那个部分”和“把它放在那里”。许多库和子系统向它提供信息,它通过其他库和软件模块将信息传递给各种电机和执行器。它是由 Jason von Nieda 创建的,早在 FirePick Delta 开始之前。它在技术上仍处于 alpha 状态,但底层软件是可靠的,并已在多台生产机器上使用。虽然它写得很好,并且非常模块化和可扩展,但文档并不好......直到现在。本着开源和完全公开的精神,我们决定自己记录 OpenPnP。希望我们将所有这些都推回官方项目。
上面显示的 Java 文件(“JAR”图标)可以被替换或用作基类,用于提出您自己的机器配置。上面的每个 Java 文件(配置模型除外)都可以在“machine.xml”文件中指定。如果您不熟悉 Java,这可能看起来很奇怪,但它确实很简洁。这意味着您可以指定一堆 .java 文件的路径,这将决定哪些类被实例化和使用,从而改变行为。它使代码真正干净和模块化,这对于像拾取和放置机器这样复杂的东西很重要。 OpenPnP 附带一组参考文件,用于使用 TinyG 运动控制、单头、单喷嘴和致动器、拖带馈送和向下看的相机的普通 PnP 实现。我们修改了很多东西,让它做我们需要的所有疯狂的事情。
运动驱动: 我们使用了一个定制的运动控制器板,它的灵感来自 RepRap RAMPS 1.4 和 Melzi 板,它运行修改过的 Marlin 固件。我编写了一个 OpenPnP Marlin 驱动程序,将正确的 g 代码发送到运动控制器。目前这很有效,但我们发现在内存有限且没有浮点的 8 位 arduino 上进行增量计算和多点 Z 探针校正,当我们拥有所有计算能力时,这似乎有点愚蠢圆周率。此外,我们希望使用相机和自定义 XY 校准应用程序来提高准确性,并且在 Pi 上进行这些计算要容易得多,速度也快得多。但是,此代码不是 OpenPnP 的一部分,因为我们计划在未来提供其他应用程序。这意味着 OpenPnP 不能直接与运动控制器对话,它必须通过一层软件来进行增量计算和 XYZ 校正偏移。我们将所有代码都封装在 FireFUSE(用户空间映射器中的文件系统)中,这使我们可以做很多我们稍后会介绍的整洁的事情。这在大多数情况下是非常透明的; OpenPnP 不是写入‘/dev/ttys0’,而是写入‘/dev/firefuse/sync/cnc/marlin/gcode.fire’。 FireFUSE 会将笛卡尔坐标转换为 delta 坐标,使用机器自动校准过程中的内插点计算误差偏移,并将这个新的 g 代码发送给 Marlin 驱动程序。而且,该代码将是可移植的,可以与 3D 打印应用程序、焊膏分配应用程序等一起使用。让 OpenPnP 与 FireFUSE 通信的唯一需要是 FireFUSE 驱动程序,目前正在编写中。
相机驱动程序和视觉框架 :OpenPnP 的相机支持有点挑剔,不支持出色的 5 兆像素 Raspberry Pi 相机。他们的计算机视觉是 OpenCV 代码之上的一个薄垫片,它实现了一些非常基本的寻孔功能,但并没有太多其他功能。我们的软件专家 Karl Lew 认为这是一个巨大的问题,并且在过去的一两年时间里一直在编写一个名为 FireSight 的惊人的开源视觉库。他编写了几十个很棒的视觉例程,它们可以组合成一个管道,以一种不需要高级数学或低级 C/C++ 知识的非常高级的方式。对于相机,我们使用了前面提到的 RasPi 相机模块,以及名为 FirePiCam 的“raspistill”的自定义版本。我们拍摄快照图像并将它们保存到 FUSE 文件系统,这样我们就不会磨损 SD 卡闪存中的位。为了让 OpenPnP 能够看到图像并执行计算机视觉操作,Karl 编写了一个名为“firerest-client”的 Java 库,让这一切都能正常工作。
图形界面 :OpenPnP Java GUI 非常笨重且不直观,在 2014 年,将专用监视器连接到 Raspberry Pi 似乎有点疯狂,也就是物联网的黎明。我们希望用户界面是可以从任何 HTML5 浏览器查看的自定义 Web 应用程序。 OpenPnP 不直接支持此功能,但可以通过一些工作来完成。幸运的是,Jason 编写了 OpenPnP,您可以在其中调用机器和文件配置函数的构造函数,从而绕过 GUI。由于我们在 github 上找到了一些代码,我们可以使用 node-java 桥从 javascript 调用 java 函数,反之亦然,无需太多工作。剩下的就是让我们使用 node.js、Express、AngularJS 和 Twitter Bootstrap 编写一个聪明的 Web 应用程序。我们现在正处于编写该应用程序的开始阶段。同时,我们可以正常运行OpenPNP并使用库存GUI,这允许我们调试机器的其他部分。
硬件拓扑和工作原理
我们使用标准的 Raspberry Pi Model B+。 B+ 是我们一直想要的 RPi;他们将连接器移到更合乎逻辑的位置,并添加了一组真正的安装孔。仍然有蹩脚的缓慢 Broadcom 2835,但 30 美元,您期望什么。我们经常收到这样的问题:“您为什么使用 BeagleBone Black?”或十几台其他单板计算机。答案很简单。我们正在为一台 300 美元的机器拍摄,这意味着我们需要选择一台便宜的单板计算机。 Raspberry Pi 是最便宜的,因此它获胜。 QED。 🙂 实际上,我们非常喜欢 BeagleBone black,以及其他平台,例如 Allwinner A4、Intel Galileo,甚至更传统的设置,例如 Mini ITX。我们所有的软件和硬件都应该在这些平台上运行。但是它们很贵,而且 Raspberry Pi 可以完成工作。
到目前为止,我们实际上对 Pi 的表现感到惊讶。它的点亮速度不快,但可以执行计算机视觉并毫无问题地提供网页。
ERPIHAT01 帽子板
在 Raspberry Pi Model B+ 发布后不久,RPi Foundation 发布了“HAT”规范,该规范与 Arduino Shield 或 BeagleBone 披风非常相似。这是一个定制形状的夹层板,可以定制为树莓派添加整洁的东西,而无需各种电缆和其他废话。在 HAT 之前有插件模块,但它们没有标准化。我们对新的 HAT 规范很满意,并自豪地在下面展示我们的 FirePick Delta HAT:
以下是我们的 FirePick Delta HAT 的功能列表:
- 提供一个 16×2 字符 LCD 连接器,该连接器连接到 Raspberry Pi GPIO 连接器
- 为旋转编码器和按钮开关(带 LED)提供连接器,这些连接器连接到 Raspberry Pi GPIO 连接器
- 为 Raspberry Pi 提供 12V -> 5V 降压开关电源。
- 为 RasPi 摄像头模块提供直通连接器,以便我们可以将摄像头扩展到 delta 机构的末端执行器。
- 提供一个压电蜂鸣器,由 RasPi 的 GPIO 连接器上唯一的 PWM 引脚驱动。这比使用 Pi 的音频插孔便宜。
- 根据官方 HAT 规范,该板在 +5VDC 输入上提供必要的 EEPROM 芯片和反馈保护。由于我们通过 GPIO 连接器供电,因此我们不需要通过微型 USB 连接器供电。
有关更多详细信息:FirePick Delta 的项目日志,开源微工厂
制造工艺