多年来,制造能够模仿人类行走的双足机器人一直是科学家、制造商和发明家关注的焦点。事实上,双足机器人是具有提供运动的铰接腿机构的移动机器人。与轮式机器人相比,它们可以上楼并越过障碍物,尽管速度较慢。由于关节数量多且在行走过程中保持稳定性,构建仿人双足机器人一直很困难。如果你没有正向、逆向运动学和控制工程的学术知识,那绝对没有问题。在本教程中,我们将使用乐高组件、Arduino 板和一些现成的电气组件制作一个有趣且易于构建的双足机器人(图 A)。这些说明是按照您可以在家中制作的方式准备的。
图 A - 双足机器人的一般视图
在这个项目中,双足机器人使用了一种有趣的机械机构,该机构仅使用一个直流齿轮电机模拟人类行走。结果非常有趣。
在本教程中,我们将使用 Lego Technic 零件制作 Biped 机器人的身体结构和腿部机构。然后,一个直流齿轮电机将通过锥齿轮和正齿轮系驱动支腿机构(图 B)。
在下一步中,我们将添加一个 Arduino Nano 作为 Biped 的大脑。Arduino Nano 使用小型强大的微处理器,使其适用于轻量和小型项目(图 C)。
各种现成的电机、传感器和屏蔽可以轻松连接到 Arduino 板。此功能使我们能够使用 Biped 执行各种任务。例如,您可以通过对 Arduino 板进行编程来告诉 Biped 来回移动和跳舞。
让我们开始组装 Biped 的身体结构和腿部机构。
Lego Technic 组件仅与 LEGO 齿轮马达匹配。为了将动力从现成的齿轮电机的轴传输到乐高齿轮或车轴,我们需要打印齿轮电机的外壳和联轴器。外壳将用作齿轮电机和乐高技术梁之间的接口或适配器。联轴器将齿轮电机轴连接到乐高技术轴。这些 3D 打印部件称为乐高兼容外壳和轴(图 G 和图 H)。我们还创建了正面和背面机器人的身体覆盖物。后盖看起来像氧气胶囊,保护电子部分。前盖的作用类似于盔甲(图一)。请下载 3D 文件并使用您的 3D 打印机打印电机外壳、乐高兼容联轴器和盖子,或使用附近的创客空间中的那些。
您可以拿起乐高积木,让您的想象力发挥无限。当然,编码也是您可以享受很多乐趣并最具创造力的部分。您可以转到 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;
}
请通过下面的评论告诉我们您对本教程的看法。您的反馈将帮助我们改进未来的工作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !