2024-7-4 10:19:56 [显示全部楼层]
3441浏览
查看: 3441|回复: 4

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

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

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

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

自制一个基于Arduino的3D打印六足机器人图3
材料和工具
自制一个基于Arduino的3D打印六足机器人图4
  • 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 是例外,需要两份。

建议先打印一个单腿并组装起来,来检查所有部件是否正确配合。

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

3D打印文件可以文末打包下载。
腿部组装
自制一个基于Arduino的3D打印六足机器人图6

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

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

首先,将伺服电机插入腿部支架(leg_mount)、髋节(coxa)和胫骨(tibia)部件中——确保小心地将伺服电缆穿过每个部件中的布线孔。尺寸可能会非常紧,但所有部件应该能够紧密地配合在一起。

确保每个伺服电机都设置为 0 度位置,将伺服臂连接到每个电机轴上。

现在所有部件都已摆放好,组装一条腿应该相当简单。

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

‍我们希望腿部有尽可能大的活动范围,所以建议按照上面的 GIF 所示的角度连接关节(当腿被拉下时)。
腿部代码
自制一个基于Arduino的3D打印六足机器人图10

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

下一步是让腿动起来。每个伺服的 3 个引脚需要连接:红色连接到 5v 电源或电池,棕色连接到地线,黄色连接到 Arduino 上的数字引脚。

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

为了测试腿部关节,这段代码片段可以上传到 Mega:


  1. // snippet to move leg joints
  2. #include <Servo.h>
  3. #define SERVO_PIN 23
  4. #define J1_OFFSET 45
  5. #define J2_OFFSET 0
  6. #define J3_OFFSET 90
  7. Servo servo;
  8. void move_joints(double j1, double j2, double j3){
  9.   if (j1>=-15 && j1<=105 && j2>=0 && j2<=90 && j3>=0 && j3<=90){
  10.     servo.write(j1 + J1_OFFSET);
  11.     servo.write(j2 + J2_OFFSET);
  12.     servo.write(j3 + J3_OFFSET);
  13.   }
  14. }
  15. void setup(){
  16.   servo.attach(SERVO_PIN, 600, 2600);
  17. }
  18. void loop(){
  19.   move_joints(...);
  20. }
复制代码

逆向运动学
自制一个基于Arduino的3D打印六足机器人图13


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

将腿的末端放置在特定点需要计算腿的逆运动学。结合之前的move_joints()代码,下面的代码可以用来移动到 XYZ 位置:

  1. // inverse kinematics
  2. #define FEMUR_L 60
  3. #define TIBIA_L 95.334
  4. #define TIBIA_ANGLE 17.543
  5. #define Y_OFFSET 50
  6. #define Z_OFFSET -90
  7. void move_xyz(int leg, double x, double y, double z)
  8. {
  9.   y += Y_OFFSET;
  10.   z += Z_OFFSET;
  11.   double l = sqrt(x*x + y*y + z*z);
  12.   double j1 = atan(x/y);
  13.   double j2 = acos((FEMUR_L*FEMUR_L - TIBIA_L*TIBIA_L + l*l) / (2*FEMUR_L*l)) + atan(z / sqrt(x*x + y*y));
  14.   double j3 = acos((FEMUR_L*FEMUR_L + TIBIA_L*TIBIA_L - l*l) / (2*FEMUR_L*TIBIA_L));
  15.   j1 = 45 + j1*(180/PI);
  16.   j2 = 30 + j2*(180/PI);
  17.   j3 = 90 + 30 - TIBIA_ANGLE - j3*(180/PI);
  18.   move_joints(j1, j2, j3);
  19. }
复制代码


继续组装和编程
自制一个基于Arduino的3D打印六足机器人图15

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

其余的六足机器人腿可以按照之前完全相同的方式打印和组装。由于有 6 条腿,总共需要 18 个舵机。
连线
自制一个基于Arduino的3D打印六足机器人图17

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

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

将传感器扩展板连接到 Arduino MEGA,并连接每个舵机。拍照或记录每个舵机连接到扩展板上的哪个引脚。

将 5V 和 GND 线连接到传感器保护板上的接线端,以备后用。
安装腿部
自制一个基于Arduino的3D打印六足机器人图20

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

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

使用 M3 螺钉,将剩余的腿固定到六足机器人底座框架上,留下两条平行的腿未固定,以便进行下一步。
底盘组装
自制一个基于Arduino的3D打印六足机器人图23

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

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

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

将六足机器人翻转过来,将剩下的两条腿连接到底座框架和两个安装柱(mounting_post)上,如图所示。

将 Arduino 用支柱(或扎带)固定到 mega_mount 上,并拧入安装柱。
顶盖电子设备
自制一个基于Arduino的3D打印六足机器人图27

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

将 DC-DC 降压转换器模块安装到顶盖(top_cover)上。使用万用表应将其设置为输出 5V。

现在可以使用螺钉将两个半部分 hat_1 和 hat_2 固定到顶盖上。

将传感器扩展板的 5V 和 GND 线连接到降压转换器输出端。

将 XT60 电池连接器焊接到一些电线上,并将这些电线拧入降压转换器输入端。记得检查并确保此连接和上一个连接的极性正确。
步态代码
自制一个基于Arduino的3D打印六足机器人图29

‍最后一步是将代码 hexapod.ino上传到 Arduino。在代码中有实现六足机器人简单波动步态的函数。

代码可以在文末打包下载。

代码的快速解释:
  • 每条腿经历两个阶段:摆动相和支撑相。
  • 摆动相:腿被抬起并向前移动。
  • 支撑相:腿着地,推动身体向前。
  • 腿以波纹模式移动,以确保六足机器人保持稳定。
  • 不要同时将超过两条腿从地面抬起

运动示例
  • 想象一下,这些腿的顺序是:1、2、3、4、5、6。
  • 序列从第1条腿开始进入摆动相(抬起并向前移动)。
  • 当第1条腿开始着陆时(摆动相结束),第3条腿开始其摆动相。
  • 接下来,当第3条腿着陆时,第5条腿开始其摆动相。
  • 与此同时,腿 2、4 和 6 处于支撑阶段,保持六足机器人稳定并向前移动。

有关六足机器人步态更多信息可在网上找到。

⚠️ 在上传代码之前,请确保将偏移量和引脚分配更改为正确值。
完工
自制一个基于Arduino的3D打印六足机器人图30

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

原文地址:https://www.instructables.com/3D-Printed-Hexapod-Robot/

项目作者:zeroshot

译文首发于:DF创客社区

转载请注明来源信息


六足机器人.zip

213.15 KB, 下载次数: 910

刘睿鹏  初级技师

发表于 2024-7-4 18:31:10

这个主板是那种?不是Uno3吗?
回复

使用道具 举报

hnyzcj  版主

发表于 2024-7-5 06:31:29

mega
回复

使用道具 举报

RRoy  超级版主
 楼主|

发表于 2024-7-5 10:22:52

刘睿鹏 发表于 2024-7-4 18:31
这个主板是那种?不是Uno3吗?

Arduino MEGA
回复

使用道具 举报

花生编程  中级技匠

发表于 2024-7-17 10:16:32

厉害厉害,赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail