带有Arduino、乐高和3D打印部件的DIY双足机器人

您所在的位置:网站首页 双足机器人制作过程 带有Arduino、乐高和3D打印部件的DIY双足机器人

带有Arduino、乐高和3D打印部件的DIY双足机器人

2024-07-09 03:10| 来源: 网络整理| 查看: 265

介绍

多年来,制造能够模仿人类行走的双足机器人一直是科学家、制造商和发明家关注的焦点。事实上,双足机器人是具有提供运动的铰接腿机构的移动机器人。与轮式机器人相比,它们可以上楼并越过障碍物,尽管速度较慢。由于关节数量多且在行走过程中保持稳定性,构建仿人双足机器人一直很困难。如果你没有正向、逆向运动学和控制工程的学术知识,那绝对没有问题。在本教程中,我们将使用乐高组件、Arduino 板和一些现成的电气组件制作一个有趣且易于构建的双足机器人(图 A)。这些说明是按照您可以在家中制作的方式准备的。

图 A - 双足机器人的一般视图

在这个项目中,双足机器人使用了一种有趣的机械机构,该机构仅使用一个直流齿轮电机模拟人类行走。结果非常有趣。

在本教程中,我们将使用 Lego Technic 零件制作 Biped 机器人的身体结构和腿部机构。然后,一个直流齿轮电机将通过锥齿轮和正齿轮系驱动支腿机构(图 B)。

  pYYBAGOlEquAdZwbAAFyoSvS888696.jpg 图 B – 车身结构、电子设备和齿轮电机的组合  

在下一步中,我们将添加一个 Arduino Nano 作为 Biped 的大脑。Arduino Nano 使用小型强大的微处理器,使其适用于轻量和小型项目(图 C)。

  poYBAGNVnkOAEIfHAAJ6Xu0KBTE831.jpg 图 C - Arduino Nano 板  

各种现成的电机、传感器和屏蔽可以轻松连接到 Arduino 板。此功能使我们能够使用 Biped 执行各种任务。例如,您可以通过对 Arduino 板进行编程来告诉 Biped 来回移动和跳舞。

材料   poYBAGOlEriAX98oAAIZLOyufbk790.jpg 图 D – 电子和机电元件   1x TT 齿轮马达 1x 3D 打印齿轮电机外壳 1x 面包板,迷你尺寸 1x Arduino Nano 1x Neo Pixel LED 环 1 个电源插孔 1x 3D 打印乐高兼容联轴器 1x L298N 迷你电机驱动器 1 个按钮 1x M3 x 30 机械螺丝 2x M3 x 25 机械螺丝 公对公跳线   pYYBAGOlEr2AJgdVAAHM-TFKqKE653.jpg 图 E - Lego Technic 组件   框架,5x7 模块 双锥齿轮,36齿 锥齿轮,12 齿 梁,9 模块 梁,5 模块 梁,3 模块 角梁,3x5 模块 衬套,1 个模块 车轴,8 模块 角块 2, 180° 双十字块,3模块 带十字孔的横梁,2 模块 带挡块的轴,4 模块 梁,3 模块 车轴,2 模块 带摩擦/轴的连接销,2 模块 带轴的连接器销,2 个模块 管,2 模块 带衬套的连接器销钉,3 个模块 带摩擦的连接器销,3 模块 带摩擦力的连接销,2 模块 带轴孔的轴连接器 角块 1, 0° 机械零件的组装

让我们开始组装 Biped 的身体结构和腿部机构。

  pYYBAGOlEsGACAYTAAFY0yIsKdU299.jpg 图 F - 四连杆机构和平行四边形机构     3D打印零件

Lego Technic 组件仅与 LEGO 齿轮马达匹配。为了将动力从现成的齿轮电机的轴传输到乐高齿轮或车轴,我们需要打印齿轮电机的外壳和联轴器。外壳将用作齿轮电机和乐高技术梁之间的接口或适配器。联轴器将齿轮电机轴连接到乐高技术轴。这些 3D 打印部件称为乐高兼容外壳和轴(图 G 和图 H)。我们还创建了正面和背面机器人的身体覆盖物。后盖看起来像氧气胶囊,保护电子部分。前盖的作用类似于盔甲(图一)。请下载 3D 文件并使用您的 3D 打印机打印电机外壳、乐高兼容联轴器和盖子,或使用附近的创客空间中的那些。

  poYBAGOlEsiASo_BAAECImYH1Us821.jpg 图 G - 3D 打印乐高兼容电机外壳     pYYBAGOlEsyAZrkWAAENxQ-pKMQ258.jpg 图 H - LEGO 兼容齿轮电机的一般视图     poYBAGOlEtCAYNWjAAFKU8AjYl8365.jpg 图 I - 3D 打印的前后车身盖   。确保正确实现图 J 中所示的电路原理图,这样您就不会最终损坏您的 Arduino 板和电机驱动器。

 

  poYBAGOlEtyADGlMAAET6sHMZxg962.jpg 图 J - 电路示意图     编程

您可以拿起乐高积木,让您的想象力发挥无限。当然,编码也是您可以享受很多乐趣并最具创造力的部分。您可以转到 Arduino IDE 并编写自己的代码来告诉 Biped 做什么。但是现在,让我们从这段代码开始。

#include #define PIXELSPIN A1 // Which pin on the Arduino is connected to the NeoPixels? #define NUMPIXELS 8 // How many NeoPixels are attached to the Arduino? Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800); #define M1 A4 #define M12 A5 #define button A3 int buttonNew; int buttonOld = 1; int Motorstate = 0; void setup() { // Initialize Arduino pins to outputs pinMode(M1, OUTPUT); pinMode(M12, OUTPUT); pinMode(button, INPUT_PULLUP); // This initializes the NeoPixel library. pixels.begin(); for (int i = 0; i 9; i++) { // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255. pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // This sends the updated pixel color to the hardware. pixels.show(); } } void loop() { buttonNew = digitalRead(button); if (buttonOld == 0 && buttonNew == 1) { if (Motorstate == 0) { // bright blue color. pixels.setPixelColor(1, pixels.Color(0, 0, 250)); pixels.setPixelColor(2, pixels.Color(0, 0, 250)); pixels.setPixelColor(3, pixels.Color(0, 0, 250)); pixels.setPixelColor(5, pixels.Color(0, 0, 250)); pixels.setPixelColor(6, pixels.Color(0, 0, 250)); pixels.setPixelColor(7, pixels.Color(0, 0, 250)); pixels.show(); // Motor run. digitalWrite(M1, HIGH); digitalWrite(M12, LOW); delay(1000); digitalWrite(M12, HIGH); digitalWrite(M1, LOW); delay(1000); Motorstate = 1; } else { for (int i = 1 ; i 8 ; i++) { pixels.setPixelColor(1, pixels.Color(0, 0, 0)); // Neopixel off. pixels.show(); } // Motor stop. digitalWrite(M1, HIGH); digitalWrite(M12, HIGH); Motorstate = 0; } } buttonOld = buttonNew; } 运行你的 Biped  

请通过下面的评论告诉我们您对本教程的看法。您的反馈将帮助我们改进未来的工作。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3