基于stm32的仿生六足机器人控制系统设计.docx
《基于stm32的仿生六足机器人控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于stm32的仿生六足机器人控制系统设计.docx(33页珍藏版)》请在冰豆网上搜索。
![基于stm32的仿生六足机器人控制系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/25/152764d4-d587-4f82-a6c6-379e8c298dab/152764d4-d587-4f82-a6c6-379e8c298dab1.gif)
基于stm32的仿生六足机器人控制系统设计
基于STM32的六足仿生机器人
-控制系统设计
学院:
专业:
姓名:
指导老师:
工业自动化学院
机械电子工程
谢浩林
学号:
职称:
160404102482
李琳
讲师
中国·珠海
二○二一年五月
诚信承诺书
本人郑重承诺:
本人承诺呈交的毕业设计《基于STM32的六足仿生机器人-控制系统设计》是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。
本人签名:
谢浩林
日期:
2020年4月24日
基于STM32的六足仿生机器人
-控制系统设计
摘要
随着机器人的发展日新月异,各个行业和领域对机器人的要求和需求也日益增长。
近十几年来,由于六足仿生机器人在勘测领域的作用显著,其发展尤为迅速。
这种新型的足式机器人,借鉴了自然界中诸如蜘蛛,螳螂等昆虫的行进步态和肢体结构,使其在崎岖、松软等复杂地形上行进时,比起履带式或者轮式的机器人更加地稳定灵活,能更好对应勘测,探索等方面的工作。
本文主要研究六足仿生机器人的控制系统的实现。
通过采用STM32F103VCT6作为控制器,用蓝牙通讯控制与腿部结构相连接的舵机从而实现手控机器人的行进,并简单实现自动行进,超声波避障和拍照功能。
关键词:
六足仿生机器人;STM32F103VCT6;控制系统;舵机sg90;
DesignofHexapodrobotcontrolsystembasedonSTM32
Abstract
Withtherapiddevelopmentofrobots,therequirementsanddemandsofrobotsinvariousindustriesandfieldsareincreasingdaybyday.Inrecentdecades,thehexapodrobothasdevelopedparticularlyrapidlyduetoitssignificantroleinthefieldofsurveying.Thenewfoot-likerobotborrowsfromthegaitandlimbstructureofnaturalinsectssuchasspidersandmantids,allowingittonavigaterough,softandcomplexterrain,comparedwiththetrackedorwheeledrobot,itismorestableandflexible,andcanbettercorrespondtotheexplorationandexplorationwork.
Thispapermainlystudiestherealizationofthecontrolsystemoftherobot.ByusingSTM32F103VCT6asthecontroller,thesteeringgearconnectedwiththelegstructureiscontrolledbyBluetooth,andthefunctionsofautomaticmoving,ultrasonicobstacleavoidanceandphoto-takingarerealized.
Keywords:
Hexapodrobot;STM32F103VCT6;Controlsystem;SteeringGearSG90;
1绪论
1.1仿生六足机器人的研究背景及意义
当今世界,机器人的概念已经不是简单的,由数个机械结构组合成的一个
机械体。
它包含了众多领域的科技结晶,不论是硬件上的技术如机械制造,电子设计,还是软件上的技术如智能控制,数据传输,都与机器人的发展进步紧密联系在一起。
也因此,机器人的研究水平也在一定程度上体现了国家的科技水准。
随着时代的发展,过去的轮式、履带式机器人已经无法满足人们的要求,这类机器人在环境条件不利的情况下,如路面崎岖不平,过于松软和潮湿,都会让机器人的稳定性和灵活度大打折扣。
而在自然界中,陆地上大多数生物的行进都是以足类运动为主,因此,人们借鉴了这一点,开始了仿生足类机器人的研究和制造。
仿生足类机器人又常见为二足,四足,六足。
而其中,六足机器人的自由度和灵活度都远优于二足和四足,更不用说轮式和履带式的机器人了。
六足机器人可以通过特殊步态来实现原地的旋转,以及重心的稳定。
在不平整的路面上,也可以依靠腿部上舵机角度的协调改变来保持平衡。
在跨越障碍,上下坡等情况下都拥有良好的表现。
同时能胜任多个领域的工作,应用前景广阔如军事侦察、资源开采、海底探索、消防营救等,应用前景广阔。
但由于六足机器人的腿部结构较多,相对离散,在高灵活度、高机动性的同时,也导致了结构的复杂和控制的繁琐。
但不管怎么说,六足机器人的优点十分显著,在未知的复杂地形上,具有极其优越的适应性,因此也成为了现今机器人研究的一大热门领域。
1.2仿生六足机器人在国内外的研究现状及存在的问题
在足类行进机器人发展的早期,科学家们更多的是研究与人类贴近的二足机器人,以及外形类似哺乳类陆生生物,如常见的猫狗一般的四足机器人,以运动能力优秀的动物为模板去研究和设计。
但是结果并不太顺利,因为当时的科技水平还无法模拟出肌肉的控制系统,而二足和四足的生物,运动时都需要比较大的力量作为基础,以当时的马达和机构设计,想驱动就很困难了,更别提还要对这股力量进行控制。
后来科学家们才将目光投向了六足机器人,当他们发现,虽然采用六足结构的机器人,行进速度并不快,但是通过三角步态,重心能很好地落在三只支撑足组成的三角形中,并且灵活度比起普通的四足机器人也十分优越。
而现今,仿生昆虫的六足机器人得到了更多的关注和研究,其灵活度和稳定性也得到了更好的体现。
近年来国内对于六足机器人的研究依旧火热,而最出名的还要数 Vincross人工智能科技公司研发的HEXA机器人。
这款机器人在2017年亚洲消费电子展里首次亮相,荣获了当年由德国汉诺威工业设计论坛颁布的,含金量十足的if设计大奖。
HEXA的外观酷似蜘蛛,头部可360°任意旋转,能攀爬15cm高的障碍并以1.2Km/h的速度奔跑。
同时,六足机器人对复杂地形的适应力也发挥到了极致,不仅能在各种复杂地形中行走,甚至还能爬梯、下坑、钻洞。
辅以夜视摄像头,激光传感器,三轴加速度计等模块,使得HEXA能胜任各种工作和环境。
图1-1HEXA机器人
而在国外,六足机器人的研究就更加深入了,毕竟研究内容也比较丰富。
德国自动化技术厂商Festo发布的BionicWheelBot仿生机器人是一款别有匠心的六足仿生机器人,灵感来自于摩洛哥一种会翻滚的蜘蛛。
它能够模仿这种蜘蛛,以翻滚模式在复杂地形上移动,速度是普通三角步态行进方式的两倍。
虽然只是说改变了移动方式,但其中所要用到的技术却不能小觑。
翻滚时的平衡,以及如何开始如何结束如何切换两种形态,腿部结构的设计都是值得我们研究的技术点。
图1-2HEXA机器人翻滚动作
图1-3HEXA机器人腿部关节
又如英国工程师MattDenton发明的一个名为Mantis的机器人,高2.8米,重2吨,臂展能达到近2米。
主要用途是作为载具,辅以其他模块后,能在林区矿区进行勘测,并且采矿的同时无需进行大量的植被清理。
图1-4Mantis机器人
目前来看,国内外对于六足仿生机器人的研究还存在一些差距,但都还没有特别大的突破,多数的六足机器人仍是以概念和样机出现,用于工业领域的寥寥无几,即使有少数声称能进行勘测的特种机器人,也不具备足够高的可靠性。
1.3六足仿生机器人应解决的主要问题
对于六足仿生机器人而言,最主要的问题是如何让机器人能够保持重心稳定地进行移动。
一是步态的研究,以怎样的方式行进,才能充分发挥多足机器人用点接触来行进的优势。
二是舵机之间的协调控制,由于18个关节上的舵机都是独立控制,虽然换来了较大的自由度,但控制也因此变得繁琐,如何将舵机与舵机之间统筹结合起来控制,是系统效率提高的关键。
三是腿部机械结构的设计。
腿部的结构与机体的稳定性密切相关,采用何种机械结构才能让腿部满足理想的运动轨迹,是科学家研究的热点。
2主要原理
2.1仿生六足机器人行进原理
本论文仿生六足机器人的行进方式主要参考了六足昆虫的三角步态,行进时通常将六只脚分为两组,每组三足呈三角形交替行走以保证重心的稳定。
这种步态依靠腿部的前后摆动将身躯前移,虽然为了让重心保持在三角形内,导致腿部跨度小,行进速度也称不上快,但是其稳定性却无可置疑。
在下列分析中假定左前、右中、左后为A组足,右前、左中、右后为B组足。
前进的流程,可分解为两个过程,以及三个状态间的转换。
假设A组足先动,状态a为初始状态,左三和右三足呈对称形态。
状态b为A组足角度较初始状态不变并抬起,B组足组成的重心较初始状态滞后。
状态c为B组足角度较初始状态不变并抬起,A组足组成的重心较初始状态滞后。
过程x为B组足落地,A组足抬起并恢复初始位置,随后B组足以足尖为支点带动身躯前移。
过程y为A组足落地,B组足抬起并恢复初始位置,随后A组以足尖为支点带动身躯前移。
控制流程图图如图1,状态图如图2。
图2-1前进控制流程图
图2-2前进步态图
而定点转弯的实现,其实也是一样的原理,甚至更加简单。
通过控制落地足相对机身的角度,从而实现方向的改变。
定点转弯的流程可分解为三个状态。
从左转弯来看,状态a为初始状态,状态b时,B组足抬起,A组足角度改变,状态c则为B组足落地,A组足恢复原始角度。
当转弯时,B组足抬起,同时A组足控制方向改变,随后B组足落地,A组足抬起恢复角度后落地,状态从a-b-c-a(d)进行循环。
由于转弯的过程实际就是抬脚与落地,因此过程不进行具体讲述。
控制流程图如图3,状态图如图4。
图2-3定点转弯流程图
图2-4定点转弯步态图
2.2STM32F103系列单片机定时器输出PWM原理
定时器输出PWM波首先要对CCMR1:
OC1M[2:
0]进行设置,PWM模式1为[110],PWM模式2为[111],并设置TIMx_CR1中的DIR寄存器,DIR=0为向上计数,DIR=1为向下计数。
定时器输出PWM的过程主要是由CNT、ARR、CCRx三个寄存器控制。
CNT寄存器的功能为计数,储存当前值。
ARR寄存器的功能是自动重装载,计数值达到设定值后会归零重新加载。
CCRx寄存器的功能是捕获或比较,这里是为了改变占空比,用到的是比较功能。
接下来说明一下,向上和向下计数,PWM模式1和模式2的区别。
当处于向上计数时,占空比的比较条件为CNT的值小于CCRx的值,而向下计数时,则与之相反,条件CNT的值大于CCRx的值。
在PWM模式1下,条件为真,则输出有效电平,假输出无效电平,相反,在PWM模式2下,条件为真时,输出无效电平,反之输出有效电平。
因此,我们可以通过设定ARR的值,当CNT计数值达到ARR的设定值时,ARR就会归零,并自动重新装载,达到控制PWM输出频率的改变。
而占空比的控制则通过改变CCRx寄存器的值。
当不同的值与CNT的值进行比较,同一周期内输出的有效电平和无效电平的比例也随之改变,意味着占空比也随之改变。
2.3图像传感器数据输出、读取原理
图像传感器的数据输出是在三个输入信号的控制下进行的,这里采用了QVGA模式输出像素。
如下图:
图2-5图像输出行时序图
图2-6图像输出帧时序图
第一个信号是像素时钟PCLK,在PCLK信号的一个周期里,输出半个或者一个像素数据。
第二个信号是帧同步信号VSYNC,当检测到该信号的上升沿时,代表着要开始输出一帧的数据,检测到第二个上升沿则代表结束这一帧的输出,同时开始下一帧的输出。
最后一个信号是行同步信号HREF或HSYNC,当HREF处于高电平时,代表着此时的数据为有效数据,PCLK每过一个周期,输出一个有效的字节数据,当HREF回到低电平时,代表结束这一行像素的输出。
对于HSYNC信号而言,当检测到下降沿时,代表此时输出的数据有效,再次检测到下降沿,代表一行像素输出完毕。
此次设计采用了QVGA模式,最终输出结果为RGB565格式,一个像素颜色的数据需要两个字节来储存,同时代表着R(红色通道)的值为高字节的前5位,G(绿色通道)的值为高字节的后3位加上低字节的后三位,B(蓝色通道)的值为低字节的后5位。
因此要输出一张320×240的图片,一行则要输出640个字节,共输出640个PCLK周期。
PCLK的速率可达到24Mhz,因此要注意MCU速率是否低于PCLK,如没有降低PCLK的速率,MCU速率又没有PCLK快,则会造成数据丢失,无法得到正确图像。
3硬件选型
3.1六足机器人控制系统芯片选型
在市面上,可作为控制器的产品主要分为单片机、嵌入式两大类,而实际上其实这两者的界限也挺模糊,有些高性能单片机并不是不能搭载计算机系统,只是效率不高,没有必要罢了,而嵌入式大部分也是基于单片机设计的,也可以说是微型计算机的裁剪版。
因此,在此只是大概划分了这两类产品,并介绍其细分种类下不同系列的产品的优劣势。
对于机器人控制和学生市场而言,单片机主要考虑用51单片机,stm32系列单片机和arduino板。
51单片机是由ATMEL公司推出的一种8位单片机,它的功能相对比较基础,基于汇编语言跑程序的同时,芯片处理速度慢,导致其运行速度也慢,只能进行一些简单的控制,优点是使用简单,只要将寄存器配置好,载入程序就行,并且比起其他8位单片机,具有乘除法运算,无需调用子程序来实现乘除算法。
Stm32系列单片机是ST厂商推出的一款以arm为内核的32位单片机,特点是高性能、低成本、低功耗。
其最高72Mhz的工作频率,大大提升了单片机的运行速度,并提供了丰富的外围接口。
Stm32系列单片机较51较为复杂,主要在于大量寄存器的配置和使用,也因此可以关掉不需要使用的功能,降低功耗。
而arduino板实际上是一种基于AVR单片机设计的开发板,它更多的是提供软件上的支持,而不是硬件上的支持。
官方提供了丰富的库函数资源,开发者不需要去了解内部的硬件结构和寄存器的设置,只需要知道端口的作用,就能够避开底层驱动和硬件进行开发。
同时在官方的开源社区,也提供了大量、具有不同功能的函数库封装,方便业余爱好者使用。
图3-151单片机图3-2STM32系列单片机
图3-3arduino板
嵌入式通常是指一种搭载了计算机系统的开发板,它在软硬件的方方面面上都是根据用户需求、功能、可靠性、成本、体积、功耗、环境等多种因素而进行增减的,从而更好地贴合环境实际情况,实现最高效率。
对于学生而言,很难说真正去为了某个功能而去设计专用的嵌入式系统和开发板,而树莓派作为一款微型计算机,搭载了linux系统,通过外围接口的使用,也可以将其当做嵌入式开发板来使用。
所以单纯就开发和使用而言,很多想学习嵌入式开发的人往往选择了树莓派作为嵌入式开发板来使用。
树莓派基于arm11而设计,工作频率高达700Mhz,通常在需要某种算法,需要强大的计算能力时才会选择,比如人脸识别,AI算法等功能,这时采用一般的单片机实现起来就会很复杂很慢。
图3-4树莓派
本次设计主要是研究六足机器人的控制原理,需要一定的运算能力和响应速度,但暂未考虑人脸识别等高级算法的功能,因此经过经济和需求考虑,决定采用以ARMCortex-M为核心的STM32系列单片机。
又根据定时器的使用个数,I/O口功能及数量,选定了STM32系列中的STM32F103VCT6。
STM32F03VCT6以ARM32位的Cortex™-M3为内核,工作频率可高达72MHz,拥有256K字节的闪存程序存储器、48K字节的SRAM、80个I/O口、3个USART口、2个UART口、3个SPI口、2个I2C口和11个定时器,其中有四个16位定时器以及两个高级定时器均可输出多路PWM。
3.2舵机驱动电池选型
可用于驱动电机舵机的电池类型非常多,如市面上常见的一次性电池,通常为碱性或者碳性的干电池。
碳性电池电量要远少于碱性电池,并且由于发生化学反应,长期使用后会有漏液情况发生,同时因为含有镉元素,会对环境造成污染,需要进行回收,虽然碳性电池功能不强,还有一些缺陷,但是其胜在价格低廉,一般都使用在耗电量不强的设备上。
而碱性电池电容量大,持续输出稳定,并且不会漏液和污染环境,已基本取代了碳性电池的地位,不论是高端的电子产品,还是普通的小家电,碱性电池都能很好的适用。
尤其适合适用在耗电量大,持续时间久的情况下。
碱性电池还有一个特点,当电量耗尽后静置,电量又会恢复一部分,断续适用能让碱性电池能加耐用。
图3-5碱性电池图3-6碳性电池
又如蓄电池,比较常见的是酸性的铅酸蓄电池和碱性的镍镉蓄电池。
这类电池主要以呈酸/碱性水溶液作为电解质,因此原料简单资源多,价格也比较低廉。
同时放电稳定,工作电压高,温度限制较低,可多次充电反复使用等优势也让蓄电池得以发展,现今已广泛使用在工业领域,通常用来驱动需要较大的电流电压的设备。
其缺点也十分明显,虽然原料便宜,但是需要占用的体积重量也很大,电池的能量密度往往也不高,并且还有着自放电的问题,即使没有使用,放置一阵子后电量也会耗尽。
图3-7铅酸蓄电池图3-8镍镉蓄电池
在能进行充电的电池类型中,还有很多类电池广泛应用于电子产品领域,最出名的莫不是锂电池。
它的能量密度非常高,能达到每千克460至600瓦时,是铅酸电池6至7倍,也变向地突出了该电池重量轻体积小的特点。
其使用寿命很长,能进行10000次的充放电,且自放电率极低,几乎可以忽略不计。
对于环境也十分友好,一是生产过程不消耗水资源。
二是本身及相关生产过程都不存在有害有毒的重金属元素和物质,不会对环境造成污染。
并且对于温度的限制也不高,一般的锂电池都可在-20℃到60℃的环境下使用,甚至可以经过特殊处理以适应更低或更高的温度。
锂电池最主要的缺点就是生产工艺比较复杂。
由于锂电池不允许过充过放电,并且安全性一般,容易发生爆炸,自然就需要在生产上使用保护电路、特殊材料和元件来解决安全和损坏问题。
图3-9锂电池图3-10手机锂电池
由于该电池需要装载在六足机器人身上,用于驱动18个使用电压3.6v至6v、使用电流500mA至600mA的舵机,因此蓄电池,碱性电池和锂电池理论上都是可以使用的,但是鉴于锂电池通常只有以3.7V为倍数的电压值,离舵机最低工作电压太近,有可能无法较好地驱动,而镍镉电池充电性能一般,有记忆效应,电量也没有碱性电池高,最后还是采用了碱性电池作为舵机的驱动电源。
3.3摄像头选型
本次研究中,对摄像头的功能并无过多要求。
选型的主要因素为摄像头模块的工作速度、抗干扰能力、价格和学习资源。
最后匹配STM32F103系列的控制器后,选用以PB-0300系列的CMOS图像传感器制作的OV7725模块。
该模块的需要的占用空间很小,工作电压只需要2.5v到3v,提供多种格式的图像数据如常见的RGB、YUV、YCbCr等,并且从VGA到CIF以下的尺寸都能输出。
同时该摄像头最多能输出有效像素76800个,对应的是640×480大小的图像。
数据的传输则是通过SCCB总线控制,能输出整帧、子采样、取窗口等方式的各种分辨率8位影像数据。
最后,该摄像头还应用了独特的图像传感器技术,能通过减少光线和硬件本身的缺陷对图像造成的干扰,从而得到更加清晰完整的图像。
图3-11CMOS图像传感器图3-12OV7725摄像头模块
4控制系统设计
对于六足机器人而言,主要应用于探索勘测领域。
为了能够被控制和检测,并拥有一部分自动探查的能力,采用手机蓝牙实现通讯,并搭载摄像头以获得环境数据。
4.1控制系统硬件设计
图4-1硬件系统
4.2控制器STM32F103VCT6电路原理图
图4-2单片机系统原理图
4.3控制系统程序框图
图4-3控制系统程序框图
4.4六足机器人主要功能的实现
4.4.1蓝牙串口通讯
蓝牙模块初次使用时,最好先通过usb转ttl模块,将蓝牙模块hc-05与电脑相连接,用串口调试软件XCOM查询或配置好hc-05的波特率,配对密码,姓名等。
在接收数据时,通常使用检测接收数据的标志位USART_IT_RXNE或USART_FLAG_RXNE。
前者是接收中断发生标志位,后者是接收状态标志位,当中断未开启时,USART_IT_RXNE不工作,当中断开启后,两者实际用途无差异。
在接收完数据后,要使用USART_ClearITPendingBit或USART_ClearFLAGPendingBit函数对标志位进行清零。
如下列代码所示:
发送完数据时,数据发送标志位会硬件自动清零,因此只需要在发送数据后等待标志位自动清零。
发送数据相关的标志位有四个:
USART_FLAG中的TXE和TC,USART_IT中的TXE和TC。
FLAG和IT的区别和接收标志位一样,不再阐述。
而想知道TXE和TC的区别就得先知道usart传输的相关原理。
在usart的发送端,是由两个寄存器组成的,一个为USART_DR寄存器,另一个为移位寄存器。
当数据发送时,
USART_DR寄存器会先将数据存放着,然后转移给移位寄存器,再由其发送给接收端。
当USART_DR寄存器中无数据时,TXE就会置1。
当移位寄存器发送完最后一个数据时,TC就会置1。
两者在功能上最大的区别是:
使用TXE来判断数据发送情况的话,发送数据时能保证USART_DR寄存器里总是有数据,保证数据连续不断地发送;使用TC来判断的话,就能准确得知发送完成的时间点,在效率上和数据的连续性上,不如采用TXE方便。
因为发送数据不写在中断函数里,于是使用了USART_FLAG_TXE,代码如下列所示:
下图为手机蓝牙发送数据后,stm32单片机接收并发送回所接收到的数据。
图4-4蓝牙通讯
4.4.2超声波测距
向超声波模块的TRIG脚发送一段10us的高电平,模块就会发出超声波,等待接收到回波,ECHO引脚就会置1,并持续从发出超声波到接收所用的时间。
根据此功能,只要用定时器来计算ECHO高电平持续的时间,就可以算出距离障碍物的距离。
本次研究中,将周期值设为1000,预分频数设置为72,定时器时钟频率也默认等同于工作频率72Mhz(可改变),计算后得出每次计数为1us。
音速在通常环境下为340m/s,转换单位后位0.0343cm/us,也可以看作29.15us/cm。
除去一半路程,实际障碍物与机器人的距离和时间关系可看作,每微秒58.3厘米。
为了运算方便,将58.3us/cm约等于58us/cm。
具体代码如下列所示:
在功能加入了发送数据的代码,通过手机可看到数据是否正确,最终实现如下图。
图4-5接收长度数据
图4-6超声波模块实物图
4.4.3行走功能
六足机器人的行走,实际上就是舵机角度的改变,而舵机角度的改变实际就是控制信号PWM波占空比的改变。
显示在程序里,就是对定时器进行配置,然后根据步态不断地改变定时器输出的PWM波的占空比。
下列是前进状态下其中一个动作的代码:
加入循环代码后,调整占空比,实现