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

news2024/11/26 2:56:07

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

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

  • 一、项目说明
  • 二、所需配件
  • 三、3D打印
  • 四、机械腿部
    • 4.1腿部结构
    • 4.2腿部代码
    • 4.3 COPY腿部结构
    • 4.4伺服电机接线
    • 4.5 连接腿部结构
  • 五、底盘安装
  • 六、顶部电路设计
  • 七、机器人源码烧录
  • 八、完成成果

一、项目说明

六足机器人是一种有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.


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PD协议芯片ECP5701+充电管理芯片+升压芯片搭配应用TYPE-C口充电及升压供电系统

以往的电子设备需要有专门的电源适配器来供电&#xff0c;不仅需要大家区分不同设备的充电器&#xff0c;还要专门找地方来放置&#xff0c;还给用户带来了诸多不便。然而&#xff0c;TYPE-C接口&#xff0c;全称USB Type-C&#xff0c;迅速取代了传统的USB接口&#xff0c;成为…

【评测】湖北十堰大带宽300M高防云服务器

湖北十堰的高防服务器拥有高性能处理器、大容量DDR4 ECC内存、SSD硬盘及多种带宽配置&#xff0c;性价比高且配置灵活。它防御强劲&#xff0c;性能稳定可靠&#xff0c;扩展性佳&#xff0c;可满足各类企业需求&#xff0c;是优质服务器的绝佳选择。 清风云官网&#xff1a;ht…

【含文档】基于Springboot+Andriod的成人教育APP(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

如何正确输入IP地址前面的斜杠:详细指南

在网络配置和文档编写中&#xff0c;经常需要准确地输入IP地址及其子网掩码。IP地址前面的斜杠&#xff08;/&#xff09;用于表示子网掩码的位数&#xff0c;是一个重要的组成部分。然而&#xff0c;对于一些用户来说&#xff0c;输入这个斜杠可能会带来一些困惑。本文将详细介…

c++ union内存布局

// // Created by 徐昌真 on 2024/10/5. // #include <iostream> using namespace std;//定义一个union union Data{int a;char s[7]; //char值的范围(-128~127) }; int main() {//创建一个unionData d;d.s[0] 255; //16进制 0xFF 16进制F对应二进制 1111d.s[1] 1; …

国外电商系统开发-运维系统拓扑布局

点击列表中设备字段&#xff0c;然后定位到【拓扑布局】中&#xff0c;可以看到拓扑发生了变化 再回头&#xff0c;您再次添加一个服务器到系统中&#xff0c;并且选择该服务器的连接节点为您刚才创建的“SDN路由器”&#xff0c;保存后&#xff0c;您可以看到这个服务器连接着…

胡超:引领中美能源与文化合作的创意先锋

中美能源合作领域迎来了一个重要的历史时刻,2024年中美可持续发展峰会(Sino-American Symposium on Sustainable Development)在全球关注下圆满落幕。这场峰会不仅成为了中美两国绿色能源合作的高端平台,也展示了作为该活动的协办方RES(Reverse Energy Solutions)在清洁能源领域…

Django网站admin用户和组的权限机制

Step 1 创建超级用户 python manage.py createsuperuser 在终端输入 Step 2 输入用户名和密码 Step 3在网站上输入 127.0.0.1&#xff1a;8000/admin Step 4创建群组和用户 让创建的组和用户可以访问网站 def index(request):groupnameslist(request.user.groups.values(name)…

【api连接ChatGPT的最简单方式】

通过api连接ChatGPT的最简单方式 建立client 其中base_url为代理&#xff0c;若连接官网可省略&#xff1b;配置环境变量 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" )或给出api和base_url client OpenAI(api_key&…

LC刷题专题:堆、大顶堆、小顶堆

文章目录 692. 前K个高频单词215. 数组中的第K个最大元素2336、无限集中的最小数字 这篇文章以后记录自己刷到的题目中与堆有关的。 692. 前K个高频单词 这个题目整体不难&#xff0c;是前k个高频元素的改进版&#xff0c;只需要在创建小顶堆时执行排序规则即可。如果出现次数…

Yolov8轻量级网络改进GhostNet

1,理论部分 由于内存和计算资源有限,在移动设备上部署卷积神经网络 (CNN) 很困难。我们的目标是通过利用特征图中的冗余,为 CPU 和 GPU 等异构设备设计高效的神经网络,这在神经架构设计中很少被研究。对于类 CPU 设备,我们提出了一种新颖的 CPU 高效 Ghost (C-Ghost) …

【2024】uniapp 接入声网音频RTC【H5+Android】Unibest模板下Vue3+Typescript

需求 最近开发一个项目&#xff0c;需要实现声网的接入。由于采用uniapp模式&#xff0c;按照最佳实践采用优先开发H5再适配的模式。因此实现了H5和Android两种模式的接入&#xff0c;Android里采用离线打包自定义基座来进行调试。怕自己忘记了&#xff0c;在这里详细的记录完…

深入学习从入门到放弃:掌握梯度概念,开始征服深度学习!

文章目录 从现实中的例子理解什么是梯度梯度的数学定义梯度的严格的数学定义为什么梯度向量指向函数增长最快的方向&#xff1f; 为什么梯度是深度学习优化的最基础概念在python中实现梯度求导的简单案例一元线性回归多元线性回归 结合示例深度学习中的梯度求导的一般过程数学原…

开源AI智能名片链动2+1模式S2B2C商城小程序源码在B2B情境化营销中的应用

摘要&#xff1a;本文探讨情境化营销在B2B环境中的适用性&#xff0c;分析现有的B2B情境化营销案例&#xff0c;如通过物联网传感设备进行设备监控与预防保养。随后引入“开源AI智能名片链动21模式S2B2C商城小程序源码”&#xff0c;阐述其如何助力B2B企业在情境化营销中提升效…

弧形导轨驱动器高效使用技巧!

弧形导轨驱动器是一种用于驱动滑座沿着导轨做弧线运动的设备&#xff0c;其用方法因具体型号和应用场景的不同而有所差异&#xff0c;通常可以归纳为以下几个步骤&#xff1a; 1、安装前要明确弧形导轨的使用需求&#xff0c;根据需求选择合适的弧形导轨驱动器&#xff0c;准备…

Python办公自动化教程(005):Word添加段落

文章目录 2.1 Python-docx介绍2.2 安装2.3 实例 2.1 Python-docx介绍 python-docx 是一个用于创建和修改 Microsoft Word 文档&#xff08;.docx 格式&#xff09;的 Python 库。它可以方便地生成和处理 Word 文档&#xff0c;而无需直接与 Microsoft Word 程序交互。 2.2 安…

运营弹性的 5 大支柱

作者&#xff1a;来自 Elastic Elastic Platform Team 什么是运营弹性&#xff1f; 没有哪个组织能够免受干扰。无论是错误的更新、有针对性的网络攻击&#xff0c;还是导致大规模供应链动荡的全球流行病&#xff0c;大多数公司在某个时候都会遇到障碍。这是增长的代价。但成功…

2024/10/5 英语每日一段

“There’s no reason, frankly, that someone who already has a passport and just needs to renew it shouldn’t be able to do that online, “Secretary of State Antony Blinken said at a March budget hearing. The State Department launched a pilot program for on…

ARM嵌入式学习--第一天

-ARM核介绍 -CPU核 CPU又叫中央处理器&#xff0c;其主要功能是进行算数运算和逻辑运算&#xff0c;内部结构大概可以分为控制单元&#xff0c;算术逻辑单元和储存单元等几个部分 -ARM核 工作模式&#xff1a; user mode:用户模式是用户程序的工作模式&#xff0c;他运行在操作…

Python并发编程(3)——Python多线程详解介绍

左手编程&#xff0c;右手年华。大家好&#xff0c;我是一点&#xff0c;关注我&#xff0c;带你走入编程的世界。 公众号&#xff1a;一点sir&#xff0c;关注领取python编程资料 Python 的多线程入门是非常简单的&#xff0c;直接导入threading模块就可以开始多线程之旅了。模…