自制一个基于Arduino的3D打印六足机器人
六足机器人,顾名思义拥有六条腿,这些腿可以独立移动,使它们能够很好地穿越不同类型的地形。材料和工具
[*]18× MG996R 伺服电机
[*]Arduino MEGA
[*]Arduino MEGA 传感器扩展板
[*]3S 锂电池 2200mAh
[*]9V 电池
[*]9V 电池连接器
[*]DC-DC 降压转换模块
[*]22 AWG 单芯电线
[*]XT60 连接器
[*]M3 螺丝
[*]扎带
[*]3D 打印机
[*]焊接铁
[*]螺丝刀
[*]万用表
视频演示
为了更好地了解整个制作过程以及查看六足机器人的实际运动,可以先看这个视频。
https://dfrobot.loll.cc/video/3D%20Printed%20Hexapod.mp4
3D 打印
这个项目所有的机械部件都是通过 3D 打印的。大多数部件可以使用 PLA,标准设置和最少的支撑来打印。
一条腿由以下部分组成:leg_mount.stl, coxa.stl, femur.stl, tibia.stl,总共需要打印 6 次。
其余的部件组成了机器人的基座,只需要打印一次,mounting_post.stl 是例外,需要两份。
建议先打印一个单腿并组装起来,来检查所有部件是否正确配合。
3D打印文件可以文末打包下载。
腿部组装
首先,将伺服电机插入腿部支架(leg_mount)、髋节(coxa)和胫骨(tibia)部件中——确保小心地将伺服电缆穿过每个部件中的布线孔。尺寸可能会非常紧,但所有部件应该能够紧密地配合在一起。
确保每个伺服电机都设置为 0 度位置,将伺服臂连接到每个电机轴上。
现在所有部件都已摆放好,组装一条腿应该相当简单。
我们希望腿部有尽可能大的活动范围,所以建议按照上面的 GIF 所示的角度连接关节(当腿被拉下时)。
腿部代码
下一步是让腿动起来。每个伺服的 3 个引脚需要连接:红色连接到 5v 电源或电池,棕色连接到地线,黄色连接到 Arduino 上的数字引脚。
为了测试腿部关节,这段代码片段可以上传到 Mega:
// snippet to move leg joints
#include <Servo.h>
#define SERVO_PIN 23
#define J1_OFFSET 45
#define J2_OFFSET 0
#define J3_OFFSET 90
Servo servo;
void move_joints(double j1, double j2, double j3){
if (j1>=-15 && j1<=105 && j2>=0 && j2<=90 && j3>=0 && j3<=90){
servo.write(j1 + J1_OFFSET);
servo.write(j2 + J2_OFFSET);
servo.write(j3 + J3_OFFSET);
}
}
void setup(){
servo.attach(SERVO_PIN, 600, 2600);
}
void loop(){
move_joints(...);
}
逆向运动学
将腿的末端放置在特定点需要计算腿的逆运动学。结合之前的move_joints()代码,下面的代码可以用来移动到 XYZ 位置:
// inverse kinematics
#define FEMUR_L 60
#define TIBIA_L 95.334
#define TIBIA_ANGLE 17.543
#define Y_OFFSET 50
#define Z_OFFSET -90
void move_xyz(int leg, double x, double y, double z)
{
y += Y_OFFSET;
z += Z_OFFSET;
double l = sqrt(x*x + y*y + z*z);
double j1 = atan(x/y);
double j2 = acos((FEMUR_L*FEMUR_L - TIBIA_L*TIBIA_L + l*l) / (2*FEMUR_L*l)) + atan(z / sqrt(x*x + y*y));
double j3 = acos((FEMUR_L*FEMUR_L + TIBIA_L*TIBIA_L - l*l) / (2*FEMUR_L*TIBIA_L));
j1 = 45 + j1*(180/PI);
j2 = 30 + j2*(180/PI);
j3 = 90 + 30 - TIBIA_ANGLE - j3*(180/PI);
move_joints(j1, j2, j3);
}
继续组装和编程
其余的六足机器人腿可以按照之前完全相同的方式打印和组装。由于有 6 条腿,总共需要 18 个舵机。
连线
将传感器扩展板连接到 Arduino MEGA,并连接每个舵机。拍照或记录每个舵机连接到扩展板上的哪个引脚。
将 5V 和 GND 线连接到传感器保护板上的接线端,以备后用。
安装腿部
使用 M3 螺钉,将剩余的腿固定到六足机器人底座框架上,留下两条平行的腿未固定,以便进行下一步。
底盘组装
将六足机器人翻转过来,将剩下的两条腿连接到底座框架和两个安装柱(mounting_post)上,如图所示。
将 Arduino 用支柱(或扎带)固定到 mega_mount 上,并拧入安装柱。
顶盖电子设备
将 DC-DC 降压转换器模块安装到顶盖(top_cover)上。使用万用表应将其设置为输出 5V。
现在可以使用螺钉将两个半部分 hat_1 和 hat_2 固定到顶盖上。
将传感器扩展板的 5V 和 GND 线连接到降压转换器输出端。
将 XT60 电池连接器焊接到一些电线上,并将这些电线拧入降压转换器输入端。记得检查并确保此连接和上一个连接的极性正确。
步态代码
最后一步是将代码 hexapod.ino上传到 Arduino。在代码中有实现六足机器人简单波动步态的函数。
代码可以在文末打包下载。
代码的快速解释:
[*]每条腿经历两个阶段:摆动相和支撑相。
[*]摆动相:腿被抬起并向前移动。
[*]支撑相:腿着地,推动身体向前。
[*]腿以波纹模式移动,以确保六足机器人保持稳定。
[*]不要同时将超过两条腿从地面抬起
运动示例
[*]想象一下,这些腿的顺序是:1、2、3、4、5、6。
[*]序列从第1条腿开始进入摆动相(抬起并向前移动)。
[*]当第1条腿开始着陆时(摆动相结束),第3条腿开始其摆动相。
[*]接下来,当第3条腿着陆时,第5条腿开始其摆动相。
[*]与此同时,腿 2、4 和 6 处于支撑阶段,保持六足机器人稳定并向前移动。
有关六足机器人步态更多信息可在网上找到。
⚠️ 在上传代码之前,请确保将偏移量和引脚分配更改为正确值。
完工
原文地址:https://www.instructables.com/3D-Printed-Hexapod-Robot/
项目作者:zeroshot
译文首发于:DF创客社区
转载请注明来源信息
这个主板是那种?不是Uno3吗? mega 刘睿鹏 发表于 2024-7-4 18:31
这个主板是那种?不是Uno3吗?
Arduino MEGA 厉害厉害,赞!{:6_215:}
页:
[1]