问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于Arduino的3D打印六足机器人制作教程

创作时间:
作者:
@小白创作中心

基于Arduino的3D打印六足机器人制作教程

引用
CSDN
1.
https://m.blog.csdn.net/weixin_51141489/article/details/142701324

本项目展示了一个完全由3D打印制作、基于Arduino的六足机器人的设计和组装。通过详细的步骤说明和代码示例,让读者能够深入了解六足机器人的制作过程。

一、项目说明

六足机器人是一种有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是唯一的例外,因为它需要打印两份。

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

四、机械腿部

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
![](https://wy-static.wenxiaobai.com/chat-rag-image/4579172080420130252)
#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连接器连接锂聚合物电池。

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

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


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号