基于树莓派Zero的六足机器人-ZeroBug

ZeroBug 是由 Raspberry Pi Zero 和 STM32F103 驱动的 3D 打印微型伺服六足机器人。Pi Zero 负责输入法和前端,使机器人可以通过鼠标、键盘、多点触控或简单的蓝牙游戏手柄进行控制。为了让机器人行走,STM32 处理腿部运动、反向运动并控制其 18 个伺服系统。所有这些计算都以 50Hz 的频率运行,使 Hexapod 能够平稳且高精度地移动。其紧凑的框架是完全 3D 打印的。

ZeroBug

一些主要功能:
• 自定义运动引擎
• 紧凑的 CAD 设计和 3D 打印组件
• 带有键盘、鼠标和多点触控输入的 Web 界面通过 websocket
• 蓝牙游戏控制器支持
• 用于对象操作的爪

在让机器人行走时,STM32F103 承担了繁重的工作。它计算运动、反向运动学、身体旋转/平移并最终驱动伺服系统。通过简单的串行协议,可以直接发送命令来控制机器人。串行接口也是 Raspberry Pi Zero W 所连接的接口。它正在运行为轮式Zerobot创建的软件的改进版本,该软件拥有用于鼠标和触摸控制的 Web 界面。最重要的是,通过 pygame 支持无线游戏手柄。 

在硬件方面,定制电路板装有 STM32、PWM 控制器和一些其他组件,而 Raspberry Pi Zero 则插入 PCB 的背面。使用的舵机是便宜的 EMAX ES08A II。除了电子设备和伺服系统之外的任何东西都是 3D 打印的。

我们用一个简单的协议来通过 UART 控制 STM32。该协议可用于从 USB 或 Raspberry Pi Zero 接收命令。Raspberry Pi 运行一个 Python 脚本来处理 Websocket 通信、UART 和 pygame。一旦客户端连接到 Pi,就会加载一个网站,该网站可用于通过键盘、鼠标或触摸输入来控制六足动物。Pygame 允许与游戏控制器进行蓝牙连接。Raspberry Pi 翻译命令并通过串行将它们发送到 STM32。Pi 还会发送一个周期性的心跳信号,因此 STM32 可以停止伺服系统,以防 Raspberry Pi 冻结。

设计单腿零件并寻找合适的伺服电机,由于该六足机器人需要 18 个舵机,因此它们决定了机器人的总成本。我选择了一些便宜的 Emax ES08A II 微型舵机。它们的尺寸非常强大,到目前为止,它们的塑料齿轮似乎保持良好。我为整套伺服系统支付了大约 80 欧元。当为机器人使用合适的智能伺服系统时,单个单元的成本可能会很高。 

尽管它们是“微型”的,但这些伺服器可以吸收大量电流。我本来打算先用锂电池,后来改用 NIMH。巨大的优势是六个 1.2V NIMH 电池加起来很好地达到了伺服系统所需的 6V。锂电池需要稳压器,并且需要大电流,这会使项目不必要地复杂化。

我设法将所有组件安装在两层板上。甚至还有用于 MPU6050 运动传感器和用于 I2C OLED 显示器的连接器的空间。该连接器可用于测试,因为 OLED 屏幕可以显示腿的状态,而无需为伺服系统供电。

最困难的部分是弄清楚运动。由于运动的速度、方向和旋转是可变的,六足动物必须确定在给定时间将哪些腿移动到什么位置。现在我的运动引擎实现是这样的:

每条腿都有树坐标:默认位置、起始位置及其当前位置。默认是腿将尝试恢复的坐标。在这个默认位置,机器人的每条腿都处于中立姿势。当六足动物开始行走时,它的腿首先与身体相反。这意味着在双腿着地时改变起始位置和当前位置。显然,如果腿不迈出一步,它们将很快超出其运动范围。使用步态序列来确定抬起哪条腿。这只不过是一个查找表,说明哪条腿可以在序列中的什么时间迈出一步。如果轮到腿迈步,则起始坐标被冻结。腿现在沿着起始坐标之间的路径朝向默认位置,直到它到达其目标。台阶高度由沿该路径的进展决定,使腿以倒抛物线的形状移动。当代码循环遍历步态序列时,每条腿都试图跟上身体的运动,试图达到它们的默认位置。

这是我能想到的最简单的方法,足以让机器人移动得非常顺畅。在开发了这个运动功能之后,剩下的就很容易实现了。为了使六足动物静态移动和旋转,腿坐标将围绕身体的中心点平移/旋转。为了确定腿部关节的角度,需要计算反向运动学。虽然这听起来可能很复杂,但这只是必须为每条腿执行的基本数学方程式。

注册会员后免费下载3D打印文件

六足机器人-ZeroBug
六足机器人-ZeroBug
六足机器人-ZeroBug文件

2 thoughts on “基于树莓派Zero的六足机器人-ZeroBug

  1. 戒萌和尚 Reply

    大佬,可以求一下您的CNC的3D建模文件么。这是我的联系方式,邮箱:1437527672@qq.com,手机:14795661432。如果可以看到,希望能得到您的回复,万分感谢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注