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

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

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

基于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.


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

目录
相关文章
|
2月前
|
传感器 人工智能 机器人
基于Arduino的泡茶机器人
基于Arduino的泡茶机器人
43 1
|
2月前
|
机器人
基于Arduino的自弹尤克里里机器人(下)
基于Arduino的自弹尤克里里机器人(下)
33 0
|
2月前
|
机器人
基于Arduino的自弹尤克里里机器人(上)
基于Arduino的自弹尤克里里机器人(上)
39 0
|
2月前
|
传感器 IDE 机器人
基于Arduino的扫地机器人
基于Arduino的扫地机器人
72 1
|
7月前
|
传感器 监控 安全
【全3D打印坦克——基于Arduino履带式机器人】
【全3D打印坦克——基于Arduino履带式机器人】
270 1
|
机器学习/深度学习 存储 人工智能
7 Papers & Radios | 无人机3D打印登Nature封面;哈工大用微波驱控机器人
7 Papers & Radios | 无人机3D打印登Nature封面;哈工大用微波驱控机器人
144 0
|
传感器 前端开发 机器人
科学家用3D打印技术制造蚂蚁机器人,可求助同伴相互连接,未来或将用于太空探索
科学家用3D打印技术制造蚂蚁机器人,可求助同伴相互连接,未来或将用于太空探索
223 0
科学家用3D打印技术制造蚂蚁机器人,可求助同伴相互连接,未来或将用于太空探索
|
分布式计算 Spark JavaScript
带你读《JavaScript机器人: 用Raspberry Pi、Arduino和BeagleBone构建NodeBots Make:JavaScript Robotics》之三:节点船
本书将向你展示用Raspberry Pi、Arduino和BeagleBone构建NodeBots Make以及如何使用它来编写你所制作的东西。让使用JavaScript控制硬件变得简单而有趣。
|
机器人 JavaScript 前端开发
带你读《JavaScript机器人: 用Raspberry Pi、Arduino和BeagleBone构建NodeBots Make:JavaScript Robotics》之二:TypeBot
本书将向你展示用Raspberry Pi、Arduino和BeagleBone构建NodeBots Make以及如何使用它来编写你所制作的东西。让使用JavaScript控制硬件变得简单而有趣。
|
机器人 JavaScript 前端开发
带你读《JavaScript机器人: 用Raspberry Pi、Arduino和BeagleBone构建NodeBots Make:JavaScript Robotics》之一:用Lo-tech材料建造机器人
本书将向你展示用Raspberry Pi、Arduino和BeagleBone构建NodeBots Make以及如何使用它来编写你所制作的东西。让使用JavaScript控制硬件变得简单而有趣。