大数跨境
0
0

自制一个基于Arduino的3D打印六足机器人

自制一个基于Arduino的3D打印六足机器人 DF创客社区
2024-07-04
2
导读:整一个
【点击上方「蓝字」关注DF创客社区,一起成为技术颜控】

六足机器人,顾名思义拥有六条腿,这些腿可以独立移动,使它们能够很好地穿越不同类型的地形。

材料和工具

  • 18× MG996R 伺服电机
  • Arduino MEGA
  • Arduino MEGA 传感器扩展板
  • 3S 锂电池 2200mAh
  • 9V 电池
  • 9V 电池连接器
  • DC-DC 降压转换模块
  • 22 AWG 单芯电线
  • XT60 连接器
  • M3 螺丝
  • 扎带
  • 3D 打印机
  • 焊接铁
  • 螺丝刀
  • 万用表

视频演示

为了更好地了解整个制作过程以及查看六足机器人的实际运动,可以先看这个视频。


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, 6002600);
}

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_1hat_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创客社区

转载请注明来源信息


硬件军火库

DF硬件军火库

点击了解详情👆


DFRobot官方品牌店 https://dfrobot.taobao.com/

DFRobot官方旗舰店 https://dfrobot.jd.com/


文中涉及的文件,可以点击左下角阅读原文,或者在公众号后台回复“六足机器人0704”获取!

大家有什么想说的,欢迎在下方留言



 往期项目回顾 



一文读懂全系列树莓派!

学习这20条Linux命令,玩转你的树莓派!

6块屏幕的树莓派Cyberdeck,了解一下!

用树莓派「点亮」圣诞树

树莓派自制云服务器,放进口袋随身携带!

用树莓派制作一个“数码显微镜”

春天来了,你需要一款复古风格的树莓派相机

3D打印的树莓派蜘蛛机器人

用树莓派和ESP32做一台掌上电脑!

做一个基于树莓派Zero的复古游戏主机

全网最全!树莓派扩展板怎么选?一个视频搞定!


点击阅读👆

【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读2.4k
粉丝0
内容1.3k