六足仿生机器人的控制与实现

目 录
摘 要 I
Abstract II
1 文献综述 1
1.1 国外六足仿生机器人的发展情况 1
1.2 国内六足仿生机器人的发展情况 2
1.3 六足仿生机器人研究中存在的问题 2
1.4 六足仿生机器人的发展趋势 3
1.5 论文的主要内容 3
1.6 小结 4
2 六足仿生机器人的结构分析与步态规划 5
2.1 昆虫运动原理分析 5
2.2 六足仿生机器人六边形模型和长方形模型之间的比较 6
2.3 使用Inventor软件对六足仿生机器人实体造型 8
2.4 六足仿生机器人的结构分析 9
2.5 六足仿生机器人的步态规划 11
2.5.1 机器人坐标系的定义 11
2.5.2 六足仿生机器人腿的运动分析 12
2.5.3 牛顿―辛普森求解方法在运动求解中的应用 14
2.5.4 六足仿生机器人的直线行走步态 16
2.5.5 六足仿生机器人的转弯步态 18
2.5.6 六足仿生机器人的横向行走步态 19
2.5.7 六足仿生机器人的越障步态 20
2.6 小结 22
3 六足仿生机器人控制系统的硬件设计 23
3.1 舵机的原理与控制 23
3.2 控制系统的方案设计和选择 24
3.3 控制系统分析 25
3.3.1 主控芯片介绍 25
3.3.2 控制模块设计 27
3.3.3 电源模块设计 27
3.3.4 串口通信模块设计 28
3.3.5 无线通信模块 29
3.4 小结 30
4 六足仿生机器人控制系统的软件设计 31
4.1 控制系统的主程序 31
4.2 六足仿生机器人的单腿控制程序设计 32
4.3 六足仿生机器人的直线行走程序设计 33
4.4 六足仿生机器人的转弯程序设计 35
4.5 六足仿生机器人的越障程序设计 36
4.6 小结 37
5 结论与展望 38
参 考 文 献 40
致 谢 42
1.5 论文的主要内容
以六足仿生机器人为研究对象,研究了六足仿生机器人的控制系统。
(1)基于昆虫的身体结构和运动机理,给出了六足仿生机器人的简化结构模型。研究了六足仿生机器人的三足步态,详细分析了直线行走步态和转弯步态。
(2)对六足仿生机器人的矩形模型和六边形模型进行了分析比较。
(3)采用一片式解决方案,设计并制作了六足仿生机器人的硬件控制系统。系统具有良好的稳定性和可扩展性。
(4)采用Keil uVision3编写了六足仿生机器人控制系统的程序。通过编译、仿真、调试,实现了对六足仿生机器人的控制。
(5)对六足仿生机器人进行建模,使用Matlab进行系统仿真。并对程序进行移植,实现了六足仿生机器人的高实时性和高适应性的步态控制。
3 六足仿生机器人控制系统的硬件设计
六足仿生机器人有6条腿,而每条腿有3个转动关节,共计18个关节。每个关节由一个舵机驱动,因此需要18路PWM来控制这18个舵机。因此控制系统设计的关键是如何协调控制这18个舵机来实现直线行走和转弯等步态。此外,我们要设计的是能够自己计算生成步态所需数据并且能够根据需要实时调节步态的控制系统,所以主控芯片需要具有足够快的执行速度和良好的数学计算能力。
3.1 舵机的原理与控制
舵机又名伺服电机,是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机可以在自动控制和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
舵机的工作原理:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,脉冲宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
舵机的控制需要一个周期20ms左右的脉冲,脉冲的高电平部分一般为0.5~2.5ms。如图3.1所示。
在这里插入图片描述
图3.1 舵机控制信号

输入信号的脉冲宽度和舵机输出转角之间呈线性对应关系,如图3.2所示。
在这里插入图片描述
图3.2 控制信号脉宽和舵机转角之间的关系

在我们的六足仿生机器人上使用的是MG995舵机,其参数如下:
1.尺寸:40.7×19.7×42.9mm
2.重量:55g
3.反应转速:无负载速度0.17s/60°(4.8V);0.13s/60°(6.0V)
4.工作死区:4us
5.工作电压:3.0~7.2V
6.工作扭矩:13kg·cm
7.使用温度:-30~+60℃

#include "spider.h"
#include "stm32f10x_init.h"void SPDRStructInit(SPIDER* spdr)
{spdr->Spdr_State = SPDR_STAT_NONE;spdr->Spdr_Height = 30.0;spdr->Right_Front_Leg.Height = spdr->Spdr_Height;spdr->Right_Front_Leg.Length = 140.0;spdr->Right_Front_Leg.anglenear = 90.0;spdr->Right_Front_Leg.Joint_Far  = 540;spdr->Right_Front_Leg.Joint_Mid  = 540;spdr->Right_Front_Leg.Joint_Near = 540;spdr->Right_Middle_Leg.Height = spdr->Spdr_Height;spdr->Right_Middle_Leg.Length = 140.0;spdr->Right_Middle_Leg.anglenear = 90.0;spdr->Right_Middle_Leg.Joint_Far  = 540;spdr->Right_Middle_Leg.Joint_Mid  = 540;spdr->Right_Middle_Leg.Joint_Near = 540;spdr->Right_Back_Leg.Height = spdr->Spdr_Height;spdr->Right_Back_Leg.Length = 120.0;spdr->Right_Back_Leg.anglenear = 90.0;spdr->Right_Back_Leg.Joint_Far  = 540;spdr->Right_Back_Leg.Joint_Mid  = 540;spdr->Right_Back_Leg.Joint_Near = 540;spdr->Left_Front_Leg.Height = spdr->Spdr_Height;spdr->Left_Front_Leg.Length = 140.0;spdr->Left_Front_Leg.anglenear = 90.0;spdr->Left_Front_Leg.Joint_Far  = 540;spdr->Left_Front_Leg.Joint_Mid  = 540;spdr->Left_Front_Leg.Joint_Near = 540;spdr->Left_Middle_Leg.Height = spdr->Spdr_Height;spdr->Left_Middle_Leg.Length = 140.0;spdr->Left_Middle_Leg.anglenear = 90.0;spdr->Left_Middle_Leg.Joint_Far  = 540;spdr->Left_Middle_Leg.Joint_Mid  = 540;spdr->Left_Middle_Leg.Joint_Near = 540;spdr->Left_Back_Leg.Height = spdr->Spdr_Height;spdr->Left_Back_Leg.Length = 120.0;spdr->Left_Back_Leg.anglenear = 90.0;spdr->Left_Back_Leg.Joint_Far  = 540;spdr->Left_Back_Leg.Joint_Mid  = 540;spdr->Left_Back_Leg.Joint_Near = 540;
}void SPDRChangeHeight(SPIDER *spdr,double newheight)
{spdr->Spdr_Height = newheight;spdr->Right_Front_Leg.Height = newheight;spdr->Right_Middle_Leg.Height = newheight;spdr->Right_Back_Leg.Height = newheight;spdr->Left_Front_Leg.Height = newheight;spdr->Left_Middle_Leg.Height = newheight;spdr->Left_Back_Leg.Height = newheight;
}void SPDRRenovateAllData_H(SPIDER* spdr)
{TIM_RFLJfarRenovate(spdr->Right_Front_Leg.Joint_Far);TIM_RFLJmidRenovate(spdr->Right_Front_Leg.Joint_Mid);TIM_RFLJnearRenovate(spdr->Right_Front_Leg.Joint_Near);TIM_RMLJfarRenovate(spdr->Right_Middle_Leg.Joint_Far);TIM_RMLJmidRenovate(spdr->Right_Middle_Leg.Joint_Mid);TIM_RMLJnearRenovate(spdr->Right_Middle_Leg.Joint_Near);TIM_RBLJfarRenovate(spdr->Right_Back_Leg.Joint_Far);TIM_RBLJmidRenovate(spdr->Right_Back_Leg.Joint_Mid);TIM_RBLJnearRenovate(spdr->Right_Back_Leg.Joint_Near);TIM_LFLJfarRenovate(spdr->Left_Front_Leg.Joint_Far);TIM_LFLJmidRenovate(spdr->Left_Front_Leg.Joint_Mid);TIM_LFLJnearRenovate(spdr->Left_Front_Leg.Joint_Near);TIM_LMLJfarRenovate(spdr->Left_Middle_Leg.Joint_Far);TIM_LMLJmidRenovate(spdr->Left_Middle_Leg.Joint_Mid);TIM_LMLJnearRenovate(spdr->Left_Middle_Leg.Joint_Near);TIM_LBLJfarRenovate(spdr->Left_Back_Leg.Joint_Far);TIM_LBLJmidRenovate(spdr->Left_Back_Leg.Joint_Mid);TIM_LBLJnearRenovate(spdr->Left_Back_Leg.Joint_Near);
}void SPDRRenovateAllData_S(SPIDER* spdr,u16* array)
{spdr->Right_Front_Leg.Joint_Far  = array[0];spdr->Right_Front_Leg.Joint_Mid  = array[1];spdr->Right_Front_Leg.Joint_Near = array[2];spdr->Right_Middle_Leg.Joint_Far = array[3];spdr->Right_Middle_Leg.Joint_Mid = array[4];spdr->Right_Middle_Leg.Joint_Near= array[5];spdr->Right_Back_Leg.Joint_Far   = array[6];spdr->Right_Back_Leg.Joint_Mid   = array[7];spdr->Right_Back_Leg.Joint_Near  = array[8];spdr->Left_Front_Leg.Joint_Far   = array[9];spdr->Left_Front_Leg.Joint_Mid   = array[10];spdr->Left_Front_Leg.Joint_Near  = array[11];spdr->Left_Middle_Leg.Joint_Far  = array[12];spdr->Left_Middle_Leg.Joint_Mid  = array[13];spdr->Left_Middle_Leg.Joint_Near = array[14];spdr->Left_Back_Leg.Joint_Far    = array[15];spdr->Left_Back_Leg.Joint_Mid    = array[16];spdr->Left_Back_Leg.Joint_Near   = array[17];
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

仿生蛇机器人

仿生类机器人 开头蛇形机器人研究意义结构分析生物结构分析 运动学分析 总结 开头 好久没写这个了,事情太多了,把这学期学的一些分享放上面。随便看看吧。仿生机器人是机器人的一个分支。相比于刚性齿轮结构和传动结构,一些动物的柔性结构使…

仿生水下航行器

仿生水下航行器 前面介绍的水下航行器的设计,大部分都是螺旋桨推进,虽然目前仍然广泛用于各种成熟的产品或者研发作品中,但是不得不承认的是螺旋桨在水下的推进的效率较低,对水下环境的扰动较大,不利于隐蔽&#xff0c…

仿生机器人

“仿生机器人”是指模仿生物、从事生物特点工作的机器人。当今世界,科技发展水平日益进步,机器人研究领域已经向航空航天、水面水下、地下管道等环境发展,未来的机器人将在人类无法工作的环境中代替人类工作,人们要求机器人不仅适…

仿生机器鱼设计

锐晶-Recrystal-重塑仿生机器人 欢迎进入Recrystal世界 分享在仿生机器鱼研制过程的一些心得与体会,最想与志同道合的朋友一起完成我们的梦想! 新的起点 机器鱼3D图,整个机器鱼外部结构件采用3D打印。 机器鱼3D图 舵机工作原理 机器鱼内…

仿生机器人研究

仿生机器人是指依据仿生学原理,模仿生物结构、运动特性等设计的机电系统,已逐渐在反恐防爆、太空探索、抢险救灾等不适合由人来承担任务的环境中凸显出良好的应用前景。 研制仿生机器人的灵感来源于自然界中的动物,比如蜥蜴是有着优秀运动能力…

计算机是仿生学,一种基于人体仿生学的计算机键盘的制作方法

本实用新型属于计算机键盘技术领域,具体涉及一种基于人体仿生学的计算机键盘。 背景技术: 键盘是最常用也是最主要的输入设备,通过键盘,可以将英文字母、数字和标点符号等输入到计算机中,从而向计算机发出命令和输入数…

蝴蝶优化算法

蝴蝶优化算法 算法简介香味具体算法 参考文献 群智能算法学习笔记 笔记内容和仿真代码可能会不断改动 如有不当之处,欢迎指正 算法简介 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食…

仿生机器人知识体系

仿生机器人最核心的是模仿行为。 机器人控制算法 PID控制(比例积分微分控制) 根据给定值和实际输出值构成控制偏差,将偏差按比例、积分和微分通过线性组合构成控制量,对被控制对象进行控制。 ZMP零力矩点 判定仿人机器人动态…

字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

BFT 最前线 | OpenAI开放网络浏览和插件;“360AI商店”上线;Bing市场份额不升反降;亚马逊机器人配送中心投产

原创 | BFT机器人 AI视界 TECHNOLOGY NEWS 01 OpenAI将向所有ChatGPT Plus用户推出网络浏览和插件 OpenAI将向所有ChatGPT Plus用户推出网络浏览和插件近日,OpenAI发文称,将在本周(5.15-5.21日)内向所有ChatGPT Plus用户推出网络…

LLMs开源模型们和数据集简介

本篇文章整理下目前常用的LLMs模型们和数据集简介。 BackBones ​https://github.com/FreedomIntelligence/LLMZoo 可以看到目前被广泛用来作为LLMs的backbone的模型有以下特点: Backbone:基于某个开源backbone,如GLM、LLaMA、BLOOMZ&#…

谷歌将推出新工具以识别虚假信息和AI生成内容;ChatGPT开放投资组合分析功能;网信办打击滥用AI虚拟主播等行为丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 后摩智能发布存算一体智驾芯片鸿途H30 5月15日,后摩智能发布首款存算一体智驾芯片 —— 鸿途H30,最高物理算力256TOPS,典型功耗35W。鸿途H30基于SRAM存储介质,采用…

分享一个程序员接私活、兼职的平台

分享一个程序员接私活、兼职的平台 1、技术方向满足任一即可2、技术要求3、最后 1、技术方向满足任一即可 Python:熟练掌握Python编程语言,能够使用Python进行数据处理、机器学习和深度学习等相关工作。 MATLAB:熟练掌握MATLAB编程语言&…

最担心的还是发生了,程序员失业来得太突然!

周末我在后台收到一条私信,事情很有代表性,这里分享一下。 这位老哥在一家互联网头部公司做了 6 年的技术,最好的年纪都留在了这家公司。上个月底,赶上所在的部门重组。 公司动作很快,开完年中回顾会就裁掉了一批人&am…

猿如意初体验!赞一个。

目录 功能一:chatGPT 功能二、对 “效率工具”的试体验! 功能三:教程文档 最后总结 猿如意传送门猿如意下载地址:猿如意-程序员的如意兵器,工具代码,一搜就有 猿如意使用了几次了,今天来想分享一下我对于猿如意的…

如意如意猿如意

如意如意猿如意 什么是猿如意猿如意效率工具JSON编辑器jsontojava 开发工具ChatGPT 推荐指数评分及改进意见UI界面效率工具和开发工具ChatGPT一行代码 总结 经常听到一句话:如意如意随我心意,作为程序猿,我也想要一个如意,心中默念…

CSDN官方猿如意工具体验

2022年注定是不平凡的一年,2022再见,2023你好! 2023愿我们发财,被爱,一路好运常在!愿所念之人平安喜乐,所想之事顺心如意,岁岁常欢喜,万事皆胜意! 猿如意工具…

【附源码】国内首届Discord场景创意编程开源项目

以下开源项目是由环信联合华为举办的《国内首届Discord场景创意编程赛》作品,附源码,一键即用。 一、 模拟器游戏直播-新新人类 新新人类模拟器游戏直播基于环信超级社区Demo构建,增加以“video-x”命名的新型Channel,用户可在本…

学霸福音!用ChatGPT做思维导图,整理读书笔记从未如此轻松

背景说明: 罗永浩《我的奋斗》这本书,我在参加一场线上读书会分享过,原文在这里。当时演示的时候,使用的是思维导图的模式。我在想,如果给ChatGPT设定一个读书会讲书人的身份,它会怎么讲?下面我…

三分钟4行命令构建chatgpt webapp,支持高并发以及上下文对话功能

个人主页:https://yang1he.gitee.io 干货会越来越多的,欢迎来玩 三分钟4行命令构建chatgpt webapp,支持高并发以及上下文对话功能 纯纯不是标题党,昨天找了一下午,有用flask框架的,有还得qtdesinger框架的,这不纯纯骗小…