180| 11
|
[项目] 【Arduino 动手做】如何制作麦克纳姆轮机器人并正确编程 |
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。 Arduino的特点是: 1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。 2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。 3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。 4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。 5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。 ![]() ![]() |
## 补给品 我使用了现成的业余爱好零件来完成这个项目。它们在任何网站上都很容易买到。如果你想省钱,可以尝试从 Banggood 或 Aliexpress 购买。如果你是学生,可以做一个精彩的演示文稿或报告,向你的学校或学院展示你将如何完成这个项目,并向他们申请资金,我相信他们会帮助你的。 Wemos mini D1 4 x 360 伺服 2 x 16340 锂离子电池 2 x 16340 电池座 4 个麦克纳姆轮 SSD1306 0.96英寸I2C OLED显示屏 穿孔板(7 x 5 厘米) 公头和母头引脚 电线 焊接设备 ![]() |
## 第一步:了解麦克纳姆轮的力学原理 我们不是通过机械方式控制麦克纳姆轮,而是通过改变电机转速和旋转方向来控制机器人的运动。改变电机转速和旋转方向可以产生不同方向的运动。请参考上图,红色箭头指示电机和机器人的旋转方向。我已经在视频中解释了这个概念。 想象一下一个机器人向前移动,那么作用在轮子上的所有力看起来就像这样。现在,如果我们试着找出作用在机器人上的净力,所有作用在X方向(红色标记)的力会相互抵消,因为它们大小相等,方向相反。Y方向的力保持不变,因为它们平行且方向相同。现在我们的机器人会向前移动。 利用同样的概念,我们可以找到各个方向的力,最终得到四个方程,每个轮子一个。这些方程将帮助我们控制机器人,如下所示。 左前轮 = 速度 + 平移 - 转弯; 右前轮 = 速度 - 平移 - 转弯; LeftBackWheel = 速度 - 平移 + 转弯; 右后轮 = 速度 + 扫射 - 转弯; ![]() ![]() ![]() |
## 第二步:如何控制机器人? 答案是“操纵杆”。这个神奇的设备有两个摇杆,可以让我们同时进行多个输入。我们的控制方程包含三个变量。如果使用按钮,我们需要同时按下三个按钮才能完成任何复杂的动作。而操纵杆的使用方法非常简单自然。 我编写了一个 Android 应用,其工作原理类似操纵杆,并通过 WiFi 进行通信。它有两个摇杆,左侧摇杆可以沿 X 和 Y 方向移动,而右侧摇杆只能沿 X 方向移动。 这些摇杆控制着我们控制方程中的不同变量。如果你一次移动一个摇杆,就能获得非常静态的运动,同时使用两个摇杆也能带来乐趣。 控制速度,也就是前进和后退 控制扫射,即左右滑动 控制机器人绕其几何中心转动 所有这些参数的组合将允许您在任何方向上控制机器人。您无需担心方程式,因为电机速度已在应用程序内部计算。应用程序使用这些方程式计算速度,并通过 WiFi 将其发送给机器人。 您不会在机器人的代码中看到这些方程式,因为它们是在应用程序中实现的。作为参考,方程式应该这样写。 速度=Ly; 扫射 = Lx; 转弯=Rx; 左前轮 = Ly + Lx - Rx; 右前轮 = Ly - Lx - Rx; 左后轮 = Ly - Lx + Rx; 右后轮 = Ly + Lx - Rx; 控制机器人有很多更好的方法。这是最简单的方法,因为数学很简单。我将在下一个版本中实现更好、更快的方法。请勿将本文用于任何严肃的工作。这是一个业余项目,想了解更多关于麦克纳姆轮的信息,请阅读一些研究论文。 ![]() ![]() |
## 步骤5:电路图 我使用的是 5x7cm 的通用穿孔板。我们有两块电池,一块给 Wemos 电机,一块给舵机。它们没有连接在一起,而是分别供电,但你必须连接两块电池的地线才能组成完整的电路,否则它将无法工作。 “为了安全起见,在连接到电脑之前请切断所有电源” 如果您愿意,可以使用任何其他 ESP 板,只需更改代码中的引脚即可。该程序应适用于大多数 ESP 板。 请参考上图。我在图中和代码中都标注了伺服电机。 Fl = 左前轮 Fr = 字体右轮 Bl = 左后轮 Br = 右后轮 ![]() ![]() ![]() |
本帖最后由 驴友花雕 于 2025-6-1 18:07 编辑 ## 步骤6:代码 我们将使用 Arduino 来编程机器人。默认情况下,Arduino 中不会显示 Wemos mini。我们需要将其添加到 Arduino IDE。请参阅这篇关于 如何将 ESP32 添加到 Arduino IDE 的文章。 在编译代码之前安装这些库。
伺服引脚根据此连接伺服器,也参考电路图。
根据您的 WiFi 热点更改 WiFi 名称和密码。机器人和手机应连接到同一热点。
机器人从应用程序接收每个轮子的命令,然后将值映射到伺服器。
此函数调用各种眼睛动画。不要被眼睛部分吓到,它们只是我们在转换图像后得到的随机数。显示在这里没有任何实际用途,如果你预算有限,可以忽略它。
通常,您会看到这些类型的机器人有前进、后退、左转和右转四个功能,但我们只有两个,一个用于停止电机,另一个用于控制所有动作。 motor_forward() 这个名字其实不太好,因为它不只控制前进方向,而是通过一个函数控制所有方向的运动,因为我们把速度值作为参数传递。我懒得改它了 :)
您可能会在代码中看到一些未使用的内容。如果机器人仍然运行良好,请将其删除并重新编译代码。 |
## 步骤7:如何使用操纵杆 安卓应用程序可以从Github下载。安装后,您将看到如上所示的界面。机器人和手机都应该连接到同一个 WiFi 热点。 要连接到机器人,您必须输入机器人的 IP 地址和 UDP 端口。要获取机器人的 IP 地址,请将代码上传到 Wemos mini。在 Wemos mini 连接到电脑后,依次点击“工具”>“串行监视器”打开串行监视器,将波特率更改为 115200,并按下 Wemos 上的重置按钮。您应该会在串行监视器上看到一些文本。如果机器人连接成功,您应该会看到 IP 地址和 UDP 端口。记下这些信息并将其输入到应用程序中。现在您应该可以控制机器人了。 ![]() ![]() ![]() |
18.77 MB, 下载次数: 26
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed