【毕业设计】履带四足复合机器人

1.项目简介

本项目中,履足式复合机器人拥有两种行进模式:四足行进模式、履带行进模

式,应对不同场景及地形时能够切换形态。四足形态下整体总共拥有8个自由度DOF,单腿各具备2个自由度DOF,足端结构融入了履带机构,各履带机构配备1个直流电机驱动。

该机器人主控板的MCU模组为ESP32-WROVER-E,能够实现针对总线舵机+PWM舵机+直流电机的控制,同时包括其他硬件资源:六轴加速度传感器、OLED屏幕接口、RGB灯珠、蜂鸣器等。

履带车形态在平坦或稍崎岖的地貌上能够保持较高的行进速度,降低了四足爬行的功

bilibili视频链接:https://www.bilibili.com/video/bv1aU4y197CP

初始草稿:

00e0f905a9c3d9ed022da93003b877a4.png

最初的构想来源——《使命召唤11:高级战争》中的“泰坦”重型坦克:

4f9c7f2fd367915476067cd8b3681535.png


2.电控硬件功能

2.1 主控板:

2.1.1 电机驱动:

  • 6路串行总线舵机接口:

    PH2.0-3P,74HC126D

  • 4路直流电机驱动:

    TB6612FNG

2.1.2 指示器件:

  • 1颗 六轴加速度传感器:

    MPU6050

  • 1块 拨轮编码器:

    MITSUMI

  • 1颗 普普通通的 微型无源蜂鸣器:

    DET402-G

  • 1颗 普普通通的 发光LED:

    0603

  • 1处 0.96寸4针OLED屏幕接口:

    HDR-1*4P-F

  • 3颗 普普通通的 RGB灯珠:

    WS2812B-2020

2.1.3 拓展接口:

  • 2路拓展IIC接口:

    PH2.0-4P

  • 1路WS2812B灯珠接口:

    HDR-M-2.54-3P

2.2 拓展板:

  • 16路PWM舵机驱动:

    PCA9685


3.选型简述

3.1 电机选型:

  1. 串行总线舵机选型:型号:HTS-35H,额定电压:9.0~12.6V,串行通信波特率115200,额定扭矩:35kg.cm/3.5N.m。通信需要将UART全双工转半双工,根据幻尔舵机商家提供的通信协议手册和原理图,采用74HC126D实现;

    1d08011c38b8fd92c40508b5b792dba5.png

    1a278f9e2196098ca1e45ada311504da.png

  2. PWM舵机选型【经济方案】:型号:MG996R,额定扭矩:13kg.cm/1.3N.m。常见的大舵机,配合拓展板应该也没什么问题,箭头处注意供电电压。(注意供电连接,主控板与拓展板可通过铜柱连接电源)

    7056edff9a581a0e84ab7fea22687958.png

    acd8b6353cf93e28168a2ccf41ccbf42.png

    f21da2780fd0d35a9b1927695b747572.png

    43f1cffe23c1c29cd8a52af598bc3f78.png

  3. 直流电机选型:型号:JGA25-370-1260,额定电压:12.0V,减速比:1:103,空载转速:60转/分钟。主控V1.0版本中,采用TB6612FNG驱动【考虑到价格问题,后续打算用RZ7899/DRV8833替代】;

    e1a39d5a8ff779fe846f9420d031f253.png

    759b78df376aaded25bdf20436abe0fd.png

3.2 其他选型:

  1. 六轴加速度传感器:MPU6050。通常选择,源代码中定义支持了采用DMP获取四元数后,再解算得Pitch、Roll角(yaw角太飘),而且QFN封装可能不太好焊。

    3980ecfec361311cf806883beac657e1.png

  2. 芯片供电:3.3V与5V供电均采用LDO实现,即SCJT1117-3.3与SCJT1117-5.0。(由于压差较大,建议贴散热片)

    b8b63f2fcde8496037915669491b564a.png

  3. 电源选型:采用放电倍率35C的3S聚合物航模电机,但考虑到安全问题,经测试3节放电倍率10C的18650动力锂电池也能驱动

    航模电池:(危险,但带劲)

    90b0befb54e078005fe93d428fe345dc.png

    18650动力锂电池:

    a40b5e85e0a60e73f93cf603cf28398c.png


4.实物图片

主控板:

67f008b93afba59b701daaf74fdae752.png

16路PWM舵机---拓展板:

ea0d970221f91daf997089b0e381a80f.png

组合图:

917376dfbee4803ef0df828a3fd18cf0.png


5.机械结构设计

所述机器人整体总重量(加电源)经称量可达3.0kg。
目前大部分结构零件以FDM式3D打印技术制造,采用PLA材质,故主要参数推荐:0.15mm层高,70%填充。部分需要少量支撑零件,如履带外壳——主壳、提手、躯体前侧板等

设计特点:

  • 履带足

  • 二自由度串联腿

  • 四足形态:

    8自由度

  • 履行模式:

    4电机驱动

  • 预留二自由度云台

  • 3D打印结构

caedf40f7da63f90def08d6f27d0a729.png


6.控制系统软件设计

VSCode+PlatformIO平台开发,目前机器人主控系统主要包括2部分:底层驱动,运动控制。

d59e07ea1640a2d5faa57c5301cbc001.png

6.1 底层驱动内容:

  • 串行总线舵机通信

  • 直流电机驱动

  • 六轴加速度传感器通信

  • OLED屏幕驱动

  • 拨轮编码器读取

  • WS2812B-RGB灯珠驱动

  • 蜂鸣器驱动

  • WiFi通信配置

6.2 运动控制内容:

  • 单腿正解FK

  • 单腿逆解IK

  • 姿态逆解

  • 足端摆线轨迹计算

  • Trot步态模式

  • Walk步态模式

  • *VMC算法 -- 伪闭环(待测试)

6.3 代码文件说明:

lib:

  • Adafruit_NeoPixel: WS2812B灯珠驱动控制(有点小bug,第1个灯珠有些不受控制,待更改)

  • Adafruit_PWM_Servo_Driver_Library: PCA9685通信及驱动库

  • MPU6050:加速度传感器

  • U8g2:用于0.96寸 OLED屏幕驱动

src/Drive:

  • Hiwonde.h/.cpp: 串行总线舵机通信库

  • ServoDrive.h/.cpp: PWM舵机驱动控制库(PCA9685)

  • IOs.h/.cpp: GPIO引脚配置及控制库

  • IMU.h/.cpp: MPU6050加速度传感器通信库

  • DCMotorDrive.h/.cpp: 直流电机驱动控制库

src/Dynamics:

  • FKIK.h/.cpp: 单腿正逆解库

  • MotionControl.h/.cpp: 机器人运动及姿态控制库


7.远程控制App设计

注意:需要开启定位、通知权限

设计特点:

  • 基于Android端开发

  • 采用WIFI作为无线通讯模式

  • 采用TCP作为传输层协议

8.实物样机

0a6da555c4b0bf6aadac9d478872026f.png

c8926e4497884dcbe4590a7250e671fb.png

(摄像头后续再用)

37c983189d6b38f06c6359343a080896.png

彩蛋:

3d36fde99312f426ac3452278d2af641.png

资料下载链接

https://oshwhub.com/PCBguy/2e3UWJAkJbkpLge9zfKt6Q9YRR9SX1Nb

db10d204f18bf2a1e268c9de8e526b54.gif

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

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

相关文章

UDT源码剖析(六):UDT::socket()过程代码注释

调用路线 UDT::socket()->CUDT::socket()->CUDTUnited::newSocket() 1 UDTSOCKET CUDT::socket(int af, int type, int) 2 { 3 // 如果垃圾收集没启动,那么这里自动调用startup 4 // 所以手动调用startup其实不是必须的,但是为了接受作者的风…

Exam化的软件项目管理

最近所做的工作是做一个公司产品的前期原型设计,这期间主要采用的是敏捷的Scrum开发方式,在一般的解释中认为每一个“疾跑”过程中,最主要的是交付一个可用的产品,Scrum在处理时间、资源和功能3点的平衡中,唯一可以牺牲…

Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天,下午我们宿舍聚会&#…

c#: 任务栏进度显示(TaskbarManager)

Win7及以上系统支持任务栏进度条,为有进度类应用显示进度于任务栏,甚为方便。 以c#之WinForm实现其,大多采用Windows API Code Pack这个方案,加多引用,比较繁琐,而我总也打不开了其页面。 鄙人不喜欢多引用…

今天,过了27年后,IE浏览器停用了

前言随着Windows的官宣,ie浏览器将于6月16日正式退役。https://www.microsoft.com/zh-cn/download/internet-explorer.aspx那个曾几何时的浏览器之王,经历一次又一次操作系统的迭代,直至新兴浏览器的出现后沦为浏览器鄙视链的最后一层&#x…

设计模式 之 创建者

很久没写设计模式学习笔记了,今天无聊,随便把以前看的模式的都写下.先把代码帖上来吧.这个模式,是模拟 西山居的一款游戏,剑侠情缘 来写的,呵呵,当然,该游戏到底是怎么设计的,我是不知道,只是作为一个例子放到这个地方.using System; using System.Colle…

svn添加用户.sh

#!/bin/bash FLASH_SVNPATH/xx_new_flash/conf DESIGN_SVNPATH/xx_new_design/conf JAVA_SVNPATH/xx_new_java/conf echo "请选择 java flash meishucehua " read -p "请选择部门员工 java,flash,meishucehua " bumen case $bumen in flash) …

spring boot+mybatis+generator生成domain大小写问题

之前遇到一个问题&#xff0c;用generator生成数据库对应的domain&#xff0c;以前都是好好的&#xff0c;那天突然生成的domain都是小写的&#xff0c;因为我数据库里是大写的&#xff0c;后来找到解决办法&#xff0c; <table tableName"material_pile" domainO…

boost库学习入门篇

学习及使用Boost库已经有一段时间了&#xff0c;Boost为我的日常开发中带来了极大的方便&#xff0c;也使得我越来越依赖于boost库了。但boost功能太多&#xff0c;每次使用还是得翻看以前的 资料&#xff0c;所以为了以后可以更方便的使用&#xff0c;在此对常用的功能作一个…

开源 STM32 USB-CAN项目

照理来说&#xff0c;USB-CAN这种东西应该已经被做的烂大街的工具&#xff0c;国内居然没有一个拿得出手的开源方案。某立功和PCAN动辄2000的价格也是离谱。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都倒是便宜&#xff0c;性能和可靠性嘛.......就不多…

Windows Workflow Foundation - [介绍及相关资源]

Workflow Foundation是能使你在Windows平台上快速构建工作流应用程序的编程模型&#xff0c;引擎以及工具。WF支持各种各样的工作流场景&#xff1a;包括以用户界面为中心的页面流程&#xff0c;文档为中心的工作流程&#xff0c;业务规则驱动的业务流程等。 如果你使用的是VS2…

Go语言web框架 gin

Go语言web框架 GIN gin是go语言环境下的一个web框架, 它类似于Martini, 官方声称它比Martini有更好的性能, 比Martini快40倍, Ohhhh….看着不错的样子, 所以就想记录一下gin的学习. gin的github代码在这里: gin源码. gin的效率获得如此突飞猛进, 得益于另一个开源项目httproute…

8位ADC是256还是255?

昨天的文章发了之后&#xff0c;有朋友找到我&#xff0c;给我讨论了很多关于ADC细节。晚上给个朋友在51上调ADC0808芯片有一个朋友是做硬件的&#xff0c;他有从事过专业仪器设备&#xff0c;常年有使用ADC的经验&#xff0c;他给我的观点是&#xff0c;8位ADC对应的就是256。…

WCF中使用HttpSession

在WCF中不能使用HttpSession&#xff0c;即使Host是IIS也不可以&#xff0c;这就造成在WEB应用中集成WCF不太方便&#xff0c;其实可以通过配置搞定&#xff0c;关键在于三点&#xff1a;Host、契约类、Client端。 Host上要求Web.config中有定义&#xff1a; <system.servic…

boost库在ubuntu下的安装

系统是ubuntu虚拟机&#xff0c;安装的是boost_1_60_0。 &#xff08;1&#xff09;首先去下载最新的boost代码包&#xff0c;网址www.boost.org。 &#xff08;2&#xff09;进入到自己的目录&#xff0c;解压&#xff1a; bzip2 -d boost_1_60_0.tar.bz2 tar xvf boost_1_…

Google的投票站点在用Asp.net

https://survey.google.com/wix/p0621608.aspx https://survey.google.com/aaaaaaaaaaaaaa.axd https://survey.google.com/wix/xxxxxxxxxxxxxxxxxxxxx.ashx Server Microsoft-IIS/6.0X-AspNet-Version 2.0.50727 X-Powered-By ASP.NET 转载于:https://ww…

所谓的0拷贝不就是为了让CPU休息吗?深入理解mmap

1.开场白环境&#xff1a;处理器架构&#xff1a;arm64内核源码&#xff1a;linux-5.11ubuntu版本&#xff1a;20.04.1代码阅读工具&#xff1a;vimctagscscope我们知道&#xff0c;linux系统中用户空间和内核空间是隔离的&#xff0c;用户空间程序不能随意的访问内核空间数据&…

Python3 B格注释

看tornado源码&#xff0c;看到一些函数定义时的不解的地方&#xff0c;查了一通&#xff0c;原来是注释。 冒号注释变量&#xff0c;箭头注释函数&#xff1b; 例子如下 Python3环境下&#xff0c;执行以下代码。 def a(x:这是X变量) -> for test: print(x) 转载于:https:/…

Java多线程同步Synchronized使用分析

同步的概念&#xff1a; 同步分为 同步方法 和 同步块 两种方式。 锁定的内容分为 锁定类的某个特定实例 和 锁定类对象(类的所有实例) 变量分为 实例变量(不带static的变量) 和 类变量(带static的变量) 使用同步的原因 1. 在系统中对访类要使用多线程进行访问; 2. 在该类中有 …

boost::function的用法(一)

boost::function的用法 本片文章主要介绍boost::function的用法。 boost::function 就是一个函数的包装器(function wrapper)&#xff0c;用来定义函数对象。 1. 介绍 Boost.Function 库包含了一个类族的函数对象的包装。它的概念很像广义上的回调函数。其有着和函数指针相同的…