六脚爬虫机器人机械结构设计和控制系统搭建doc.docx
- 文档编号:24785864
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:14
- 大小:26.73KB
六脚爬虫机器人机械结构设计和控制系统搭建doc.docx
《六脚爬虫机器人机械结构设计和控制系统搭建doc.docx》由会员分享,可在线阅读,更多相关《六脚爬虫机器人机械结构设计和控制系统搭建doc.docx(14页珍藏版)》请在冰豆网上搜索。
六脚爬虫机器人机械结构设计和控制系统搭建doc
六脚爬虫机器人机械结构设计和控制系统搭建
摘要本文详细介绍了六脚爬虫机器人的机械结构以及控制程序的编写。
机械结构采用了对称式设计,结构简单;其行走功能由六只脚、18个舵机实现,自由度较高,稳定性、灵活性较好。
控制程序的主体是C语言。
包括基本步态的编写,以及传感器的在机器人上的高级应用,这样,机器人在满足基本行走运动的同时,也能感知外界环境,并通过控制器对接收到的外界信号进行处理,并控制机器人运动。
关键词对称式结构,舵机控制器,步态,传感器AbstractThethesisdescribesindetailthatthemechanicdesignofHexcrawlerandthecompilingofcontrolprogram.Thestructureoftherobotisinsymmetricexpression,asimplemechanism;thefunctionofwalkingissupportedbysixlegs,andeighteenmotors,withmultipledegreesoffreedom.Besides,itisofhighstabilityandflexibility.TheprogramtocontroltherobotiswritteninClanguage,includingbasicgait,theadvancedapplicationofsensors.Thereby,therobotcanwalkinseveralgaits.Atthesametime,itcansensetheconditionaroundit.Then,itwillprocessthedataitreceived,andcontrolthemotionoftherobot.Keywordssymmetricexpression,PSCU,gait,sensor目录摘要IAbstractII目录III1绪论-1-1.1课题来源-1-1.2本课题的目的及其意义-1-1.3国内外发展现状-1-1.4本课题的研究内容-5-2机械结构设计介绍-6-2.1功能需求与分析-6-2.2材料选择与结构设计介绍-6-3舵机控制板原理与应用-9-3.1舵机原理介绍-9-3.2舵机控制板原理介绍-10-3.3如何使用舵机控制板-12-3.4控制板程序编写-14-4STM32开发板介绍与程序编写-18-4.1STM32F107芯片简介-18-4.2软件与编程初始准备-18-4.3GPIO与AFIO设置与应用-18-4.31GPIO设置与应用..184.32AFIO-----I/O口重映射...224.4USART设置与应用-22-4.5外部中断设置与应用-26-4.6系统时钟设置与应用-29-4.61系统时钟简介与应用..294.62定时器配置314.7机器人行走步态程序编写-32-4.71机器人行走步态简介334.72三脚步态.354.73四脚步态.374.74单脚(波动)步态....384.75转弯与横爬步态.404.8多传感器应用与程序编写-43-4.81指南针传感器.434.82红外、光敏传感器.454.83柔性力传感器.464.84温湿度、发声、射频识别(RFID)传感器..484.85无线(Zigbee)传感器..494.86超声传感器525总结-55-致谢-56-参考文献-57-1绪论1.1课题来源本项目来源于华中科技大学与伍斯特理工学院合作的WPI项目。
1.2本课题的目的及其意义机器人是高级整合控制论、机械电子、计算机、材料和仿生学的产物。
现在,机器人已经发展到一个全新阶段,各种机器人应运而生,从简单地追求功能到神似,到个性化;从单单发展工业机器人到工业、家用机器人全面开花,并取得了长足进步。
六脚机器人作为行走机器人的一种,具有结构简单,稳定性好等优点,而本课题也并未在很高深的机器人理论花大量功夫,而更多地着眼于为大专院校提供机器人教学平台,或者用于科技馆展览。
本课题所设计的机器人最大的特点是理论通俗易懂、操作方便、便于二次开发。
对于一些入门者(初步掌握控制论、机械设计、机械电子只是)来说,很容易便能被引领入机器人研究的殿堂。
1.3国内外发展现状对于仿生机器人,尤其是多足机器人,国内外均有大量研究。
1990年,美国卡内基梅隆大学研制出用于外星探测的六脚步行机器人AMBLER。
该机器人采用了新型的“腿机构“,并由一台32位的处理机来规划系统运动路线、制运动和监视系统的状态。
但由于体积和质量太大,最终没被用于行星探测计划。
1993年,卡内基梅隆大学开发出有缆的八足步行机器人DANTE,用于对南极的埃里伯斯火山进行了考察,其改进型也在实际中得到了应用。
1994年二代对距离安克雷奇145km的斯伯火山进行了考察,并传回了各种数据及图像。
日本对多足步行机的研究从20世纪80年代开始,并不断进行着技术创新,随着计算机和控制技术的发展,其机械结构由复杂到简单,其功能由单一功能到组合功能,并已研究出各种类型的步行机。
主要有四足步行机、爬壁机器人、腿轮分离型步行机器人和手脚统一型步行机器人。
1994年,日本电气通信大学的木村浩等研制成功四足步行机器人Patrush二代。
该机器人用两个微处理机控制,采用直流伺服电机驱动,每个关节安装了一个光电码盘,每只脚安装了两个微开关,采用基于神经振荡子模型CPG的控制策略,能够实现不规则地面的自适应动态步行,显示了生物激励控制对未知的不规则地面有自适应能力的特点。
20002003年,木村浩等又研制成功四足步行机器人Tekken。
该机器人用一台PC机系统控制,用瑞士Maxon直流伺服电机驱动,能适应中等不规则表面的自适应步行。
我国对于多足机器人的研究起步则较晚。
1989年,北京航空航天大学在张启先教授的指导下,孙汉旭博士进行了四足步行机的研究,试制成功一台四足步行机。
钱晋武博士研究地壁两用六脚步行机器人,并进行了步态和运动学方面的研究。
1990年中国科学院沈阳自动化研究所研制出全方位六脚步行机,不仅能在平地步行,还能上楼梯。
1991年,上海交通大学马培荪等研制出JTUWM系列四足步行机器人。
2000年,马培荪等对第一代形状记忆合金SMA驱动的微型六脚机器人进行改进,开发出具有全方位运动能力的微型双三足步行机器人其每条腿的自由度变为3个自由度。
2003年哈尔滨工程大学的孟庆鑫、袁鹏等进行了两栖仿生机器蟹的研究,通过研究多足步行机的单足周期运动规律,提出适合于两栖仿生机器蟹的单足运动路线规划方法,建立了生成周期运动的神经振荡子模型。
目前市场上几款六脚机器人对比如下
(一)DEPUSHHexCrawlerHexCrawlerCompanyDEPUSHMaterial5052alloyaluminum,1/16”thickwithclearanodizingLegMovement2DOFDimensionsBody49.68x40cm,Heightbetween12.3and15.2cmCost350
(二)LynxmotionRB-Lyn-248RB-Lyn-248CompanyLynxmotionMaterial5052alloyaluminum,1/16”thickwithblackanodizingLegMovement3DOFDimensionsBody19.1x14.9cm,Heightbetween5.1and13.3cm,GroundClearanceupto8.9cmCost261.35(三)HexCrawlerHDATSHexCrawlerHDATSCompanyDEPUSHMaterial5052alloyaluminum,1/16”thickwithclearanodizingLegMovement3DOFDimensionsBody52x49.7cm,Heightbetween12.3and15.2cm,Groundclearance12.7cmCost¥10,000about1,500其中HexCrawler一代机器人使用的编程软件为Parallax公司提供的教育发展版芯片。
图1.1为Phoenix公司提供的六脚机器人,图1.2则为Depush公司的六脚机器人一代外形,其每个脚仅有两个自由度。
图1.1PhoenixHexapod图1.2DEPUSHHexCrawler1.01.4本课题的研究内容六脚机器人基本结构的设计,首先使之能够实现三脚步态、四脚步态、波动步态等,以满足行走要求;然后,能够感知外界环境的变化,实现避障报警等功能;最后,实现对机器人的远距离控制。
具体要求为设计机器人机械结构,使其可以完成前进,后退,左转,右转,侧移,扭动身躯等简单动作;可以完成抬脚,简单舞蹈等动作;1、编写机器人各种基本动作的软件代码,使其能完成以上动作;2、机器人可以接受电脑无线控制,编写相应无线控制程序;3、机器人可感知外界环境,编写相应传感器处理程序;4、对所有程序进行综合处理,协调各程序之间的关系。
2六脚机器人机械结构设计介绍2.1功能需求与分析作为六脚仿生机器人,在追求神似的同时,关键在于能否像爬虫一样完成各种行走动作。
本课题对机械结构的要求不高,但需要满足下面几点灵活度高、稳定性好、能够实现多足机器人的基本步态。
针对这几点,同时按照德普士公司的要求,再参照目前市面上存在的六脚仿生机器人,最终拟定的机械结构设计方案为在DEPUSHHexCrawler1.0(图1.2)的基础上每只脚增加一个舵机,即将自由度由两个提升为三个。
2.2材料选择与结构设计介绍根据目前市面上的六脚仿真机器人,本课题选用5052铝合金作为机器人的主要材料,这样机器人既能满足强度要求,也能满足轻便性要求。
同时,对外表进行烤漆处理,显得厚实而稳重,富有质感。
如图2.1为机械结构的总三维图。
图2.1六脚机器人三维总图机器人整体上采用对称式结构,由六只脚和底架(身体)组成。
每只脚有三个关节,每个关节处为采用舵机连接,可在固定平面内旋转180°,如图2.2所示。
其中舵机1控制机器人脚前后摆动;舵机2控制机器人上下摆动;舵机3控制机器人内外伸缩。
三个舵机配合即可实现机器人的走动。
图2.2六脚机器人单脚结构图机器人身体(图2.3)、脚(图2.2)上均布满各种镂空图案,主要有两点作用
一、减轻机器人重量;
二、增加机器人的美观度。
由于机器人的完全对称性结构,其前后由认为设定,即图2.1中Leg1、Leg4在前,Leg3、Leg6在后。
图2.3六脚机器人底架结构图机器人的主要尺寸为机器人全长500.0mm;底架(身体宽)228.0mm;舵机1(Leg1)距底架最前方距离60.0mm;Leg1与Leg2距离195.0mm;Leg1与Leg3距离390.0mm;每只脚上舵机2与舵机3距离120.0mm;舵机3与脚底距离150.0mm。
3舵机及舵机控制板原理与应用本章主要介绍舵机以及舵机控制板(PSCU)的原理、使用方法与程序编写。
3.1舵机原理介绍舵机是一个通过输出轴的转动来控制物体转动的装置。
它在特定编码的驱使下可以转动到工作范围内的任意给定位置。
因为它的轻便,位置控制简易且精确,在机器人中使用尤多。
多舵机的协调工作可满足机器人的多自由度要求。
舵机可以实现0180°的旋转,当轴处于正确位置时,舵机将停止运动;当所在位置不对时,电路则驱动电机运转到需求位置。
舵机是采用比例调节方式控制速度。
当舵机转动的距离大时,则加载在舵机上的能量就大,反之亦然。
而舵机的转动角度控制是由加载在控制线上的脉冲周期完成的,即所谓的脉冲编码调制。
舵机设定为每隔20ms接受一个脉冲,这样的话,实际脉冲长度就可用来控制舵机转动的角度。
如图3.1,例如1.5ms的脉冲可使舵机转动90°。
图3.1舵机转角与脉冲周期关系图本项目采用的事Hi-Tec公司生产的HS-322HD舵机,如图3.6。
图3.6HS-322HD舵机其主要技术参数如下■重量43g■尺寸402036.5mm■拉力[4.8V]3Kg.cm■拉力[6.0V]3.7Kg.cm■转速[4.8V]0.19sec/60°■转速[6.0V]0.15sec/60°■计算电流0.35A当舵机安装好后,需要获取其初始位置值,为编程做准备,具体可见3.3节关于PSCI软件的介绍。
3.2舵机控制板原理介绍由上述机械结构介绍可知,本六脚机器人是通过控制18个舵机来实现机器人的运动的。
但如何协调好各舵机的动作,让其满足功能需求这就需要用到舵机控制板。
舵机控制板按控制舵机数目(接口数)的多少,可分为8路舵机控制器,16路舵机控制器,32路舵机控制器等等。
考虑到成本以及控制舵机的数量,本课题采用两块16路舵机控制器串联的方式来控制舵机。
选用型号为PARALLAX公司提供的PropellerServoControllerUSB28830,简称PSCU。
如图3.2所示图3.2舵机控制板PSCU具有下述多项特点①可串联两块控制板实现32路舵机控制;②独立的螺旋式接线柱为控制板供电,舵机则可通过开关控制关停;③其所用固件开放源代码;④可通过USB接口或者串行通信接口编程;⑤舵机速度可控。
PSCU规格及性能①电源要求逻辑电平5VDC60mA,4.87.5VDC控制舵机;②通信异步串行通信2400bps或者38.4kbps(TTL或USB);③工作温度32158°F(070°C);④尺寸2.26x1.80x0.65in57.3x45.7x16.5mm;3.3如何使用舵机控制板在使用控制板前,需通过螺旋式接线柱给控制板提供4.87.5V的直流电,同时为使舵机运动,还需给舵机提供5V的直流电。
此项可通过USB接口(如图3.3)或者通过舵机控制板左上方的SerialIn处的杜邦针供电(TTL电平,如图3.4)。
图3.3PSCU-USB供电电路连接图图3.4PSCU-主控制板供电电路连接图USB调试①安装FTDIVCP驱动(下载地址/usbdrivers);②安装PSCI软件(访问网址,并搜索28823)。
双击软件图标,即可获得图3.5所示,连接好USB线,在界面上选择COM口,获取PSC版本,即可使用。
图3.5PSCI控制界面图中每个channel的进度条,可发现对应舵机会向相应方向发生一定度数的旋转。
这可用来进行舵机控制调试,从而获取舵机位置值,来书写步态。
注意图中数据在编入ARM程序中时,应先除以2倍,才是实际数据,即图中的中心出1500对应实际的750。
更多功能可参照PARALLAX公司提供的PropellerServoControllerUSB说明文档。
当使用双块板时,其连接方式为首先将主板的SerialIn(两排,选上排)引出按高低电平信号线要求插在主控制板(STM32板)上,其中红色线接5V电源,黑色线接地,白色线接信号线,即PA9。
然后将副板的SerialIn(上排)引出插在主板的SerialIn处(下排)。
最后通上电源即可。
了解了PSCI的基本功能,并按要求连接好电路后,首要做的就是将舵机位置的初始值找出。
通过拖动进度条,并观察机器人各腿的位置,从而确定舵机初值。
笔者提供的舵机初始值均为六脚与身体垂直时的值,且2、3关节夹角近似为90°。
3.4控制板程序编写㈠基本工作准备与注意事项前述工作准备停当,即可开始程序的编写。
PARALLAX公司提供的说明文档中提供了BS2程序,需要通过C语言转译,才可供ARM板识别。
首先注意的是PSCU板的默认波特率为2400bps,所以在编写串行通信程序时,应将串行通信的波特率设置为2400bps(具体见4.4节关于USART设置的介绍)。
当然本控制板亦可通过程序设置,将波特率改为38.4kbps,具体内容下面会介绍到。
此外,控制板接收的异步通信数据格式要求还有,正相,8个数据位,无奇偶校验位,1个或2个停止位。
其次控制板分为主副板,则对应的舵机控制通道号即为031;即副板的通道号再原号基础上加16即可。
如果按序连接舵机,可使编程变得较为简单,通过简单的数学关系进行数据处理,但线路凌乱,看起来不是很美观;本课题采用的是对称连线,即选用通道号08,2331;当然,这样编程相对就复杂一些。
最后关于主副板的界定还需提醒一句,由于硬件可能出现bug,实际上控制板可能通道号等没有按照说明书的来,在调试过程中,可多试几次,按照实际结果编程。
本课题在调试过程中即出现了问题,实际的主副板是颠倒的,且必须将副板与主控制板(STM32)连接才可使用。
㈡通信协议规则PSCU为用户提供了多种控制功能,但每种控制字符串均是以SC开始,以0x0D结束,中间有间隔4个主控制字符,下面将一一介绍①位置命令设置舵机的位置控制字符串为“SC”其中channel为通道号,即前述的031;rampspeed为一字节值,用于舵机转速控制,其变化范围为063,且数值越大,转速越小;lowbyte为舵机位置的低字节,highbyte为舵机位置的高字节。
通过改变lowbyte与highbyte值即可改变舵机位置,其值变化范围为2501250。
位置命令控制板最基本的命令,往往也是唯一用到的功能。
通过此命令,可以实现舵机按要求的转动,从而满足行走等多功能要求。
②SBR设置波特率控制字符串为“SCSBR”其中mode是用来设置波特率的,0代表2400bps,1代表38.4kbps。
控制板的默认波特率为2400bps,无需设置,但如果需要使用38.4bps的波特率进行通信时,可使用该程序对波特率进行更改。
③RSP返回位置值控制字符串为“SCRSP”其中channel为通道号。
与VER一样,需要进行输入输出的设置,方能返回位置值,这对编程很有用处,可以通过读取位置值,判断其是否到位来实现延迟,精确性较高。
本课题未使用。
读者可拓展功能。
④PSS设置软件口控制字符串为“SCPSS”其中mode为0代表015;1代表1631。
可能由于板子的问题,实际过程中并未起作用,当控制板没问题时,可以根据个人喜好设置控制板的端口号,为编程提供便利。
⑤PSD使端口无效控制字符串为“SCPSD”其中channel为通道号。
此功能与PSE功能配合使用,在适当时候可能才生意想不到的效果。
⑥PSE使端口恢复有效控制字符串为“SCPSE”其中channel为通道号。
此功能用于PSD后,用来恢复端口的正常使用。
其余的功能控制命令此处便不再赘述,因为一般情况下无法用到。
㈢C语言程序编写简介由于说明书中只提供了BS2程序,较难普及,需使用应用较广的C语言编写。
从控制命令的格式可以看出,无论哪种方式,都是8字节的字符串,于是,可定义一个联合体(结构体亦可),来储存这一串字节typedefunion_SERVO_PACKET{charstream[8];struct{charCR8;charB38;charB28;charB18;charB08;unsignedSC24;}packet;}SERVO_PACKET;SERVO_PACKETpac;并将三字节的SC初始化为0x215343或”SC”,将CR初始化为0x0D。
这样在编写各种控制命令函数时,只要改变B0B3的值即可。
例,位置命令函数voidSendPacketcharRS,charChannel,intPosition{inti0;pac.packet.B0Channel;pac.packet.B1RS;pac.packet.B2LOWBYTEPosition;pac.packet.B3HIGHBYTEPosition;fori7;i0;i--{ser_putbytepac.stream[i];}//该函数4.4节介绍,作用为发送单个字节}其中LOWBYTE、HIGHBYTE函数的定义为defineLOWBYTEvunsignedcharvdefineHIGHBYTEvunsignedcharunsignedintv8其功能为获取数值(位置值)的低八位与高八位。
这即可为编程提供很大方便。
以此类推,其它命令的函数可以根据需要只要参考上述的位置命令函数编写即可。
在此基础上以及之前用PSCI软件调试出的舵机初始值,即可编写舵机初始化程序了。
voidInitservovoid{inti0;fori0;iCRLGPIOD-CRLreturndata;}函数二intSendCharintch{USART_SendDataUSART1,unsignedcharch;whileUSART1-SRreturnch;}上述两个函数的功能等同,在写程序时可以随意调用,例如3.4节提到的SendPacket函数便调用了上述的函数一。
㈡接收一个字节u8RBytevoid{u8out0;whileUSART_GetFlagStatusUSART1,USART_FLAG_RXNERESET{}//等待接收完毕outUSART_ReceiveDataUSART1;//接收一个字节returnout;}该函数用于接收单个字节,在无线通信时可用到。
㈢发送一个字符串voidPrint_Stringu8*p//发送一串数据{while*p{USART_SendDataUSART1,*p;whileUSART_GetFlagStatusUSART1,USART_FLAG_TXERESET{}}}当连续发送的字符很多时,可以选用该函数以字符串形式发送。
㈣接收一个字符串voidSerialInu8*buf,u8len{unsignedchari;fori0;ilen;ibuf[i]RByte;}同样,当需要连续发送多个字节数据时,则可选用该函数。
上面提到的都是USART1的设置以及拓展功能函数的书写。
而其它串口通信的设置与U1一致,功能函数则只需将U1换成U2或U3即可。
由于主板的问题,本项目中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 爬虫 机器人 机械 结构设计 控制系统 搭建 doc