第6章-六足仿生机器人项目设计

第6章-六足仿生机器人项目设计

ID:81932232

大小:4.08 MB

页数:54页

时间:2022-10-14

上传者:胜利的果实
第6章-六足仿生机器人项目设计_第1页
第6章-六足仿生机器人项目设计_第2页
第6章-六足仿生机器人项目设计_第3页
第6章-六足仿生机器人项目设计_第4页
第6章-六足仿生机器人项目设计_第5页
第6章-六足仿生机器人项目设计_第6页
第6章-六足仿生机器人项目设计_第7页
第6章-六足仿生机器人项目设计_第8页
第6章-六足仿生机器人项目设计_第9页
第6章-六足仿生机器人项目设计_第10页
资源描述:

《第6章-六足仿生机器人项目设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

第6章六足仿生机器人项目设计

1目录6.1设计思想6.2材料清单6.3机械零件设计6.4组装流程6.5电路设计6.6步态设计6.7红外控制设计6.8成品实物图

26.1设计思想六足仿生机器人俗称蜘蛛机器人,因其运动方式有着其他机器人不具有的能力优势流动性良好,能适应各种崎岖路面,且能耗较少,主要用于军事侦察、太空探索、救灾、抢险救灾等方面,还可应用于家庭娱乐、机器人教育等领域,有着较为广阔的应用前景。本项目的仿生蜘蛛机器人主要由控制板,18个舵机(六条腿),稳压器,无线模块和一些数据采集传感器(温度传感器等)组成。本项目的蜘蛛机器人有丰富的扩展接口,后期可根据各种应用领域的需要扩充相应的传感器和功能模块,完全能够胜任视觉定位、自主规划判断路径、多传感器组合扩展等功能,具有语音控制、人机对话等多种功能,应用领域广泛、市场前景良好。

36.2材料清单材料清单如表6-1所示。材料清单序号元器件名称型号参数规格数量参考实物图1固定板上自行打印1块详见6.32固定板下自行打印1块详见6.33膝关节自行打印12个详见6.34胫关节自行打印12个详见6.35踝关节自行打印6个详见6.36脚部支撑自行打印6个详见6.37ArduinoMega25601个8舵机控制器32路1个9语音模块非特定人声语音识别模块核心版1个

410红外避障C7A4611超声波传感器HC-SR04超声波测距模块112openmvCam M4-OV77251个13云台支架自行打印1套14数字舵机MRS-D2009SP1915电池1200mA/7.4v一个16杜邦线30cm公对母一捆

517杜邦线20cm公对母2捆18红外接收器VS1838B通用一体化红外接收头一个19遥控器ps2无线手柄一个20螺丝M1.6*5144个21螺丝M1.6*2072个22螺丝M3*836个23螺母M312个

6上述清单中的材料中有几处需要特别注意:1.第8项舵机控制器之所以选用了32路是为了日后扩展其他功能所预留的通道,如果没有其他特殊需求,实际上24路舵机控制器就可以满足需要,本项目至少需要使用12路以上舵机控制器,各位同学制作的时候可以根据自己的实际需求选定。此外,六足仿生机器人和四足仿生机器人、八足仿生机器人的控制原理基本相同,舵机控制调用方式相同,传感器连接设计方法相同,这些内容后面会陆续介绍,唯一不同的是步态姿势不同。各位有兴趣的同学可以在本项目设计完成之后,自行设计其他足数的仿生机器人。2.第9项是本项目的语音识别、对话功能实现的模块。之所以选择这个型号是因为其内置了较大的存储空间,用户可以自行定义2000句的对话。可以实现人和机器人的对话交流,也能实现用户对机器人的语音控制功能。该语音模块有三个版本,分别是核心板、升级版和完全版。核心板的价钱相对较低,本项目建议使用该版本。如果有同学想额外增加语音方面的功能和有这方面需求,可以选择后面两个版本。3.第12项OPENMV模块是本项目的视觉模块,因其与Arduino兼容性较好,功能调用较为容易而选用。本模块用两个版本,分别为M4和M7。M4版本固件版本较低,芯片处理速度低于M7,但是其价格便宜,实现的功能基本相同,没有特别需求的同学可以选择M4版本。

7第13项云台支架本项目使用的是自行建模3D打印的零件,主要目的是降低开发成本。如果有同学想要性能更好的云台或者完成某些测绘、监控任务的需求,可自行选装市面上的各种二轴、三轴无刷云台,提高性能的同时不影响本项目机器人的其他功能实现。第14项中的数字舵机,各位同学也可以根据实际需求选择市面上的数字舵机,根据需要可以选用180度或者270度的数字舵机。舵机的扭矩规格可以根据实际情况选用15KG-20kg之间。但是不建议同学们选用模拟舵机,因为模拟舵机需要不断的接受舵机控制器发送的PWM信号才能保持锁定角度,完成相应的操作,并且精度较差,线性度很难达标。而数字舵机仅需接受一次舵机控制器传递的PWM信号就可以锁定角度不变,控制精度较高、线性度良好、相应速度快,能够完成本项目的各项功能需要。特别值得注意的是,并不是舵机的转动角度越大越好,同学们不要选用360度舵机,因为目前市面的无死角舵机绝大部分无法接受PWM信号控制,不能锁定角度不变,一经上电会不停旋转。6.第18项和第19项的红外接收模块和红外手柄(遥控器)是配套使用的。因成本低廉,本项目选用了红外控制方式。但是同学们需要注意的是,红外接收控制有较多的限制,控制距离较近,不能有明显的遮挡物,并且在电子设备较多的复杂情况容易造成信号丢失,从而导致对机器人失去控制。有条件的同学可以根据本书前几章的内容,选用蓝牙、WiFi、2.4G技术等控制方式,不影响机器人的其他功能实现。

86.3机械零件设计机械零件包括机身固定板上下两部分、12个膝关节、12个胫关节、6个踝关节和6个脚步支撑部件组成,这些零件的设计图和装配图都在下文中给出。本项目的机械零件采用SolidWorks建模生成。该软件功能强大,能够胜任大部分的工程制图,最重要的是其操作简单、易学易用,特别适合新手使用。各零件图如下图6-1、6-2、6-3、6-4、6-5、6-6、6-7所示。图6-1底板零件图

9图6-2踝关节零件图

10图6-3上板零件图

11图6-4膝关节零件图

12图6-5足零件图

13图6-6云台零件图

14图6-7踝关节零件图

15本节所提供的零件都是3D建模,自行打印完成的,上述所有模型的尺寸单位都是mm。虽然作者使用的建模软件是SolidWorks,同学们也可以根据自己平时的喜好和习惯选用其他的建模软件操作,只要按照上图所给出的尺寸设计就可以,但是输出文件一定要选择.stl格式的才可以,因为目前市面上常用的桌面级3D打印机和准工业级3D打印机仅支持这种文件格式。另外,3D打印机原则上是选用精度越高的越好,但是同学们往往接触到的都是入门级别的设备,所以上述零件图各插口没有做的特别细小,一般的打印机都可以完成。上述零件打印的最低要求标准是机器打印精度0.2mm,打印层高0.4mm

166.4组装流程6.4.1六足组装步骤一:把两个膝部关节固定在一起,示意图如图6-8、6-9所示图6-8固定示意图(1)

17图6-9固定示意图(2)

18步骤二:把膝部舵机和上一步的零件一起固定,固定过程分解图如图6-10、6-11、6-12所示。图6-10固定示意图(1)

19图6-11固定示意图(2)图6-12固定示意图(1)

20步骤三:将上一步完成的内容与胫部关节连接件固定,示意图如下图6-13、6-14所示。图6-13固定示意图(1)

212.2.3运算符1.赋值运算符赋值语句的作用是把某个常量、变量或表达式的值赋给另一个变量。C语言中,符号为“=”这里并不是等于的意思,只是赋值,等于用“==”表示。注意:赋值语句左边的变量在程序的其他地方必须声明。

22图6-14固定示意图(2)

23步骤四:完成胫部和踝部的连接,连接示意图如图6-15、6-16所示。图6-15连接示意图(1)图6-16连接示意图(2)

24步骤五:将踝部、胫部、膝部所有零件固定,固定示意图如图6-17、6-18所示。图6-17固定示意图(1)图6-18固定示意图(2)步骤六:重复前面五个步骤,完成其他五条腿的组合。

256.4.2身体部分组装步骤一:安装云台,示意图如下6-19、6-20.图6-19安装示意图(1)图6-20安装示意图(2)

26步骤二:将上板,底板,云台与6只腿拼装起来,拼装示意图如图6-21、6-22、6-23.图6-21拼装示意图(1)图6-22拼装示意图(2)

27图6-23拼装示意图(3)组装过程中,如果各别零件因为打印的原因无法按进螺丝或者打印件有抽丝,可以有刻刀将孔洞适当的钻一下,但是一定要注意力度,不要将孔钻的过大。上螺丝的时候不易将螺丝拧的过紧,因为PLA素材相对较脆,打印机崩的太紧极易造成碎裂。此外,机身上板不要提早上螺丝,要按系统硬件连接图将主控板和传感器固定后再安装机身上盖。机身整体布线要尽量简洁工整,不要让舵机线裸露在外面。尽量将所有传感器调试好后,确定布线没问题了再固定,避免重复工作。

286.5电路设计6.5.1机器人硬件系统框图如下图6-24所示,通过机器人模式的选择,语音控制模块、是视觉模块或者其他传感器将采集到的数据传输给主控板ArduinoMega2560,主控板将收到的数据进行处理编译,并将执行命令传输给舵机控制器,舵机控制器根据主控板发送的命令进行操作,驱动相对应的舵机完成指定命令,最终实现对六足机器人的控制。图6-24系统框架图

296.5.2主板连接1.ArduinoMega2560原理图原理图如图6-25所示。图6-25ArduinoMega2560原理图本系统之所以使用ArduinoMEGA2560作为控制板是因为2560具有较高的性价比,具有14路数字输入输出口,4路串口信号,6路外部中断,14路脉冲宽度调制,具有丰富的扩展功能。实际上本设计的基本功能,ArduinoLeonardo也能够实现,但是从后期开发和扩展等方面原因考虑,选择2560无疑为本项目提供了不断升级的可能。

302.系统硬件连接图6-26系统硬件连接图图6-26是系统的主要部件连接图,Arduino在这里起到了一个中间协调的作用,视觉模块将采集的信息传输给2560,2560接收到信息并进行处理后发出指令到舵机控制器,舵机控制器转出相应的命令对舵机进行控制。同理其他的传感器也是这个工作原理。

316.5.3视觉模块连接1.视觉模块本项目采用了OPENMV视觉模块。Openmv搭载MicroPython解释器,允许用户在嵌入式上使用Python来编程.Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。使用python遍历每一个色块,就可以获取它们所有信息。并且,用户可以使用OpenMV专用的IDE,它有自动提示,代码高亮,而且有一个图像窗口可以直接看到摄像头的图像,有终端可以debug,还有一个包含图像信息的直方图。OpenMV摄像头使用标准M12镜头,以更换不同焦距的镜头。而且,OpenMV采用可叠加的设计,方便用户添加各种各样的shield。

322.openmv与Arduino的通信OPENMV与Arduinomega2560连接通信方法如表6-1和图6-27所示。表6-1对应引脚关系图图6-27硬件连接示意图

333.程序代码OPENMV上的代码(python)importsensor,image,timefrompybimportUARTyellow_threshold=(60,80,20,40,20,45)###################################################################################################_autosensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QQVGA)sensor.skip_frames(10)sensor.set_auto_whitebal(False)clock=time.clock()width=180#定义屏幕宽度height=120#定义屏幕长度a=0c=0###################################################uart=UART(3,9600)while(True):clock.tick()img=sensor.snapshot()blobs=img.find_blobs([yellow_threshold])ifblobs:forbinblobs:img.draw_rectangle(b[0:4])#rectimg.draw_cross(b[5],b[6])#cx,cyprint(b[5],'',b[6])a=b[5]if(a>=width/3)and(a<=width/3*2):c='2'elifawidth/3*2:c='3'else:c='4'uart.write(c)print(c)time.sleep(800)

34ArduinoMega2560上的代码void sj() {   intshijue= Serial1.read();//读取串口接收到的值if (-1 != shijue)//(没接收到数据时是等于-1的,Arduino串口基础,不多说。){if (1 == shijue) {//前进Serial.print("G4F1\r

35");       delay(100); }     if (2 == shijue) {//向左转60度Serial.print("G2F1\r

36");       delay(100); }     if (3 == shijue) {//向右转60度Serial.print("G5F1\r

37");       delay(100); }       if (4 == shijue) {//向后转Serial.print("G5F3\r

38");       delay(100);}}}

396.5.4语音识别模块连接1.本项目语言识别模块使用了WEGASUN-M6核心板。该模块一款集语音识别、语音合成、语音(MP3)点播、RF(射频)功能、红外功能于一体的多功能模块。目前主要应用在智能家居、对话机器人、车载调度终端、高端智能语音交互玩具、楼宇智能化、教育机器人等方面。主打傻瓜式的简易操作、优越的语音识别和语音合成性能,应用领域十分广泛。2.模块连接方法语音识别模块与Arduino2560接线方法:语音模块TXD---2560RX1语音模块RXD---2560TX1语音模块GND---2560GND语音模块3V3---25603.3V同时,注意语音识别模块的供电。如果发现语音识别模块的3.3V电压从2560的3.3V引脚取电无法进行语音识别或者播放语音,那请将语音识别模块的5V电源输入端接到UNO的VIN引脚端,并且选择外部9V的电源适配器给2560供电,这样就有充足的电流和电压了。实物连接图如图6-28所示。

40图6-28实物连接图

413.程序代码(1)核心板代码@KeyWordBuf01#开机001|关机002|$@KeyWordBuf02#前进003|后退004|$@KeyWordBuf03#快跑005|快退006|$@KeyWordBuf04#左转007|右转008|$@KeyWordBuf05#左走009|右走010|$@KeyWordBuf06#蹲下011|起来012|$@KeyWordBuf07#攻击姿态013|攻击014|$@KeyWordBuf08#警戒015|复位016|$@KeyWordBuf09#睡017|醒018|$@KeyWordBuf10#开启遥控模式019|关闭遥控模式020|$@KeyWordBuf11#开启自由活动021|关闭自由活动022|$@KeyWordBuf12#开启声音模块023|关闭声音模块024|$@KeyWordBuf13#开启感光模式025|关闭感光模式026|$@KeyWordBuf14#开启震动模块027|关闭震动模块028|$@KeyWordBuf15#开启触摸模块029|关闭触摸模块030|$@WriteKeyWordBuf#$@WriteFlashText#|001!|002!|003!|004!|005!|006!|007!|008!|009!|010!|011!|012!|013!|014!|015!|016!|017!|018!|019!|020!|021!|022!|023!|024!|025!|026!|027!|028!|029!|030!|$

42(2)ArduinoMega2560代码voidsk(){intval=Serial2.read();if(-1!=val){if(1==val){//站立Serial.print("G0F1\r

43");}if(2==val){//蹲下Serial.print("G10F1\r

44");}if(3==val){//前进for(inti=0;i<50;i++){Serial.print("G2F1\r

45");delay(500);}}if(4==val){//后退for(inti=0;i<50;i++){Serial.print("G3F1\r

46");delay(500);}}if(5==val){//左转Serial.print("G4F1\r

47");delay(500);}if(6==val){//右转Serial.print("G5F1\r

48");delay(500);}if(7==val){//左走for(inti=0;i<50;i++){Serial.print("G6F1\r

49");delay(2000);}}if(8==val){//右走for(inti=0;i<50;i++){Serial.print("G7F1\r

50");delay(2000);}}}}

516.6步态设计1.步态设计原理六足机器人根据仿生学原理,行走方式采用三角步态。六条腿的昆虫行走时,一般不是六足同时直线前进,是把三对足分成两组,以三角形支架结构,互相交替前行。目前,大部分仿生蜘蛛机器人采用了仿昆虫的结构,六条腿分布在身体的两侧,身体左面的前、后足及右面的中足为一组,右面的前、后足和左面的中足为另一组,分别组成两个三角形支架,靠大腿前后划动来实现支撑以及摆动过程,这就是最典型的三角步态行走方式。主要有身体重心比较低,容易稳定的优点。如下图6-29所示。图6-29三角步态行走方式

522.步态实现六足机器人的行走移动依靠32路舵机控制器实现,该控制器原理图如图6-30所示:图6-30控制器原理图

53

543.控制代码上位机截图如图6-31所示。前进:#5P1700#11P1300#17P1300T300#3P1500#6P1700#9P1500#10P1300#13P1500#16P1300T300#5P1500#11P1500#17P1500T300#2P1700#8P1700#13P1500#14P1300T300#3P1700#6P1500#9P1700#10P1500#13P1300#16P1500T300#1P1500#2P1500#3P1700#4P1500#5P1500#6P1500#7P1500#8P1500#9P1700#10P1500#11P1500#12P1500#13P1300#14P1500#15P1500#16P1500#17P1500#18P1500T300图6-31上位机截图

55后退:#2P1700#8P1700#14P1300T300#3P1300#6P1500#9P1300#10P1500#13P1700#16P1500T300#2P1500#8P1500#14P1500T300#5P1700#11P1300#17P1300T300#3P1500#6P1300#9P1500#10P1700#13P1500#16P1700T300#5P1500#11P1500#17P1500T300左转:#2P1700#8P1700#14P1300T300#6P1300#10P1300#16P1300T300#3P1500#9P1500#13P1500T300#2P1500#8P1500#14P1500T300#5P1700#11P1300#17P1300T300#3P1300#9P1300#13P1300T300#6P1500#10P1500#16P1500T300#5P1500#11P1500#17P1500T300#1P1500#2P1500#3P1500#4P1500#5P1500#6P1500#7P1500#8P1500#9P1500#10P1500#11P1500#12P1500#13P1500#14P1500#15P1500#16P1500#17P1500#18P1500T300右转:#5P1700#11P1300#17P1300T300#3P1700#9P1700#13P1700T300#6P1500#10P1500#16P1500T300#5P1500#11P1500#17P1500T300#2P1700#8P1700#14P1300T300#6P1700#10P1700#16P1700T300#3P1500#9P1500#13P1500T300#2P1500#8P1500#14P1500T300#1P1501#2P1501#3P1501#4P1501#5P1501#6P1501#7P1501#8P1501#9P1501#10P1501#11P1501#12P1501#13P1501#14P1501#15P1501#16P1501#17P1501#18P1501T300

566.7红外控制设计红外接收模块适用于红外线遥控和红外线数据传输。对于不同的遥控器,区别只是接到的数字不同。注意要买三脚的红外接收头,而不是直接购买红外对管。当然也可以买电子积木的红外接收模块,它还多了一块小板和小灯,质量也相对好一些,容易固定,价钱稍贵。因为日光中有红外线,所以在室外使用可能受到影响。

571.连接方法VCC接Arduino3.3V或5.5VGND接ArduinoGND\OUT接Digital11具体连接方式见下图6-32所示。图6-32连接方式

58控制代码------------------------第一部分---------------------#includeintRECV_PIN=11;longCH1=0x00FFA25D;(不同遥控器不同码值)longCH=0x00FF629D;longCH2=0x00FFE21D;longPREV=0x00FF22DD;longNEXT=0x00FF02FD;longPLAY=0x00FFC23D;longVOL1=0x00FFE01F;longVOL2=0x00FFA857;longEQ=0x00FF906F;longa0=0x00FF6897;longa100=0x00FF9867;longa200=0x00FFB04F;longa1=0x00FF30CF;longa2=0x00FF18E7;longa3=0x00FF7A85;longa4=0x00FF10EF;longa5=0x00FF38C7;longa6=0x00FF5AA5;longa7=0x00FF42BD;longa8=0x00FF4AB5;longa9=0x00FF52AD;IRrecvirrecv(RECV_PIN);decode_resultsresults;

59------------------------第二部分---------------------//********红外遥控***********pinMode(RECV_PIN,INPUT);irrecv.enableIRIn();//开始接收方------------------------第三部分---------------------//********红外遥控***********voidyaokon(){if(irrecv.decode(&results)){/////////////////////////////////////////////////////////////if(results.value==a1){//左转Serial.print("G19F4\r

60");delay(9000);Serial.print("G0F1\r

61");}////////////////if(results.value==a2){//前进Serial.print("G2F5\r

62");}//////////////////////if(results.value==a3){//右转Serial.print("G20F4\r

63");delay(9000);Serial.print("G0F1\r

64");}

65///////////////if(results.value==a4){//左走Serial.print("G5F4\r

66");}//////////////////////if(results.value==a5){//站姿Serial.print("G0F1\r

67");}///////////////////////if(results.value==a6){//右走Serial.print("G6F4\r

68");}//////////////////////if(results.value==a7){//Serial.print("G19F8\r

69");Serial.print("G0F1\r

70");}///////////////if(results.value==a8){//后退Serial.print("G3F2\r

71");}//////////////////////if(results.value==a9){//Serial.print("G20F8\r

72");Serial.print("G0F1\r

73");}

74//////////////////////if(results.value==a100){//蹲下Serial.print("G10\r

75");}//////////////////////if(results.value==a200){//起立Serial.print("G11\r

76");}//////////////////////if(results.value==PLAY){//低姿态Serial.print("G12\r

77");}//////////////////////if(results.value==PREV){//低前进Serial.print("G7F1\r

78");Serial.print("G8F2\r

79");}//////////////////////if(results.value==NEXT){//低后退Serial.print("G7F1\r

80");Serial.print("G8F2\r

81");}/////////////////////////////////////////////////////////////////////////////irrecv.resume();//Receivethenextvalue}}

826.8成品实物图1.站立姿态如图6-33所示。图6-33站立姿态

832.移动姿态如图6-34所示。图6-34移动姿态

843.攻击姿态如图6-35所示。图6-35攻击姿态

854.俯视图如图6-36所示。图6-36俯视图

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭