1、六足步行机器人摘要以六足机器人结构套件为基础,搭建移动测控平台,包括设计总体方案和各个模块实现方案,设计和制作伺服电机(即舵机)主控制板和传感器电路板,设计机器人行走方案并编程实现,实现超声波避障。采用细化的八步行走算法来实现行走控制,采用轴向舵机序号确定其他舵机运动方式和次序的方法进行行走方向的控制,这样完成了对18个舵机的控制任务,使得机器人能够比较协调、流畅地行走,并且可以控制其任意的行进方向。主控制板能够基本满足需要,但还需进一步改善其稳定性和可靠性,并增加功能组件如引导程序下载接口以及键盘等交互器件。进一步研究指南针和超声波模块在移动测控平台上有效利用,并开发图像处理及远程信息传输等
2、技术,使六足野外机器人测控平台有更广阔的应用空间。可应用于户外环境参数监测、特殊任务执行、家庭助理等领域。关键词:舵机 msp430单片机 行走算法 超声波传感器AbstractSix feet robot is based on special robotic configuration including 18 servo-electro motors. My task is driving it to move, for I must first design the PCB, weld the PCB when it comes back, connect wires to the P
3、CB and programme. The robot at last moves smoothly, glidingly, in each direction I want it to, of its six. Before programming, arithmetic of eight-step is used to push the robot to go forward in one fixed direction. To make it generalization, I conclude the very arithmetic by which movements of ever
4、y servo-electromotor can be computed if the number of the direction servo-electromotor is given. The next task is that the robot can move in the direction which is judged as the best one after checking the environment by ultrasonic. Having a pair of eyes, the robot can see where the block is and whe
5、re it can march over. The main controlling board is all right but it can be better if more steady and reliable, and if more functional parts is added as keyboards and the interface with Boot Strap Loader. It deserves to do further research at the moving measure-control plat of six feet robot on the
6、use of sensors as ultrasonic, compass modules. It is useful to develop the technologies of image management and remote info-transmission at the plat, too. The measure-control plat of six feet robot is widely used in measuring weather, doing special tasks, and as an assistant in house. Key word: serv
7、o-electromotor msp430 stepped arithmetic ultrasonic sensor绪论搭建六足野外机器人测控平台-这就是本人毕设的工作要求。首先要做的控制18个舵机,使机器人能够按照要求运动。在这个问题的解决上,可以说是完全想象的结果-想象着怎样安排细化动作的步骤,怎样利用摩擦力推动了机器人前进,就这样形成了六足机器人的八步行走算法。让机器人改变轴向从而改变前进方向的推导算法,是有价值的尝试,其结果也是令人欣慰的。当然仅仅运动起来并不能成为一个测控平台,机器人必须具备对环境的感知和适应性。选用了超声波传感器和指南针传感器分别作为感知周边障碍和行进方向的检测器件
8、。麻省理工学院的人工智能实验室的移动机器人小组做着和本人同类型的工作,但是他们的研究方法却和本人的大相径庭。他们对昆虫发生了浓厚的兴趣,他们认为这些弱小的动物群体在复杂而又危险的环境中能够得以生存是一个伟大的奇迹,而昆虫的大脑在世界上却是最小的,然而最小的大脑却让这些小虫子有如此大的能力,以至于让我们认为最先进的机器人都无地自容。他们联合其他的科研工作者提出了基于行为的机器人学。这一学科不但在学术界影响重大,而且被广泛应用于各种领域,包括火星探测。研究方法很大程度上是客观条件所决定的。这些研究人员有足够的时间和财力来尝试验证,而本人的毕业设计时间只有区区两、三月,还要做电路设计、供电设计以及加
9、工绝缘层、支架这样的琐事,而毕业经费也是几百元而已。值得欣慰的是想象力终究绽放出了花朵,机器人前进的姿态竟和海龟游水一样流畅,如果把其中的两条腿当作海龟的头部和尾部。还有一些可贵的设计思想,如用伺服电机带动传感器使传感器电路设计难度及安装难度大大降低。第一章机械结构改装及设计1.1 原机械基础上的改装 机器人机械骨架最初只有结构组件、电机(伺服电机)以及电机引线,硬件电路都是后来加上去的,软件也是自己编写的。机器人骨架做的相当完美,六个方向轴中心对称,钢板质坚而韧,整个机体能承载比较大的重量。仔细检查,发现电机的安装精度不太理想,这势必给系统精度带来很大影响。此时,首先要做的是重新安装腿电机,
10、因为其两端极限位置及中心位置比较容易标定,而臂电机和脚电机就不太容易重新安装。如图1.1所示腿电机的位置。 图1.1 电机命名分类之所以给电机命名分类,主要是方便写行走步骤,详细内容请参考第三章。调整电机的方法是:先卸掉腿电机轴心固定螺钉(见图1.2),然后用十字安装架调整电机轴心角度(见图1.3),可利用直角尺、铅笔等工具保证精度。最后取掉十字安装架、固定好图2.2 中所示螺钉。臂电机和脚电机的安装误差建议由软件来修正。脚电机上的引线比较短,这里进行了加长,用排线增加长度,热缩管连接固定处。图1.4所示的上腿关节,白色塑料柱即为关节处,固定此处的螺钉松紧要合适,如果太松腿就会抖动得厉害,如果
11、太紧,迈腿就会很艰难,迈腿的程度与电机输出量不符。图1.2 调整电机(1)图1.3 调整电机(2)图1.4 上腿关节1.2设计加工的机械部分图1.5 机械加工的部分如上图所示,机械加工的部分有:(1)在钢板的上面加上绝缘隔板可以防止尖尖的焊点划破钢板漆层造成短路;(2)铜柱用来支撑主控板和传感器支架,构成电路主体骨架。(3)传感器支架安装传感器电机,传感器随电机转动180,前后各置一个超声波模块,可以检查到周围360范围情况。如图1.6。图1.6 传感器安装图第二章电路板设计、制作与调试2.1总体设计采用双处理器,双层结构。下面图2.1为其总体结构图。图2.1 六足机器人整体结构设计图下面对设
12、计的主要特点作些说明,更详细的阐述参见以后的章节。(1)主控制板和传感器板分别有独立的控制器(用了MSP430F149),这样的好处是传感器模块化,更容易移植到其他的系统中。使用MSP430F149的初衷是这款单片机有10个捕获/比较寄存器(8个PWM输出),更容易对电机进行控制,并且有两个串行通讯端口,为以后与电脑连接做准备。(2)传感器采用超声波和指南针模块,其中,超声波可以用来蔽障,而指南针采集到的方位数据不仅为机器人行走提供方向和目标信息,还能形成总体模拟闭环控制,对行走的性能,比如直线性有直接的益处。(3)主控制板和传感器板之间使用串行线连接通讯。两根通讯线(一收一发)加上电源线和地
13、线,共四根线。(4)伺服电机驱动采用PPM(脉冲比例调制)控制。控制端口直接由单片机端口引出。(5)电机供电为6V稳压供电,而18个伺服电机启动的瞬间所需电流将近3A,因此使用可以提供大电流的LM2596设计稳压电路。设计既可单电源供电,又可采用双电源。使用18节1300mah镍氢电池,6串3并,达到:电压7.2V,可提供最大23.4W功率输出,并使用稳压电路至6v供给舵机,后使用LM1117-33稳压至3.3v供给控制器;电源处抽头给传感器电路(稳至5v)或者单独给主处理器及传感器电路供电。 2.2主板设计 主控制板在设计之初,就将通用性作为一个重要的目标考虑。六足机器人的主控板不仅可以提供
14、六足的电机控制,还可以成为四足机器人、五自由度机械手的控制主板。MSP430F149定时器的八个PWM输出对于六足机器人来说没有用处,但是对于使用PPM控制口较少的四足机器人(需要八个)和五自由度机械手(需要五个)来说可以直接利用定时器的这种功能,简化编程工作。下面图2.2为主控制器原理图。从图中可以看出设计的一些特点:(1)PWM输出口为: P1口五个P1.0-P1.4;P4口8个P4.0-P4.7;P6口五个P6.3-P6.7;P5口一个P5.0.(2)P5.5有个拨动开关,增强了人机交互性,但是这个设计还可以改善,可以增加更多的拨动开关。(3)P5.4口加了一个LED,可以作为指示信号用
15、。(4)所有I/O口(包括PWM输出口和没有用到的口)都接出来,备预留口。另外下图中没显示的特点有:VCC、VCC_33、GND都引出足够的预留口,以供扩展电路功能用。(5)该开发板也可以作为通用单片机开发板用。图2.2 主控制器接口图 下面看一下主板上供电设计,参考图2.3。(1)电机可以和主板控制器共电源,也可以单独供电,通过J29的通断可以决定。单独供电可以避免处理器受到众多电机形成的躁声干扰,推荐使用。不管采用哪种方式,对电机供电时,稳压到6V比较妥当。这个6V稳压电路没有设计到主控制板上,而是作为一个独立的模块设计出来的,下面将在3.4节详细说明。(2)主处理器和电机有没有上电,可以
16、看发光二极管D1、D3有没有点亮。(3)对噪声的处理,加滤波器件。电源噪声会给电路造成危害,因此在各级电源的两端加10uf电容以滤波(图中C1、C2、C7);电机干扰要避免,在电机电源线间接0.1u的电容可以有效去除(图中C6、C8),并且避免机器人中出现不接地的金属件,否则会充当天线的角色。 图2.3 电源供电设计2.3传感器板设计六足机器人的传感器设计有其独特的地方,主要表现在它的形状为圆形,在设计之初,主要考虑的问题是:(1)用什么传感器比较好? (2)用几个传感器?如何分布?(3)传感器结构是什么样比较合理?针对这几个问题,并考虑到市场情况和经济情况,主要有两种解决方案:方案一:采用以
17、前惯用的光电(红外)传感器,这也是最初想到的方案。有发射管和接收管分开和一体的两种,但发射与接受一体的红外传感器对短距离测量效果佳(25mm左右),不适合俨然庞然大物的六足机器人。采用发射和接收分开的红外传感器。这种传感器比较便宜,红外发射管:0.5元/个(优质1.5元/个);红外接收管:3.5-4.0元/个。但是测量距离仍然比较近,用38khz波调制的方法,距离在40cm内,所以要尽量安装在钢板架边缘的位置,数量至少为6个(只需要顶层水平面上的检测),安装在各小组电机的轴线上,为了提高测量精度,可以增加6个,在每两个相邻小组的中心线上。这么多传感器分开在蛮大面积的边缘,必须至少有6对收发传感
18、器,6个传感器小电路,连线的纷杂可想而知,连线多也会增加电路的不可靠性。方案二:采用超声波测距模块。该模块可以提供从3cm-1.8m精确的距离测量。模块是随机器人机件一起买来,价格较贵(百元左右),而且现存量不多。在不可能“以数量求质量”的情形下,必须另辟蹊径。如果使用电机使其转动角度采集数据,情况会怎样?这个设想很巧妙,以前在做传感器电路的时候没有这样设计过,值得一试。用步进电机还是伺服电机?步进电机可以转过360度角,使用一个超声波模块即可。但是考察一下市场及技术资料,步进电机至少需要12v供电电压,因整体供电设计在7.2-9.6v之间,必须设计升压电路(实际上也试验了这块电路)。已经确定
19、方案中必定存在6v稳压模块,过多的电压转换消耗系统功率,必然造成效率低下。而用伺服电机可以避免这个麻烦,而且其控制可以直接用主控制板上的伺服电机接口,驱动电路不用另外做,所以伺服电机(舵机)是比较理想的选择。 但是绝对位置量输出的舵机只能转动180度,要想测得一周的情况需要2个超声波模块。不用再犹豫,第二个方案值得实现。 图2.4超声波模块有四条引线,分别为:VCC:接5V直流电源。GND:接地。SIG2:触发脉冲。SIG1:计时脉冲。控制方法是:从SIG2输入触发脉冲(高电平的典型值为10us)后,模块自动发射5个40khz的超声波,紧接着模块自动把SIG1置高电平,直到收到回声后才把SIG
20、1置低,如果超时,模块自动复位。通过计算这个SIG1的脉冲宽度就可以很容易计算出和目标的距离。另外传感器设计中用到了指南针模块,目的是通过方位确定达到系统模拟闭环的效果,并且可以为机器人日后完成更复杂的任务做准备。相对于超声波模块控制简单方便,指南针模块似乎更复杂一些。下图3.5为指南针模块的引脚和原理。指南针传感器通过地磁场的方向来确定自身的方向,内部设置两个轴:X轴和Y轴,通过计算X轴和Y轴上的值来计算与地磁场之间的偏角。图2.5 指南针模块引脚和原理由图3.1的总体框图,可知传感器电路作为一个单独的构件,拥有自己的处理器。这样在其供电设计中就需要两路稳压,一路稳至5v给传感器模块,另一路
21、稳压至3.3v给430单片机。如下图所示,传感器电路分为稳压部分、单片机、传感器接口部分、JTAG及串口通讯四个部分。这个设计有两个主要的弊端:(1)指南针模块供电应为5v,而这里给了3.3v。同样指南针模块的高电平应为5v左右,而这里达不到。(2)没有引出备用引脚,单片机资源浪费。图2.6 传感器电路图对于第二个弊端,由图3.6就很容易看出来,而对于第二个弊端,下面详细探讨一下,并找出了解决方案。下面为指南针模块HM55B的技术资料,而开始设计时并没有考虑到这一点。表2.1 指南针模块技术资料解决的办法是:电源改接5V,输入信号三极管升压(下图),输出信号分压进单片机。图2.7 电平转换2.
22、4电机稳压电路设计LM2596-ADJ用来稳压到6V,给伺服电机供电,同时也是给主控板供电。之所以选用这款芯片,主要是因为它能承载较大电流负载(3A),满足18个伺服电机工作的需要。LM2596还有其他型号的片子,可以稳压到3.3V、5V、12V等,而LM2596-ADJ可以通过调节两个电阻的比值来达到电压稳至某值的目的。图2.8 稳压芯片LM2596-ADJ资料图2.9 2596-6V电路实现2596的输出电压Vout=Vref*(1+R2/R1)这里Vref=1.23V,R1=1K,只要将R2调到3.88K,就能使输出电压Vout=6V。需要注意的问题:(1)肖特级管D1的选取,一定要选取
23、承载电流较大的,市场上5825很难买到,可以用5822来代替,一般不要用5819。(2)LM2596-ADJ选用直插封装,而不用贴片,为的是容易散热,并且必须在2596-ADJ后面安装散热片。(3)前置电容C1-470uF,后置电容C2-220uF均用电解电容,额定电压50V以上。(4)电感L1的取值认真参考LM2596用户手册,实验中33uH-68uH表现都不错。一定要买额定电流3A的产品。2.5安装调试过程中的问题及解决问题一:主控制板上的LM1117-33的1-VIN、3-GND引脚颠倒。电源部分应该是焊板子的第一步,在检查出来这部分是否正确的时候,最好不要焊其他元件。而在开始焊上这部分
24、后加电检查时,发现2脚VOUT没有电压输出。然后检查与各个引脚连接的元件,发现1117的1、3引脚放置是反的。解决方案:焊接LM1117-33时字朝下反焊。LM1117输出3.3V电压,正常。问题二:主控制板上JTAG上1-TDO、3-TDI颠倒,下不了程序。主控制板焊好之后连上下载器从电脑上下载简单的实验程序,却下不了。显示信息为找不到可下载器件,分析原因可能是JTAG下载器(也是自己焊的)、连接线或者主板上JTAG接口的问题。对照电路图逐一检查,发现是主控制板上JTAG上1-TDO、3-TDI颠倒。解决方案:将下载线1、3线割开反过来连接。问题三:单片机下载熔丝烧断,不能再下程序。JTAG
25、和下载线都是好的,单片机突然不能下程序了,提示语是熔丝烧断!而且这样的事情竟然在小组内六足机器人和四足机器人的主控制板上均发生了两次,也就是烧掉了四片149!熔丝烧断的149虽然不能下载程序,但是片内的程序还可以让机器人按照设定运动。为什么会烧,至今未找到原因。解决方案:第一次烧掉片子时,将片子用热风吹下来重新焊上新片子。当同样的事第二次发生在四足机器人上时(后来我的第二片也烧了),搭档不敢再吹下片子,因为电路板是在西安本地做的,工艺水平不允许反复吹焊盘。寻找其他的解决方案,得知有一种下载器-Boot Strap Loader,是JTAG不能下载时的弥补方法。搭档立即询问利尔达杭州总部技术人员
26、,并马上到中工电子市场利尔达售货点买回产品。这种下载器使用串口,只要简单地引出几条线接上,软件也很容易掌握。 为什么149那么容易被烧?是149的原因还是主控制板的原因?有人认为是单片机引脚与舵机驱动口直接连接造成大电流回流损伤单片机,建议将单片机引脚与舵机驱动口之间加上一个合适阻值的电阻,以后重新制版时可以考虑。还有单片机选型时可以换其他型号,如MSP430F13X。问题四:该不该将板子直接接触上了绝缘漆的金属?开始连接电机试验时,没有加绝缘层就直接把焊点林立的电路板放到机器人结构件上,这是喷过漆的钢板,放上去之前量了一下导电性,确认了绝缘之后就毫无顾忌地放上去了。直到第一片149烧掉之后,
27、分析可能是尖尖的焊点划破薄薄的绝缘漆引起部分短路造成的。然后就立即找绝缘材料,一行三人冒雨到边家村建材市场找到装潢用的双层塑料板,回到实验室立即锯、磨、钻孔,绝缘隔板出来了,后来铜柱也加上了,不过还是没有阻止第二片149继续毁灭。那么绝缘板加的是不是多余的?笔者认为绝缘板加上绝不是多余,如果没有绝缘板,焊点划破绝缘漆引起短路是很有可能的,防范还是必要的。第三章 行走算法及程序细节3.1编号、建表要把18个电机管理得井井有条并不是简单的事,首先要做的就是给每个电机编个号(取个名字),这样就不用反复查找线的源头,也方便建表及在编程过程中随时查表对照。下图为18个电机编号:图3.1 电机编号由上图,
28、将电机分为6个小组,编号是从0到5,每一小组电机包括实现不同作用的三个电机。根据电机的作用不同,将电机分为下面三种:负责水平面上方向控制的电机:臂电机 有1A、4A、1B、4B、1C、4C;负责上下动作的电机:腿电机 有2A、5A、2B、5B、2C、5C;负责与地面摩擦的电机:脚电机 有3A、6A、3B、6B、3C、6C。 再根据每根线连的具体端口,就得到了下面的表:P4.0-6A-13P4.1-1C-4P4.2-4B-3P4.3-2C-10P4.4-5B-9P4.5-3C-16P4.6-6B-15P4.7-6C-17P1.0-2B-8P1.1-4C-5P1.2-4A-1P1.3-1A-0P1
29、.4-1B-2P6.3-3A-12P6.4-3B-14P6.5-5C-11P6.6-5A-7P6.7-2A-6表3.1 端口-编号对应表3.2行走动作算法及动作细化必须分工合作,3只腿脱离地面运动的时候必须有三只腿支撑地面。这样将6个小组又组合成两大组,相隔的三个为一组。这样编号为0、2、4的为一组,1、3、5为另一组。当将第一组抬起时,第二组必须支撑地面;抬起的第一组臂和脚向前运动;第一组放下接触地面后电机恢复原来的位置,这样就产生了可以推动机器人前进的摩擦力;第一组放下时,第二组抬起来动作。这就是设计动作时最初的想法最初动作简化得到的五步法很粗陋,动作也不协调,但是它对于动作的形成有直接的
30、作用。五步法的步骤为:第一步:抬第一组腿和脚;第二步:放第一组腿,抬第二组腿和脚;第三步:蹬第一组脚;第四步:放第二组腿;第五步:蹬第二组脚。可以看出,这里没有加臂电机的动作,放第一组腿和抬第二组腿在一个动作里,必然造成动作的僵硬。但是这些都没有关系,只要验证这个思路是正确的,机器人能向前挪动,哪怕一点点,就算是成功了。但是结果出来却不尽如人意,机器人只是在原地扭动,丝毫前进不了。为什么呢?仔细看动作和脚的形态,发现了一个似乎幼稚的问题:机器人每组的三只脚与地面之间的摩擦力合力为零!因为其动作关于圆中心对称。这个案例在以后的设计中时刻提醒我:一定要注意细节,每个电机动作的细微之处与其他电机或许
31、是不同的。修改了动作细节之后,按照预想的样子,机器人爬起来了,动作笨拙,但是它的确在前进。接下来要做的就是更加细化动作,使机器人的运动更加协调连贯。这样就形成了八步法,加上了臂电机的运动。下面具体讲一下八步法的实现,结合程序中的一些定义。假设初始状态时电机均处于中心位置。确定一个轴向,比如以第4小组为轴向。以下是八步法的动作具体步骤:第一步:抬第一组腿。2C 前腿上抬至某处- Terminal_UP_2。2B、2A 后腿上抬至某处- Terminal_UP_2。 第二步:抬第一组脚,并旋转第一组臂。3C 前脚上抬至某处- Terminal_UP_3。3B、3A后脚反方向抬至某处- Terminal_DW_3。1B (处于轴向左边)顺时针旋转至某处- Terminal_CLK_1。1A (处于轴向右边)逆时针旋转至某处- Terminal_ATCLK_1。 第三步:放下第一组腿。2C 前腿回到中心
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1