基于Arduino的3D打印六足机器人

本项目是在原有项目基础上进行的改进,改进了六足机器人的姿态算法,使姿态在变化时更稳定

一、项目说明

六足机器人是一种有6条腿的机器人,它们可以独立移动,这使得它们擅长在不同类型的地形上移动。几个月前,我突然想到要自己制作一个六足机器人,只是为了好玩。因此,在本项目中,展示了一个完全由3D打印制作、基于Arduino的六足机器人的设计和组装。
实物图:
在这里插入图片描述
在这里插入图片描述
视频:

六足机器人

二、所需配件

部件

  • 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是唯一的例外,因为它需要打印两份。

⚠️ 我建议首先打印一条腿并组装起来,以检查所有部件是否正确配合。
以上需要的.stl文件可以私信我进行获取

四、机械腿部

4.1腿部结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先,将伺服电机插入leg_mount、coxa和tibia部件中 - 确保小心地将伺服电缆穿过每个部件的电线孔。尺寸可能非常紧凑,但所有部件应该能够紧密地组装在一起。

确保每个伺服电机都设置在0度位置,然后将伺服角连接到每个电机轴上。现在,所有部件都摆放好了,组装一条腿应该相当简单。我们希望腿部有尽可能宽的运动范围,所以我建议按照上面GIF中显示的相同角度连接关节(当腿部被拉下时)。

⚠️ 注意每个关节连接的角度,因为我们稍后会在代码中使用这些角度。

4.2腿部代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下一步是让腿部动起来。每个伺服电机的3个引脚需要连接:红色连接到5V电源或电池,棕色连接到地线,黄色连接到Arduino上的数字引脚。

// 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);
}

4.3 COPY腿部结构

在这里插入图片描述
在这里插入图片描述
其余的六足机器人的腿部可以按照之前完全相同的方式打印和组装。由于有6条腿,总共需要18个伺服电机。

4.4伺服电机接线

在这里插入图片描述
在这里插入图片描述
将传感器盾板连接到Arduino MEGA,并连接每个伺服电机。拍照或记录哪个伺服电机连接到盾板上的哪个引脚。

将5V和GND线连接到传感器盾板上的端子块上,以备后用。

4.5 连接腿部结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用M3螺丝,将剩余的腿固定到六足机器人的底座框架上,留下两条彼此平行的腿在下一步中不固定。

五、底盘安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将六足机器人翻转过来,底部朝上,按照图片所示将剩下的两条腿连接到基座框架和两个安装柱上。
使用支架(或扎带)将Arduino固定在mega_mount上,并用螺丝拧入安装柱。

六、顶部电路设计

在这里插入图片描述
在这里插入图片描述
将DC-DC降压转换模块安装到顶盖部件上。使用万用表设置为输出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处于它们的支撑阶段,保持六足机器人稳定并向前移* 动。
  • 关于六足机器人步态的更多信息可以在线找到。

⚠️ 在上传代码之前,请确保将偏移量和引脚分配更改为正确的值。
这里的源码可以私信我进行获取

八、完成成果

在这里插入图片描述
在这里插入图片描述
构建现在已经完成!
要使用六足机器人:

使用9V电池通过桶形插孔为Arduino供电
通过XT60连接器连接锂聚合物电池。

该代码旨在易于扩展,使六足机器人能够转弯、以不同的速度移动并以不同的步态行走。

希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。

作者:Svan.


注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Svan.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值