版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章六足仿生机器人项目设计第6章六足仿生机器人项目设计1目录6.1设计思想6.2材料清单6.3机械零件设计6.4组装流程6.5电路设计6.6步态设计6.7红外控制设计6.8成品实物图目录6.1设计思想2
6.1设计思想
六足仿生机器人俗称蜘蛛机器人,因其运动方式有着其他机器人不具有的能力优势流动性良好,能适应各种崎岖路面,且能耗较少,主要用于军事侦察、太空探索、救灾、抢险救灾等方面,还可应用于家庭娱乐、机器人教育等领域,有着较为广阔的应用前景。本项目的仿生蜘蛛机器人主要由控制板,18个舵机(六条腿),稳压器,无线模块和一些数据采集传感器(温度传感器等)组成。本项目的蜘蛛机器人有丰富的扩展接口,后期可根据各种应用领域的需要扩充相应的传感器和功能模块,完全能够胜任视觉定位、自主规划判断路径、多传感器组合扩展等功能,具有语音控制、人机对话等多种功能,应用领域广泛、市场前景良好。
6.1设计思想
六足仿生机器人俗称蜘蛛机器人,因其运动方式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个6.2材料清单材料清单如表6-1所示。材料清单序号元器件名410红外避障C7A4611超声波传感器HC-SR04超声波测距模块112openmvCam
M4-OV77251个13云台支架自行打印1套
14数字舵机MRS-D2009SP1915电池1200mA/7.4v一个16杜邦线30cm公对母一捆10红外避障C7A4611超声波传感器HC-SR04超声波517杜邦线20cm公对母2捆18红外接收器VS1838B通用一体化红外接收头
一个19遥控器ps2无线手柄一个20螺丝M1.6*5144个21螺丝M1.6*2072个22螺丝M3*836个23螺母M312个17杜邦线20cm公对母2捆18红外接收器VS1838B通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技术等控制方式,不影响机器人的其他功能实现。第13项云台支架本项目使用的是自行建模3D打印的零件,主要目86.3机械零件设计机械零件包括机身固定板上下两部分、12个膝关节、12个胫关节、6个踝关节和6个脚步支撑部件组成,这些零件的设计图和装配图都在下文中给出。本项目的机械零件采用SolidWorks建模生成。该软件功能强大,能够胜任大部分的工程制图,最重要的是其操作简单、易学易用,特别适合新手使用。各零件图如下图6-1、6-2、6-3、6-4、6-5、6-6、6-7所示。
图6-1底板零件图6.3机械零件设计机械零件包括机身固定板上下两部分、12个9图6-2踝关节零件图图6-2踝关节零件图10图6-3上板零件图图6-3上板零件图11图6-4膝关节零件图图6-4膝关节零件图12图6-5足零件图图6-5足零件图13图6-6云台零件图图6-6云台零件图14图6-7踝关节零件图图6-7踝关节零件图15本节所提供的零件都是3D建模,自行打印完成的,上述所有模型的尺寸单位都是mm。虽然作者使用的建模软件是SolidWorks,同学们也可以根据自己平时的喜好和习惯选用其他的建模软件操作,只要按照上图所给出的尺寸设计就可以,但是输出文件一定要选择.stl格式的才可以,因为目前市面上常用的桌面级3D打印机和准工业级3D打印机仅支持这种文件格式。
另外,3D打印机原则上是选用精度越高的越好,但是同学们往往接触到的都是入门级别的设备,所以上述零件图各插口没有做的特别细小,一般的打印机都可以完成。上述零件打印的最低要求标准是机器打印精度0.2mm,打印层高0.4mm本节所提供的零件都是3D建模,自行打印完成的,上述所有模型的166.4组装流程6.4.1六足组装步骤一:
把两个膝部关节固定在一起,示意图如图6-8、6-9所示图6-8固定示意图(1)6.4组装流程6.4.1六足组装步骤一:把两个膝部关节17图6-9固定示意图(2)图6-9固定示意图(2)18步骤二:
把膝部舵机和上一步的零件一起固定,固定过程分解图如图6-10、6-11、6-12所示。图6-10固定示意图(1)步骤二:把膝部舵机和上一步的零件一起固定,固定过程分解图如19图6-11固定示意图(2)图6-12固定示意图(1)图6-11固定示意图(2)图6-12固定示意图(1)20步骤三:
将上一步完成的内容与胫部关节连接件固定,示意图如下图6-13、6-14所示。图6-13固定示意图(1)步骤三:将上一步完成的内容与胫部关节连接件固定,示意图如下212.2.3运算符1.赋值运算符赋值语句的作用是把某个常量、变量或表达式的值赋给另一个变量。C
语言中,符号为“=”这里并不是等于的意思,只是赋值,等于用“==”表示。注意:赋值语句左边的变量在程序的其他地方必须声明。2.2.3运算符1.赋值运算符22图6-14固定示意图(2)图6-14固定示意图(2)23步骤四:完成胫部和踝部的连接,连接示意图如图6-15、6-16所示。图6-15连接示意图(1)图6-16连接示意图(2)步骤四:完成胫部和踝部的连接,连接示意图如图6-15、6-124步骤五:将踝部、胫部、膝部所有零件固定,固定示意图如图6-17、6-18所示。图6-17固定示意图(1)图6-18固定示意图(2)步骤六:重复前面五个步骤,完成其他五条腿的组合。步骤五:将踝部、胫部、膝部所有零件固定,固定示意图如图6-1256.4.2身体部分组装步骤一:安装云台,示意图如下6-19、6-20.图6-19安装示意图(1)图6-20安装示意图(2)6.4.2身体部分组装步骤一:安装云台,示意图如下6-1926步骤二:将上板,底板,云台与6只腿拼装起来,拼装示意图如图6-21、6-22、6-23.图6-21拼装示意图(1)图6-22拼装示意图(2)步骤二:将上板,底板,云台与6只腿拼装起来,拼装示意图如图627图6-23拼装示意图(3)组装过程中,如果各别零件因为打印的原因无法按进螺丝或者打印件有抽丝,可以有刻刀将孔洞适当的钻一下,但是一定要注意力度,不要将孔钻的过大。上螺丝的时候不易将螺丝拧的过紧,因为PLA素材相对较脆,打印机崩的太紧极易造成碎裂。此外,机身上板不要提早上螺丝,要按系统硬件连接图将主控板和传感器固定后再安装机身上盖。机身整体布线要尽量简洁工整,不要让舵机线裸露在外面。尽量将所有传感器调试好后,确定布线没问题了再固定,避免重复工作。图6-23拼装示意图(3)组装过程中,如果各别零件因为打印286.5电路设计
6.5.1机器人硬件系统框图
如下图6-24所示,通过机器人模式的选择,语音控制模块、是视觉模块或者其他传感器将采集到的数据传输给主控板ArduinoMega2560,主控板将收到的数据进行处理编译,并将执行命令传输给舵机控制器,舵机控制器根据主控板发送的命令进行操作,驱动相对应的舵机完成指定命令,最终实现对六足机器人的控制。图6-24系统框架图6.5电路设计
6.5.1机器人硬件系统框图
如下图296.5.2主板连接1.ArduinoMega2560原理图
原理图如图6-25所示。
图6-25ArduinoMega2560原理图
本系统之所以使用ArduinoMEGA2560作为控制板是因为2560具有较高的性价比,具有14路数字输入输出口,4路串口信号,6路外部中断,14路脉冲宽度调制,具有丰富的扩展功能。实际上本设计的基本功能,ArduinoLeonardo也能够实现,但是从后期开发和扩展等方面原因考虑,选择2560无疑为本项目提供了不断升级的可能。6.5.2主板连接1.ArduinoMega2560原302.系统硬件连接
图6-26系统硬件连接图图6-26是系统的主要部件连接图,Arduino在这里起到了一个中间协调的作用,视觉模块将采集的信息传输给2560,2560接收到信息并进行处理后发出指令到舵机控制器,舵机控制器转出相应的命令对舵机进行控制。同理其他的传感器也是这个工作原理。2.系统硬件连接图6-26系统硬件连接图图6-26是系统的316.5.3视觉模块连接1.视觉模块本项目采用了OPENMV视觉模块。Openmv搭载MicroPython解释器,允许用户在嵌入式上使用Python来编程.Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。使用python遍历每一个色块,就可以获取它们所有信息。并且,用户可以使用OpenMV专用的IDE,它有自动提示,代码高亮,而且有一个图像窗口可以直接看到摄像头的图像,有终端可以debug,还有一个包含图像信息的直方图。OpenMV摄像头使用标准M12镜头,以更换不同焦距的镜头。而且,OpenMV采用可叠加的设计,方便用户添加各种各样的shield。6.5.3视觉模块连接1.视觉模块本项目采用了OPENMV322.openmv与Arduino的通信OPENMV与Arduinomega2560连接通信方法如表6-1和图6-27所示。表6-1对应引脚关系图图6-27硬件连接示意图2.openmv与Arduino的通信表6-1对应引脚关系图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=0
c=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'elifa<width/3:c='1'elifa>width/3*2:c='3'else:c='4'uart.write(c)print(c)time.sleep(800)3.程序代码OPENMV上的代码(python)34ArduinoMega2560上的代码
void
sj()
{
intshijue=
Serial1.read();//读取串口接收到的值
if
(-1
!=
shijue)//(没接收到数据时是等于-1的,Arduino串口基础,不多说。)
{if
(1
==
shijue)
{//前进
Serial.print("G4F1\r\n");
delay(100);
}
if
(2
==
shijue)
{//向左转60度
Serial.print("G2F1\r\n");
delay(100);
}
if
(3
==
shijue)
{//向右转60度
Serial.print("G5F1\r\n");
delay(100);
}
if
(4
==
shijue)
{//向后转
Serial.print("G5F3\r\n");
delay(100);
}}}ArduinoMega2560上的代码356.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所示。6.5.4语音识别模块连接1.本项目语言识别模块使用了WE36图6-28实物连接图图6-28实物连接图373.程序代码(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!|$3.程序代码38(2)ArduinoMega2560代码voidsk(){intval=Serial2.read();if(-1!=val){if(1==val){//站立Serial.print("G0F1\r\n");}if(2==val){//蹲下Serial.print("G10F1\r\n");}if(3==val){//前进for(inti=0;i<50;i++){Serial.print("G2F1\r\n");delay(500);}}if(4==val){//后退for(inti=0;i<50;i++){Serial.print("G3F1\r\n");delay(500);}}if(5==val){//左转Serial.print("G4F1\r\n");delay(500);}if(6==val){//右转Serial.print("G5F1\r\n");delay(500);}if(7==val){//左走for(inti=0;i<50;i++){Serial.print("G6F1\r\n");delay(2000);}}if(8==val){//右走for(inti=0;i<50;i++){Serial.print("G7F1\r\n");delay(2000);}}}}(2)ArduinoMega2560代码396.6步态设计1.步态设计原理
六足机器人根据仿生学原理,行走方式采用三角步态。六条腿的昆虫行走时,一般不是六足同时直线前进,是把三对足分成两组,以三角形支架结构,互相交替前行。目前,大部分仿生蜘蛛机器人采用了仿昆虫的结构,六条腿分布在身体的两侧,身体左面的前、后足及右面的中足为一组,右面的前、后足和左面的中足为另一组,分别组成两个三角形支架,靠大腿前后划动来实现支撑以及摆动过程,这就是最典型的三角步态行走方式。主要有身体重心比较低,容易稳定的优点。如下图6-29所示。图6-29三角步态行走方式6.6步态设计1.步态设计原理图6-29三角步态行走方式402.步态实现
六足机器人的行走移动依靠32路舵机控制器实现,该控制器原理图如图6-30所示:图6-30控制器原理图2.步态实现图6-30控制器原理图41第6章-六足仿生机器人项目设计课件423.控制代码上位机截图如图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上位机截图3.控制代码前进:图6-31上位机截图43后退:#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后退:446.7红外控制设计红外接收模块适用于红外线遥控和红外线数据传输。对于不同的遥控器,区别只是接到的数字不同。注意要买三脚的红外接收头,而不是直接购买红外对管。当然也可以买电子积木的红外接收模块,它还多了一块小板和小灯,质量也相对好一些,容易固定,价钱稍贵。因为日光中有红外线,所以在室外使用可能受到影响。6.7红外控制设计红外接收模块适用于红外线遥控和红外线数据传451.连接方法VCC接Arduino3.3V或5.5VGND接ArduinoGND\OUT接Digital11具体连接方式见下图6-32所示。图6-32连接方式1.连接方法图6-32连接方式46控制代码------------------------第一部分---------------------#include<IRremote.h>intRECV_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;IRrecv
irrecv(RECV_PIN);decode_resultsresults;控制代码47------------------------第二部分---------------------//********红外遥控***********pinMode(RECV_PIN,INPUT);irrecv.enableIRIn();//开始接收方------------------------第三部分---------------------//********红外遥控***********voidyaokon(){if(irrecv.decode(&results)){/////////////////////////////////////////////////////////////if(results.value==a1){//左转Serial.print("G19F4\r\n");delay(9000);Serial.print("G0F1\r\n");}////////////////if(results.value==a2){//前进Serial.print("G2F5\r\n");}//////////////////////if(results.value==a3){//右转Serial.print("G20F4\r\n");delay(9000);Serial.print("G0F1\r\n");}------------------------第二部分--48///////////////if(results.value==a4){//左走Serial.print("G5F4\r\n");}//////////////////////if(results.value==a5){//站姿Serial.print("G0F1\r\n");}///////////////////////if(results.value==a6){//右走Serial.print("G6F4\r\n");}//////////////////////if(results.value==a7){//Serial.print("G19F8\r\n");Serial.print("G0F1\r\n");}///////////////if(results.value==a8){//后退Serial.print("G3F2\r\n");}//////////////////////if(results.value==a9){//Serial.print("G20F8\r\n");Serial.print("G0F1\r\n");}///////////////49//////////////////////if(results.value==a100){//蹲下
Serial.print("G10\r\n");}//////////////////////if(results.value==a200){//起立
Serial.print("G11\r\n");}
//////////////////////if(results.value==PLAY){//低姿态
Serial.print("G12\r\n");}//////////////////////if(results.value==PREV){//低前进
Serial.print("G7F1\r\n");Serial.print("G8F2\r\n");}//////////////////////if(results.value==NEXT){//低后退
Serial.print("G7F1\r\n");Serial.print("G8F2\r\n");}///////////////////////////////////////////////////////////
//////////////////irrecv.resume();//Receivethenextvalue}}//////////////////////506.8成品实物图1.站立姿态如图6-33所示。图6-33站立姿态6.8成品实物图1.站立姿态图6-33站立姿态512.移动姿态如图6-34所示。图6-34移动姿态2.移动姿态图6-34移动姿态523.攻击姿态如图6-35所示。图6-35攻击姿态3.攻击姿态图6-35攻击姿态534.俯视图如图6-36所示。图6-36俯视图4.俯视图图6-36俯视图54第6章六足仿生机器人项目设计第6章六足仿生机器人项目设计55目录6.1设计思想6.2材料清单6.3机械零件设计6.4组装流程6.5电路设计6.6步态设计6.7红外控制设计6.8成品实物图目录6.1设计思想56
6.1设计思想
六足仿生机器人俗称蜘蛛机器人,因其运动方式有着其他机器人不具有的能力优势流动性良好,能适应各种崎岖路面,且能耗较少,主要用于军事侦察、太空探索、救灾、抢险救灾等方面,还可应用于家庭娱乐、机器人教育等领域,有着较为广阔的应用前景。本项目的仿生蜘蛛机器人主要由控制板,18个舵机(六条腿),稳压器,无线模块和一些数据采集传感器(温度传感器等)组成。本项目的蜘蛛机器人有丰富的扩展接口,后期可根据各种应用领域的需要扩充相应的传感器和功能模块,完全能够胜任视觉定位、自主规划判断路径、多传感器组合扩展等功能,具有语音控制、人机对话等多种功能,应用领域广泛、市场前景良好。
6.1设计思想
六足仿生机器人俗称蜘蛛机器人,因其运动方式576.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个6.2材料清单材料清单如表6-1所示。材料清单序号元器件名5810红外避障C7A4611超声波传感器HC-SR04超声波测距模块112openmvCam
M4-OV77251个13云台支架自行打印1套
14数字舵机MRS-D2009SP1915电池1200mA/7.4v一个16杜邦线30cm公对母一捆10红外避障C7A4611超声波传感器HC-SR04超声波5917杜邦线20cm公对母2捆18红外接收器VS1838B通用一体化红外接收头
一个19遥控器ps2无线手柄一个20螺丝M1.6*5144个21螺丝M1.6*2072个22螺丝M3*836个23螺母M312个17杜邦线20cm公对母2捆18红外接收器VS1838B通60上述清单中的材料中有几处需要特别注意:1.第8项舵机控制器之所以选用了32路是为了日后扩展其他功能所预留的通道,如果没有其他特殊需求,实际上24路舵机控制器就可以满足需要,本项目至少需要使用12路以上舵机控制器,各位同学制作的时候可以根据自己的实际需求选定。此外,六足仿生机器人和四足仿生机器人、八足仿生机器人的控制原理基本相同,舵机控制调用方式相同,传感器连接设计方法相同,这些内容后面会陆续介绍,唯一不同的是步态姿势不同。各位有兴趣的同学可以在本项目设计完成之后,自行设计其他足数的仿生机器人。2.第9项是本项目的语音识别、对话功能实现的模块。之所以选择这个型号是因为其内置了较大的存储空间,用户可以自行定义2000句的对话。可以实现人和机器人的对话交流,也能实现用户对机器人的语音控制功能。该语音模块有三个版本,分别是核心板、升级版和完全版。核心板的价钱相对较低,本项目建议使用该版本。如果有同学想额外增加语音方面的功能和有这方面需求,可以选择后面两个版本。3.第12项OPENMV模块是本项目的视觉模块,因其与Arduino兼容性较好,功能调用较为容易而选用。本模块用两个版本,分别为M4和M7。M4版本固件版本较低,芯片处理速度低于M7,但是其价格便宜,实现的功能基本相同,没有特别需求的同学可以选择M4版本。上述清单中的材料中有几处需要特别注意:61第13项云台支架本项目使用的是自行建模3D打印的零件,主要目的是降低开发成本。如果有同学想要性能更好的云台或者完成某些测绘、监控任务的需求,可自行选装市面上的各种二轴、三轴无刷云台,提高性能的同时不影响本项目机器人的其他功能实现。第14项中的数字舵机,各位同学也可以根据实际需求选择市面上的数字舵机,根据需要可以选用180度或者270度的数字舵机。舵机的扭矩规格可以根据实际情况选用15KG-20kg之间。但是不建议同学们选用模拟舵机,因为模拟舵机需要不断的接受舵机控制器发送的PWM信号才能保持锁定角度,完成相应的操作,并且精度较差,线性度很难达标。而数字舵机仅需接受一次舵机控制器传递的PWM信号就可以锁定角度不变,控制精度较高、线性度良好、相应速度快,能够完成本项目的各项功能需要。特别值得注意的是,并不是舵机的转动角度越大越好,同学们不要选用360度舵机,因为目前市面的无死角舵机绝大部分无法接受PWM信号控制,不能锁定角度不变,一经上电会不停旋转。6.第18项和第19项的红外接收模块和红外手柄(遥控器)是配套使用的。因成本低廉,本项目选用了红外控制方式。但是同学们需要注意的是,红外接收控制有较多的限制,控制距离较近,不能有明显的遮挡物,并且在电子设备较多的复杂情况容易造成信号丢失,从而导致对机器人失去控制。有条件的同学可以根据本书前几章的内容,选用蓝牙、WiFi、2.4G技术等控制方式,不影响机器人的其他功能实现。第13项云台支架本项目使用的是自行建模3D打印的零件,主要目626.3机械零件设计机械零件包括机身固定板上下两部分、12个膝关节、12个胫关节、6个踝关节和6个脚步支撑部件组成,这些零件的设计图和装配图都在下文中给出。本项目的机械零件采用SolidWorks建模生成。该软件功能强大,能够胜任大部分的工程制图,最重要的是其操作简单、易学易用,特别适合新手使用。各零件图如下图6-1、6-2、6-3、6-4、6-5、6-6、6-7所示。
图6-1底板零件图6.3机械零件设计机械零件包括机身固定板上下两部分、12个63图6-2踝关节零件图图6-2踝关节零件图64图6-3上板零件图图6-3上板零件图65图6-4膝关节零件图图6-4膝关节零件图66图6-5足零件图图6-5足零件图67图6-6云台零件图图6-6云台零件图68图6-7踝关节零件图图6-7踝关节零件图69本节所提供的零件都是3D建模,自行打印完成的,上述所有模型的尺寸单位都是mm。虽然作者使用的建模软件是SolidWorks,同学们也可以根据自己平时的喜好和习惯选用其他的建模软件操作,只要按照上图所给出的尺寸设计就可以,但是输出文件一定要选择.stl格式的才可以,因为目前市面上常用的桌面级3D打印机和准工业级3D打印机仅支持这种文件格式。
另外,3D打印机原则上是选用精度越高的越好,但是同学们往往接触到的都是入门级别的设备,所以上述零件图各插口没有做的特别细小,一般的打印机都可以完成。上述零件打印的最低要求标准是机器打印精度0.2mm,打印层高0.4mm本节所提供的零件都是3D建模,自行打印完成的,上述所有模型的706.4组装流程6.4.1六足组装步骤一:
把两个膝部关节固定在一起,示意图如图6-8、6-9所示图6-8固定示意图(1)6.4组装流程6.4.1六足组装步骤一:把两个膝部关节71图6-9固定示意图(2)图6-9固定示意图(2)72步骤二:
把膝部舵机和上一步的零件一起固定,固定过程分解图如图6-10、6-11、6-12所示。图6-10固定示意图(1)步骤二:把膝部舵机和上一步的零件一起固定,固定过程分解图如73图6-11固定示意图(2)图6-12固定示意图(1)图6-11固定示意图(2)图6-12固定示意图(1)74步骤三:
将上一步完成的内容与胫部关节连接件固定,示意图如下图6-13、6-14所示。图6-13固定示意图(1)步骤三:将上一步完成的内容与胫部关节连接件固定,示意图如下752.2.3运算符1.赋值运算符赋值语句的作用是把某个常量、变量或表达式的值赋给另一个变量。C
语言中,符号为“=”这里并不是等于的意思,只是赋值,等于用“==”表示。注意:赋值语句左边的变量在程序的其他地方必须声明。2.2.3运算符1.赋值运算符76图6-14固定示意图(2)图6-14固定示意图(2)77步骤四:完成胫部和踝部的连接,连接示意图如图6-15、6-16所示。图6-15连接示意图(1)图6-16连接示意图(2)步骤四:完成胫部和踝部的连接,连接示意图如图6-15、6-178步骤五:将踝部、胫部、膝部所有零件固定,固定示意图如图6-17、6-18所示。图6-17固定示意图(1)图6-18固定示意图(2)步骤六:重复前面五个步骤,完成其他五条腿的组合。步骤五:将踝部、胫部、膝部所有零件固定,固定示意图如图6-1796.4.2身体部分组装步骤一:安装云台,示意图如下6-19、6-20.图6-19安装示意图(1)图6-20安装示意图(2)6.4.2身体部分组装步骤一:安装云台,示意图如下6-1980步骤二:将上板,底板,云台与6只腿拼装起来,拼装示意图如图6-21、6-22、6-23.图6-21拼装示意图(1)图6-22拼装示意图(2)步骤二:将上板,底板,云台与6只腿拼装起来,拼装示意图如图681图6-23拼装示意图(3)组装过程中,如果各别零件因为打印的原因无法按进螺丝或者打印件有抽丝,可以有刻刀将孔洞适当的钻一下,但是一定要注意力度,不要将孔钻的过大。上螺丝的时候不易将螺丝拧的过紧,因为PLA素材相对较脆,打印机崩的太紧极易造成碎裂。此外,机身上板不要提早上螺丝,要按系统硬件连接图将主控板和传感器固定后再安装机身上盖。机身整体布线要尽量简洁工整,不要让舵机线裸露在外面。尽量将所有传感器调试好后,确定布线没问题了再固定,避免重复工作。图6-23拼装示意图(3)组装过程中,如果各别零件因为打印826.5电路设计
6.5.1机器人硬件系统框图
如下图6-24所示,通过机器人模式的选择,语音控制模块、是视觉模块或者其他传感器将采集到的数据传输给主控板ArduinoMega2560,主控板将收到的数据进行处理编译,并将执行命令传输给舵机控制器,舵机控制器根据主控板发送的命令进行操作,驱动相对应的舵机完成指定命令,最终实现对六足机器人的控制。图6-24系统框架图6.5电路设计
6.5.1机器人硬件系统框图
如下图836.5.2主板连接1.ArduinoMega2560原理图
原理图如图6-25所示。
图6-25ArduinoMega2560原理图
本系统之所以使用ArduinoMEGA2560作为控制板是因为2560具有较高的性价比,具有14路数字输入输出口,4路串口信号,6路外部中断,14路脉冲宽度调制,具有丰富的扩展功能。实际上本设计的基本功能,ArduinoLeonardo也能够实现,但是从后期开发和扩展等方面原因考虑,选择2560无疑为本项目提供了不断升级的可能。6.5.2主板连接1.ArduinoMega2560原842.系统硬件连接
图6-26系统硬件连接图图6-26是系统的主要部件连接图,Arduino在这里起到了一个中间协调的作用,视觉模块将采集的信息传输给2560,2560接收到信息并进行处理后发出指令到舵机控制器,舵机控制器转出相应的命令对舵机进行控制。同理其他的传感器也是这个工作原理。2.系统硬件连接图6-26系统硬件连接图图6-26是系统的856.5.3视觉模块连接1.视觉模块本项目采用了OPENMV视觉模块。Openmv搭载MicroPython解释器,允许用户在嵌入式上使用Python来编程.Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。使用python遍历每一个色块,就可以获取它们所有信息。并且,用户可以使用OpenMV专用的IDE,它有自动提示,代码高亮,而且有一个图像窗口可以直接看到摄像头的图像,有终端可以debug,还有一个包含图像信息的直方图。OpenMV摄像头使用标准M12镜头,以更换不同焦距的镜头。而且,OpenMV采用可叠加的设计,方便用户添加各种各样的shield。6.5.3视觉模块连接1.视觉模块本项目采用了OPENMV862.openmv与Arduino的通信OPENMV与Arduinomega2560连接通信方法如表6-1和图6-27所示。表6-1对应引脚关系图图6-27硬件连接示意图2.openmv与Arduino的通信表6-1对应引脚关系图873.程序代码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=0
c=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'elifa<width/3:c='1'elifa>width/3*2:c='3'else:c='4'uart.write(c)print(c)time.sleep(800)3.程序代码OPENMV上的代码(python)88ArduinoMega2560上的代码
void
sj()
{
intshijue=
Serial1.read();//读取串口接收到的值
if
(-1
!=
shijue)//(没接收到数据时是等于-1的,Arduino串口基础,不多说。)
{if
(1
==
shijue)
{//前进
Serial.print("G4F1\r\n");
delay(100);
}
if
(2
==
shijue)
{//向左转60度
Serial.print("G2F1\r\n");
delay(100);
}
if
(3
==
shijue)
{//向右转60度
Serial.print("G5F1\r\n");
delay(100);
}
if
(4
==
shijue)
{//向后转
Serial.print("G5F3\r\n");
delay(100);
}}}ArduinoMega2560上的代码896.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所示。6.5.4语音识别模块连接1.本项目语言识别模块使用了WE90图6-28实物连接图图6-28实物连接图913.程序代码(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!|$3.程序代码92(2)ArduinoMega2560代码voidsk(){intval=Serial2.read();if(-1!=val){if(1==val){//站立Serial.print("G0F1\r\n");}if(2==val){//蹲下Serial.print("G10F1\r\n");}if(3==val){//前进for(inti=0;i<50;i++){Serial.print("G2F1\r\n");delay(500);}}if(4==val){//后退for(inti=0;i<50;i++){Serial.print("G3F1\r\n");delay(500);}}if(5==val){//左转Serial.print("G4F1\r\n");delay(500);}if(6==val){//右转Serial.print("G5F1\r\n");delay(500);}if(7==val){//左走for(inti=0;i<50;i++){Serial.print("G6F1\r\n");delay(2000);}}if(8==val){//右走for(inti=0;i<50;i++){Serial.print("G7F1\r\n");delay(2000);}}}}(2)ArduinoMega2560代码936.6步态设计1.步态设计原理
六足机器人根据仿生学原理,行走方式采用三角步态。六条腿的昆虫行走时,一般不是六足同时直线前进,是把三对足分成两组,以三角形支架结构,互相交替前行。目前,大部分仿生蜘蛛机器人采用了仿昆虫的结构,六条腿分布在身体的两侧,身体左面的前、后足及右面的中足为一组,右面的前、后足和左面的中足为另一组,分别组成两个三角形支架,靠大腿前后划动来实现支撑以及摆动过程,这就是最典型的三角步态行走方式。主要有身体重心比较低,容易稳定的优点。如下图6-29所示。图6-29三角步态行走方式6.6步态设计1.步态设计原理图6-29三角步态行走方式942.步态实现
六足机器人的行走移动依靠32路舵机控制器实现,该控制器原理图如图6-30所示:图6-30控制器原理图2.步态实现图6-30控制器原理图95第6章-六足仿生机器人项目设计课件963.控制代码上位机截图如图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上位机截图3.控制代码前进:图6-31上位机截图97后退:#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后退:986.7红外控制设计红外接收模块适用于红外线遥控和红外线数据传输。对于不同的遥控器,区别只是接到的数字不同。注意要买三脚的红外接收头,而不是直接购买红外对管。当然也可以买电子积木的红外接收模块,它还多了一块小板和小灯,质量也相对好一些,容易固定,价钱稍贵。因为日光中有红外线,所以在室外使用可能受到影响。6.7红外控制设计红外接收模块适用于红外线遥控和红外线数据传991.连接方法VCC接Arduino3.3V或5.5VGND接ArduinoGND\OUT接Digital11具体连接方式见下图6-32所示。图6-32连接方式1.连接方法图6-32连接方式100控制代码------------------------第一部分---------------------#include<IRremote.h>intR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省杭州市四校2025-2026学年初三下学期一练前第二次强化训练英语试题含解析
- 山东东营市2026年初三英语试题模拟考试(江门一模)英语试题试卷与评分参考含解析
- 山西省(晋城地区)2026年初三下学期1月第一次联合考试英语试题含解析
- 西双版纳市重点中学2025-2026学年初三物理试题下学期第二次模拟考试试题含解析
- 2025 高中文言文阅读理解之特殊称谓辨析课件
- 2026年自动化仓储市场中的竞争对手分析
- 2026年自动化仓储服务中的人性化设计
- 2026年全民环保的宣传与实践路径
- 骨折患者的康复训练方案
- 2026广西柳州融水苗族自治县人民法院招聘书记员2人备考题库及参考答案详解【典型题】
- 2026年护士资格考试统考历年真题及答案
- 2026江苏南京市雨花台区征收拆迁安置办公室招聘编外人员3人笔试参考题库及答案解析
- 内部财务交叉检查制度
- OpenClaw:AI从聊天到行动 下一代智能助手白皮书
- 电梯维保2026年复工培训
- 中国整形美容外科诊疗指南(2025版)
- GB/T 28474.2-2012工业过程测量和控制系统用压力/差压变送器第2部分:性能评定方法
- GB/T 19362.2-2017龙门铣床检验条件精度检验第2部分:龙门移动式铣床
- FZ/T 07008-2020定形机热平衡测试与计算方法
- 精细化工过程与设备 第四章 塔式反应器
- 安全文明施工措施费专款专用的方案
评论
0/150
提交评论