六足机器人—一款Linux驱动的蜘蛛机器人

作者:Anton Borisov

如今,Linux 无处不在。它驱动着大规模 HPC 系统和小型嵌入式设备——从太空到地下。虽然构建像漫游车这样的无人设备或使用 Linux 运行直升机在某种程度上相当容易,但创建一个行为像生物体的机器人仍然是一项艰巨的任务。幸运的是,有志者事竟成——而且还有 Linux。后者成为了六足机器人的核心——这是一种由 Matt Bunting 开发的、类似于蜘蛛的机器人设备。

Hexapod—a Linux-Powered Spider Robot

Matt Bunting

AB: Matt,你是运行在 Linux 上的六足机器人的创造者。但在谈论机器人之前,请告诉我们你的 Linux 经验以及 Linux 在你生活中扮演的角色。

MB: 机器人领域将我引入了 Linux 的世界。我之前在 UNIX 中做过一些基础开发,所以将我的操作系统切换到 Linux 的过程非常顺利。目前,我使用 Linux 进行大多数与开发相关的事情,例如机器人项目和摆弄 OpenCV。我在家里有几台基于 Atom 的 Linux 计算机,运行着一个定制的基于网络摄像头的安全系统。

AB: 六足机器人总体上是什么?其设计背后的想法是什么?

MB: 基本的六足机器人是一个六条腿的平台。每条腿都可以以多种方式配置。其中一种方式是斯图尔特平台。我制作的版本是一个带有非刚性足部的便携式平台(主体)。便携式平台中的每个足部可以有任意数量的自由度 (DOF)。一些最简单的六足机器人总共有三个自由度,但这些自由度仅限于非常简单的运动,例如仅向前或向后移动。为了平台的不可思议的灵活性,每条腿需要三个自由度(总共 18 个)才能将每个“足部”定位在几乎任何给定的 (x,y,z) 坐标处。这使得六足机器人具有完全的主体灵活性,因此主体可以在任何方向、以任何组合平移或倾斜。最近,人们对每条腿四个自由度产生了兴趣。这不会增加主体控制量,但可以扩大范围。我希望设计 18 个自由度以获得最佳的主体灵活性,从而将六足机器人用于各种应用,从神经网络 (NN) 的实现到地形适应方法。

Hexapod—a Linux-Powered Spider Robot

这款六足机器人看起来像一只真正的生物蜘蛛。

AB: 而且你在这项设计上取得了成功——一个具有 18 个自由度的蜘蛛机器人,对吗?

MB: 我当然会这么说。目前,这是一个非常可靠的设计,可以承受相当多的滥用。虽然它功能齐全,但我一直在寻找升级它的方法。我有一些想法,但尚未认真整合任何东西。

AB: 有人可以用另一种机器人,比如漫游车,来实现这些目标吗?

MB: 由于我的目标是研究腿式运动技术,因此轮式漫游车对于我想在机器人技术领域做的事情来说没有意义。有时有人问我六足机器人的实际应用是什么,但在许多情况下,六足机器人是不切实际的。我的机器人非常耗电,而且我使用的学习技术花费的时间太长,以至于无法有效地用于任何实际用途,例如将六足机器人送上太空任务或修理水下爆裂的管道。

六足机器人的腿式结构和复杂性在机器学习领域很有趣,因为这种复杂性使得高效学习变得困难。轮式机器人可能很快学会运动,但这并不能推广所涉及算法的有效性。我感兴趣的机器学习的一个方面包括机器在机器人损坏后重新学习的能力。例如,如果机器人学会了走路,开始在危险环境中行走,并且一块岩石压碎了两条腿,那么实现的算法可以感觉到先前使用的运动不是很有效,并且它可以开始根据新的配置学习最佳的行走策略。

AB: 描述一下你是如何“教”六足机器人走路的。之前,你提到了神经网络和适应方法。你是将一些基本的行为函数加载到软件中,然后让蜘蛛机器人尝试为每种地形找到最佳的行走方式,还是有其他方法?

MB: 到目前为止,我已经探索了两种不同的学习机制,这两种机制的学习方式截然不同。第一种是强化学习技术,称为 Q-Learning,采用 Softmax 动作选择。基本上,六足机器人会在不同的电机状态之间进行实验。从一种状态开始,算法将 Softmax 应用于当前的 Q 矩阵以获得动作选择概率,并基于随机数生成器选择一个动作。Q 矩阵中值较高的值(向前移动的良好过渡)更有可能被选中,而其他值(不良过渡,例如向后移动)则不太可能被选中。选择动作后,六足机器人首先使用指向前方的网络摄像头拍摄图像,然后执行该动作。该动作将六足机器人移动到新状态。在新状态下,拍摄另一张图像。状态转换奖励通过两张图像之间的差异来衡量。

我使用了 OpenCV 中的一个函数来测量光流。来自光流函数的 resulting 向量场经过一些简单的数学运算,以根据向量的总体方向性确定六足机器人如何移动。例如,如果 resulting 图像具有因向前移动六足机器人而产生的“放大”感,则所有向量都将从图像中心向外指向。这转化为高奖励。如果向量指向中心,则六足机器人向后移动,导致成本或负奖励。我还将身体的扭转和相机的平移运动作为负奖励包括在内,因为目标是使其非常平稳地向前行走。

奖励值用于更新 Q 矩阵。基于转换奖励和来自新状态的可能的未来奖励,Q 值会被更新。Softmax 动作选择在探索性和利用性行为之间取得了很好的平衡。一旦步态被很好地学习,六足机器人探索其他状态转换的可能性就很小。但是,如果六足机器人断了一条腿并应用了先前学习的方法,则奖励值将大大降低。新更新的 Q 矩阵将导致探索先前学习的转换的可能性降低,并开始尝试其他转换。

Hexapod—a Linux-Powered Spider Robot

Q-学习技术算法

神经网络 (NN) 非常不同。我将网络的大部分基于 Randall Beer 在基于神经网络的六足机器人方面的工作。我使用的神经元是不同的,更受生物学影响。我相信 Beer 使用的是连续神经元,它们是可微分的,但我使用的神经元是集成的,并通过适应性激发。它们并没有真正模仿生物学,但它们比基于连续的神经元更接近生物学。我构建了类似于 Beer 的网络,但我必须添加额外的神经元来移动腿。该网络基于一个称为中央模式发生器 (CPG) 的振荡器,也称为起搏器神经元。这些是通过相互抑制两个神经元来创建的。一个神经元开始放电,阻止另一个神经元放电,但由于适应性而减慢速度,最终另一个神经元将开始放电,抑制第一个神经元,依此类推。这些 CPG 用于驱动操作腿部的其他神经元。

为了正确学习每个连接的权重,使用了遗传算法来训练权重。我使用了 16 的种群大小,适应度函数基于运行六足机器人 10 秒并测量行进距离和 resulting 方向角。resulting 角度与起始方向越接近,行进距离越远,resulting 适应度值就越好。六足机器人在 100 代之后学会了非常有效地行走。

AB: 你是指 100 次学习迭代,还是 100 步?

MB: 在遗传算法中,这是世代数,可以将其视为迭代次数。在每一代中,都会创建一个新的种群大小为 16 的种群。

AB: 一些消息来源说,这个机器人是用垃圾零件组装的。是真的吗?

MB: 这有点被很多人误解了,因为他们认为我在 YouTube 上发布的视频是我现在的状态,而不是我刚开始时的状态。六足机器人最初是一个课堂项目,我的资金、时间和资源有限。我(像任何业余爱好者、创客或黑客一样)有一个抽屉装满了多年来我一直在收集的零件。我九岁时开始了这个抽屉,我当时的导师称之为“我不知道它们是什么但它们将来可能有用的抽屉”。因此,当课堂项目的时间到来时,我搜索了我拥有的所有伺服电机、面包板和金属支架,并将一个腿部不匹配的六足机器人拼凑在一起,以实现称为 Q-learning 的强化技术。这不是我在 YouTube 上发布的六足机器人。

这门课的教授 Tony Lewis 博士非常喜欢这个项目,并希望在他的实验室里聘请一名本科生。我也需要一份工作,所以他聘请我进入了他的实验室,即机器人和神经系统实验室 (RNSL)。在 RNSL,有一台 Dimension 3D 打印机,所以我利用了它,并攒钱购买了配套的电机。我对六足机器人进行了彻底的改造(包括一台新的基于 Atom 的 fit-PC2),没有使用任何垃圾零件,然后在 YouTube 上发布了一个视频。这就是英特尔的 Stewart Christie 看到的视频。此外,该视频根本没有展示任何学习过程。这只是在 hexapodrobot.com/forum 论坛上向论坛成员展示我的平台在运行。

Hexapod—a Linux-Powered Spider Robot

六足机器人的初始版本是由金属支架、面包板和伺服电机制成的。

AB: Linux 是六足机器人成功的关键。你为什么决定使用 Linux?最终选择的是哪个特定的发行版?

MB: 我想要用于视觉处理的终极板载计算能力,这促使我选择了 CompuLab 的 fit-PC2。在 RNSL,Ubuntu 是首选发行版,用于从模拟到直接机器人操作的所有方面。我们使用 Linux 是因为它的灵活性和可用的资源。

AB: 主要硬件单元,Atom 主板,是由英特尔捐赠的。你能否阐明一下你与英特尔的合作?

MB: 最初,我在与英特尔合作之前购买了这台计算机。在寻找嵌入式解决方案时,我正在研究 Gumstix 板和基于 Via 处理器的板。这些对于运动学集成非常有用,但对于视觉的繁重计算,我需要更强大的东西。幸运的是,当时 CompuLab 刚刚发布了 fit-PC2,它是机器人的理想计算机。一旦我发布了视频,几天后,英特尔的 Stewart 在我的 YouTube 视频上发表评论,表示对六足机器人感兴趣。我联系了他,大约一个月后,他说英特尔希望我制作两个六足机器人,一个用于贸易展览,另一个用于我自己,但如果英特尔的人同时进行多次演示,他们可以借用我的机器人。

Hexapod—a Linux-Powered Spider Robot

机器人控制方式的总体方案

AB: 实际上,六足机器人实际上是一个高科技模型,因为使用 3D Stratasys 打印机对于普通业余爱好者来说是不可用的。你制作了一个模型——也就是说,在 CAD 软件中制作了一个框架和腿——打印出来并将伺服电机和摄像头连接到主体上,就是这样。我遗漏了什么吗?

MB: 3D 打印已经变得非常便宜,业余爱好者可以花大约 1,000 美元制作自己的家用 3D 打印机。质量远不及我使用的 Stratasys 机器所能达到的水平,但仍然可以创建功能部件。我的六足机器人在功能上与其他可以用现成组件组装在一起的六足机器人并没有太大不同,但由于我可以随意使用 Stratasys 机器,我充分利用了它,并尝试制作复杂的曲线形状。实际上,我使用 SolidWorks 进行机械设计,因为它是由我的大学免费提供的,但我将研究一下 QCad。

AB: 没有中间件的机器人只是另一个嵌入式 Linux 设备。你是否为你的“蜘蛛机器人”使用了特定的软件,还是你为它编写了软件?

MB: 我用 C++ 开发了六足机器人的所有软件,使用 OpenCV 库进行模拟和视觉处理。

构建蜘蛛机器人

以下是构建蜘蛛机器人所需的资源

  • 框架:六个 Robotis 的 AX-12/RX-10/RX-28 伺服电机,3D 打印外壳。

  • 计算单元:一个基于 CompuLab 的 Intel Atom Z530 的 fit-PC2 主板。

  • 工时:380 小时。

  • 发行版:Ubuntu Linux 9.08。

  • 使用的软件:GEdit、OpenCV 和 C++。

  • 科学领域:神经网络和适应方法。

AB: 你能估计一下构建六足机器人(组装机械和电气部件)和编写软件本身花费了多少时间(以小时为单位)吗?

MB: 哈哈哈。当然,这花费了大量时间。我每天工作几个小时,一次工作几周。最初的 Q-Learning 机器人可能花费了 200 个小时。然后我对它进行了改造,这可能花费了 100 个小时,然后其他项目可能每个花费了 80 个小时。

AB: 你之前说过,表面之下的操作系统是 Ubuntu。你使用什么 IDE 来编写机器人的中间件——Qt、WxWidgets、ncurses 还是其他什么?

MB: 实际上,我只使用 GEdit,并且完全使用 C++ 和 OpenCV 库。我构建的模拟完全是使用 OpenCV 完成的,一次绘制单独的线条。当 I do this 时,我觉得自己像是在重新发明轮子,但我确实学到了很多东西!

Hexapod—a Linux-Powered Spider Robot

第一个实验是在模拟环境中完成的。

AB: 你是否在 GPL 或其他许可下发布机器人的原理图和辅助软件?

MB: 我一直在考虑在许可下发布我的运动学代码,但我在这个领域一无所知。也许 LJ 的读者可以为我指明正确的方向?

AB: 你是亚利桑那大学的高年级学生,这个项目在某种程度上是你的毕业作品。你计划继续其未来的发展吗?

MB: 我期待着作为亚利桑那大学的研究生在六足机器人中实现更多功能。目前,我正在研究一个微型版本。我确实想进一步探索视觉和腿式运动之间通过使用生物启发神经网络的联系。

AB: 你认为,这个“蜘蛛机器人”可以在哪里使用并对人们有用?

MB: 六足机器人可以成为一款出色的搜索和救援型机器人。在像地震这样的自然灾害中,如果能有大量机器人在变成废墟的建筑物中自主搜索幸存者,那将是非常理想的。然而,环境是危险的,可能会对机器人造成损坏。一旦六足机器人受到损坏,纯粹基于逆运动学的六足机器人将变得毫无用处。但是,如果它可以重新学习,则六足机器人仍然可以在给定的新配置下运行。就像我之前提到的那样,它更像是探索机器学习技术的一种工具,并希望通过研究发现更快的算法。希望更好的算法可以用于基于消费者的机器人技术,以提高标准。

AB: 你计划在自主行走研究中使用六足机器人还是你的下一个原型 CrustCrawler?

MB: 当然。我实现的学习机制更具科学性,我当然鼓励大家使用机器人平台探索科学,但这不一定是 CrustCrawler 平台的目标。我认为这是一种让任何人都可以轻松入门六足机器人领域的方法。如果不同的几何形状更有利于我希望六足机器人做的事情,那么我当然会使用它。在我看来,六足机器人只是研究的工具。我当然希望我的六足机器人能够自主漫游并完成一些任务,即使任务很平凡。CrustCrawler 六足机器人和我个人的六足机器人的优点是它们可以轻松互换,因为它们使用的电机使用相同的协议进行通信。我所要做的就是更改一些几何校准设置,它就可以正常运行。

照片由 Matt Bunting 和英特尔公司提供。

Anton Borisov 有着广泛的兴趣领域,从集群和嵌入式设备到人工智能和程序谜题。将它们联系在一起的一件事是 Linux,他最喜欢的操作系统。

加载 Disqus 评论