机器人实训报告docbrua.docx
一、 机器人擂台赛1、实训目的 机器人擂台赛的目的在于促进智能机器人技术(尤其是自主识别、自主决策技术)的普及。参赛队需要在规则范围内以各自组装或者自制的自主机器人互相搏击,并争取在比赛中获胜,以对抗性竞技的形式来推动相关机器人技术在大学生、青少年中的普及与发展。可以用自己设计的机器人来参加擂台赛,同时掌握这个环节所展现出来的机器人技术。 机器人擂台赛未来的发展目标是:比赛中,两个使用双腿自主行走的仿人形机器人互相搏击并将对方打倒或者打下擂台。 2、实训要求 在指定的大小擂台上有双方机器人。 双方机器人模拟中国古代擂台搏击的规则,互相击打或者推挤。如果一方机器人整体离开擂台区域或者不能再继续行动,则另一方获胜。机器人大小要求长、宽、高分别不能超过30cm、30cm、40cm 。 比赛场地大小为长、宽分别为是 2400 mm的台,台上表面即为擂台场地。有黑色的胶布围成。 比赛开始后, 围栏内区域不得有任何障碍物或人。 3、比赛规则分析 我们需要吃透比赛规则,然后才能在比赛规则允许的范围内,尽量让我们的机器人具有 别人不具有的优势。对上述的比赛规则分析得到以下几个重点: 3、1需要确保自己不掉下擂台需要有传感器进行擂台边沿的检测,当发现机器人已经靠近边沿立刻转弯或者掉头。擂 台和地面存在比较大的高度差,我们通过测距传感器很容易发现这个高度落差,从而判断出 擂台的边沿。如图 6.2 所示,在机器人上安装一个测距传感器,斜向下测量地面和机器人的 距离,机器人到达擂台边沿时,传感器的测量值会突然间变得很大。由于红外测距传感器使 用方便,并且“创意之星”控制器可以接入最多 8 个红外测距传感器,我们可以将它作为首选方案。 擂台地面时有灰度变化的,我们可以在机器人腹部安装一些灰度传感器,来判读机器人 覆盖区域的灰度变化,从而判读机器人相对场地的方向。可以通过整体灰度值来判读机器人 的位置是不是靠近边沿,如果机器人靠近边沿就转弯后者后退。 3、2需要及时的发现敌方这里我们使用红外接近开关作为寻找敌方的方案并不算优秀,红外接近开关的有效测量范围是 20cm,20cm 之外的物体是察觉不到的。我们可以改成红外测距传感器,它的有效测量范围是 1080cm,比较适合我们当前的使用场合。 3、3需要迅速的推动敌方,将敌方退下擂台我们可以想象,两只斗牛相互推挤,赢的一定是力气比较大的一方。 我们需要先考虑,什么因素会影响小车的推力。在现实生活中我们会看到两种现象:1、 一辆汽车在爬坡,但是动力不足,反而慢慢从坡上滑了下来。2、汽车在泥地上面行走,但 走不快,因为轮子总是在打滑。 上面两个例子可以得到影响汽车行进效果的因素:1、动力不足。2、摩擦力不够。如果动力不足,我们小车可能会被敌方的小车推得轮子倒着转。如果摩擦力不够,小车在推挤的时候轮子会打滑,轮子一直在转,但小车就是不能往前走。 推动敌方和推动棋子要做的事情是一样的,即:寻找敌方推动敌方自身定位。不同 的是,推动敌方需要更大的动力,而且自身定位更加重要。如果己方被敌方推动时,己方就必须能够及时摆脱或者进行抵抗。 所以,在比赛规则允许的条件下,尽量增加小车的重量、动力输出、轮子的接地面积。我们可以使用四轮驱动方案,2 轮驱动方案重量和推力都不够。6 轮驱动方案不好转弯,机器人不够灵活。 3、4需要避免自己被敌方推下擂台 如果我方机器人在前进的时候被敌方从后面推挤,并且我方的机器人没有察觉,会出现什么情况呢? 我方机器人的动力方向和敌方机器人的动力方向刚好一致,敌方不费吹灰之力就可以将我方机器人推下擂台。所以我们需要能够察觉这在被推挤的状态,并且能够通过掉头、转弯、后退等手段避开机器人的推挤。4、任务规划 1、熟悉本比赛构型所需要部件的使用方式。比如灰度传感器、红外测距传感器等。 2、搭建机器人、布置传感器。需要在规则允许的条件下搭建机器人,通过上述的分析, 我们将机器人的构型定义为一个四轮驱动的小车。机器人的腹部应该安装灰度传感器阵列, 用于判读场地灰度变化。前方应该安装红外测距传感器,用于判读棋子、敌方机器人和擂台 边沿。 3、用软件写程序 4、模拟比赛练习。 5、熟悉场地、标定传感器 场地最重要的部分是擂台上黑白渐变的区域,这是比赛得以进行的关键。简单的说,机 器人要想赢得比赛,就得在这块区域里行动自如,随心所欲。如何做到“行动自如,随心所 欲”呢?机器人必须能随时确定自己所处的位置。要想确定自己的位置,机器人就必须有雪 亮的眼睛。在擂台赛中,机器人的眼睛就是灰度和测距传感器。 6、 标定灰度传感器 我们在构型搭建的时候会用到灰度传感器和红外测距传感器。您如果对这两个传感器工作原理还不清楚的话,请重新学习第二章的相关部分。受制造工艺、材料的限制,很难保证两个传感器有完全一致的性能。在实际使用过程中会发现,即使以同样的标准使用两个不同的灰度传感器测量灰度,得到的数据也会有一定的差值。为了消除这种差异性,需要对传感器进行标定。就像一个两眼视力不一样的人,需要佩戴两个镜片度数不一样的眼镜一样。我们这里的标定,目的是建立灰度传感器的值和场地区域的对照表,以方便后续编写控制程序时使用。我们的构型上使用4 个灰度传感器进行场地灰度测量,感器采集到的灰度值是不一样的,我们对比这几个传感器的值就能够知道当前机器人的方向。场地的灰度是梯度变化的,为了让这几个传感器的值有尽量大的差值,传感器的布置应该尽量拉开距离,传感器菱形覆盖的面积应该尽量大。灰度传感器的标定需要同时标定一组即将使用的传感器即同时标定构型中的四个灰度传感器。此时可以先搭建一个简易的机器人底盘,固定好传感器。 灰度传感器的标定可以采用三种方法:平行边沿标定,灰度梯度方向标定,随机位置标定。 平行边沿标定方法如下: 1) 按 300mm 等分场地边沿(如图 6.7,图中白色方块表示机器人放置位置),然后从 一边开始,依次将机器人放置(和边缘平行)在等分点上,用 NorthSTAR 查询灰度传感器的值并做相应记录; 2) 将机器人掉头后,从另一边开始,依次在每个等分点上查询灰度值并记录。 随机标定法:将机器人以非规则的方式(和边沿不平行,没有正好面向中心)放置在场 地的不同位置,采集几组灰度值,记录并观察四个灰度传感器的值和机器人的位置关系。 记录数据后,计算机器人处在据中心不同距离处的灰度均值,传感器的最大最小值,前 后灰度之间的差值,障碍物和机器人之间距离与传感器值之间的关系等数据,以备程序设计时使用。表一、表二为一组场地实测数据。灰度数值受灰度传感器的一致性,安装位置和环 境光的影响较大,表中数据仅供参考。 7、 标定红外测距传感器 红外测距传感器数值和实际距离不是简单的线性关系,GP2D12 在 10cm 位置输出值最大,10cm 以下的距离是传感器的盲区,不建议使用。10cm20cm 之间是最灵敏的区域,所以,我们需要保证构型中的GP2D12 和地板的距离保持在 10cm15cm 之间。在这个比赛平台上,我们只需要判断机器人是不是到达边缘即可。比赛构型搭建完成、传感器安装位置确定后,将机器人放置于擂台的不同位置,读取 GP2D12 的AD 值,将这些 AD 值取平均值。将机器人移至擂台边缘,当传感器红外射线和地面的交点 A 离开擂台边缘时,传感器AD 值会大幅度变化,测量几次取均值即为机器人检测到擂台边缘的AD 值。 8、 结构设计 机器人结构的设计要求:重心低,质量大,动力强劲,行动灵活,传感器合理布置。我们将遵照以上要求设计比赛构型。 本节的示例构型仅作参考。该构型能够符合比赛规则的要求,能够正常完成比赛,但一 定不是最优化的方案。我们期望您能够为广大机器人擂台赛参与者提供更完美的解决方案。 5、 整个比赛构型搭建可以分为以下几个重要步骤: (一)、搭建框架 (二)、安装驱动舵机和轮子 将驱动舵机安装到侧框架上,这个过程中您需要注意舵机不能装反,上一步预先安装上 (三)、整体组装 将两个侧框架通过 I7 零件连接起来,构成一个完整的底盘框架。至此,底盘搭建完成,接下去需要设计灰度传感器和红外测距传感器的安装方式。6、用软件编程并下载 7、实战对抗练习 擂台赛的关键,就是在己方不出擂台的情况下,将敌方推出场外。所以推动敌方的策略 是最为关键的。由于敌方机器人同样拥有动力装置,推动时必然遭受巨大阻力。因此,在检 测到敌方机器人时,必须以最大的动力迅速将敌方推出场外。考虑到不同机器人动力的差异 性,需要同时具备应对己方机器人动力不足,被敌方推动的情况。 需要注意的是,在编程实现实战对抗策略时,需要和实战对抗行为衔接起来。此外,这里对机器人即将将敌 方推出场外的情况做了特殊处理高速前进+延时+高速后退+延时。这是为了快速将敌方 推出场外,而且保证自己不会摔到在场外。 调试中发现,机器人的重量对机器日行为的影响较大。动力性能相同的情况下,质量轻的机器人很难和质量大的机器人对抗。另外,边缘检测传感器的位置需要保证机器人不会摔倒在场外,灰度传感器的安装高度对其性能影响较大。所以我们来进行以下改进: 1) 增加机器人重量。比赛规定机器人重量不超过 3kg,在此条件下,给机器人增加配 重。配重可以选用电池或者其他物体。安装配重时要尽量保持机器人的重心最低; 2) 调整边缘检测传感器位置。比赛规定机器人在场地上的投影尺寸不超过 300x300mm,在此条件下,将边缘传感器安装位置尽可能的伸出底盘外侧。或者架 高传感器,让传感器探测红外线与地面交点尽量远离机器人本体。 3) 调整灰度传感器距地面高度。灰度传感器距离地面太远,反射光线太弱;距地面太 近,反射光线太强。反射光过强或者过弱都会导致机器人自身定位不准确。调整时, 可以设定几个位置,调试并找出沿着场地灰度梯度方向变化范围最大的位置。 8、比赛总结 通过一周的机器人擂台赛的实习,虽然这次我们组没有成功,但我收获啦好多东西,建立啦对机器人的感性认识,更加了解啦机器人的系统构成。对传感器、机械、编程等知识有啦更深的掌握。我的动手能力和创新能力也得到啦进一步的提高。我觉的这次我们没有成功的原因是我们没有很好的把理论和实际结合起来啊,有些事情在理论上可以的,但实际做起来那是很有难度的。所以我觉的以后无论什么事情都要和实际联系起来,不能随便的空想,因为那样往往会失败! 二、 双轮自平衡小车1、此次设计的目的 设计双轮自平衡小车,了解其构造及其需要的机械,加深对机器人的系统知识的掌握。2、设计内容使用“创意之星”套件搭建一个双轮机器人(小车),使其能够只使用两个轮子便能保持平衡!两轮自平衡小车类似于一阶倒立摆,由于其不稳定的动态特性,两轮自平衡小车成为验证各种控制算法的理想平台,具有重要的理论意义。到现在为止,全世界范围内出现了非常多的两轮自平衡小车的成功例子,有些已经在运用到现实生活领域。3、双轮小车有三部分构成3、1、传感器系统Segway 使用了5 个陀螺仪、2 个倾斜传感器用于检测车体的姿态,配备磁性码盘用于检测电机输出速度,还有其它传感器用于检测是不是有人站在车辆上等。3、2、控制系统控制系统通过处理各种传感器的信号,知道车体当前的姿态、速度等信息,控制电机的输出速度和扭矩,让车体保持平衡的前提下,能够按照操纵者的意图前进、后退或者转弯。3、推进系统推进系统包含离合器、变速箱、车轮、电机等。这个系统将控制系统的电机控制指令转化成实际的轮子转动输出。3、3、推进系统推进系统包含离合器、变速箱、车轮、电机等。这个系统将控制系统的电机控制指令转化成实际的轮子转动输出。4 设计规划4、1、我们需要先搭建出实验的平台出来,这是必须是符合上述理论分析的2 轮小车。4、2、我们先熟悉我们所需要用到的部件,比如CDS5500 和红外测距传感器,可能还需要做下标定工作。4、3、在实验平台上设计控制算法,对控制策略进行验证。这是最关键的一个环节,可能会遇到很多次失败,但是最终一定会成功的,因为这个方案已经有很多人走通过。5 搭建小车5、1搭建轮腿第一步,如图搭建舵机组合部件。这里需要注意的是,在安装舵机之前需要在舵机架内事先放入两个LX2 连接件和螺母,因为在后面的组装中要在此处安装一个U3J 连接件。第二步,搭建轮子,如图8.5 所示。所使用的部件为2 个LG 轮子、2 个LX1L 连接件、一个LM1 连接件,并且为了增加轮子与地面的摩擦力,可以在两个轮子上套上两个LT 橡胶圈。第三步,搭建“腿部”,如图所示。为了增加结构刚度,腿的支撑件使用两个I7叠加组成,所使用的U 型件为U3J。第四步,搭建完整“轮腿。5、2搭建传感器连接臂传感器连接臂的搭建方法比较简单,如图8.8 所示,所使用的部件为:L5-1 和I7 结构件、LX1 和LM1 连接件以及红外传感器模块。5、3搭建摆锤摆锤的搭建方法也比较简单,所使用的部件为:舵机组合部件、KD 舵机架、U3J 结构件以及相应连接件。5、4搭建支撑梁支撑梁的作用是连接两个轮腿,增强结构刚度,所使用的部件为:2 个L2-1 和1 个I5 结构件、连接件中的LX1 和LX1L 以及LM1。需要注意的是,两个L2-1 结构件之间只相距两个I5 构架的孔的距离,而不是3 个。5、5组装完整的小车如图所示,首先使用KB 和KC 结构件搭建好控制器的外壳,并在其四边的中心位置安装U3H 结构件以及相关连接件。两个轮腿安装在长边的两个U3H 结构件上,轮腿之间安装支撑梁,需注意的是由于支撑梁的长度不足,需要在梁端加上一个LD1 和一个LD2 连接件作为匹配。两个传感器和连接臂安装在短边的两个U3H 结构件上,而摆锤则通过一个U3C 连接件与控制器外壳的一个长边相连接需要注意的是,摆锤在安装时最好先使用调试器使舵机回位到150°的位置再竖直安装。至此,我们的双轮自平衡小车就搭建完成了,大家在搭建的时候一定要有耐心并且注意思考安装的顺序,避免重复劳动,另外,需要加螺钉螺母的地方一定要加上,不要图省事而误了大事。6 修改舵机的参数使用多功能调速器和RobotSevo Terminal 舵机调试软件,将3 个舵机的数据返回方式,由默认的“所有返回”改成“读取返回”关于多功能调试器和RobotSevoTerminal 软7 红外测距传感器的标定在我们写控制算法之前,需要事先知道小车在平衡位置时两个传感器所采集的信号值,根据与平衡时的值相比较才能知道小车在某一时刻倾斜的方向和倾斜的程度,因此,需要对传感器进行标定,也就是记录下在平衡位置时传感器的读数。标定的方法如下:7、1、两个红外测距传感器分别插到控制器的 AD0 口和AD7 口。7、2、通过调试器将控制器连接上 PC,打开NorthSTAR 软件,单击菜单Tools|QueryAD/IO,弹出查询AD/IO 数值的对话框】。7、3、在 COM 文本框输入当前调试器所在端口号,将波特率改为115200,点击“open”打开相应串口。7、4、单击“Start Service”按钮,下载服务程序,然后单击“QueryAD”按钮,便可看到当前各个AD 端口的采样数值。7、5、用手扶住双轮小车,使其处于平衡位置,分别记录下此时两个传感器(AD0 和AD7)的读数值,可以采用多次读数取平均值的方法使读数更精确些。至此,红外测距传感器的标定工作完成。8 、用软件编程并下载程序编译完成后,使用MultiFLEX2-AVR 控制器的读者可直接使用多功能调试器将编译好的固件下载到AVR 单片机上去。如果您使用的是MultiFLEX2-PXA270 控制器也可以完成本实验,您可以直接修改AVR 控制卡上的程序,将MultiFLEX2-PXA270 控制器当成MultiFLEX2-AVR 控制器使用。9、双轮机器人总结 在第二周我们小组做的是双轮自平衡小车,这次我们也没有成功,但比其上次已经有很大的进步啦,因为我们更多的从实际的出发,把我们所要解决的问题都很详细的列出,而且我们好多的问题都的到啦解决啊。虽然失败啦,但我从中学到啦团队的力量,有时有一个人的力量往往是单薄的,但团结是就力量啊。我相信为我以后走上社会肯定有好大的帮助!三、智能捡球机器人 1、设计目的 随着社会快速的发展,对智能机器人的需求越来越强烈,人们都希望用机器人来代替人来工作,那样人们的生活讲变的更加的美好,所以这次我们组尝试做一个智能识别并能剑气兵乓球的机器人,我们设想制作一个会捡球的机器人,通过机器人自主完成识球、捡球、放球的工作,完全取代人工。2、设计内容在一个能自由移动的小车上安装一个机械臂,在小车的前方装有摄像头,通过其检测到小球的位置,从而引导小车向球的方向运动,在到达预设捡球位置时,停止小车的同时驱动机械臂,捡起小球,并把小球放在车上的球篮内,然后继续寻找下一小球,重复以上描述动作,起到球场上“球童”的作用。3、设计步骤 3、1搭建一个四轮机器人 3、2在机器人上构造一个抓球的手臂 3、4用摄像头对橙色的兵乓球进行识别 3、5用机器人手臂把球抓起并放入篮筐4、搭建机器人搭建轮子结构、接线用结构件和 CDS5500 舵机搭建出下面的构型;将 L 型连接件与舵机单元相连接连接,形成一个基本的轮子单元;将四只脚都装上去5、用软件编程并下载代码如下#include "background.h"int main(int argc, char * argv) int Dx = 0; int Dy = 0; int Left = 0; int Ball_x = 0; int Ball_y = 0; int Right = 0; int Turn = 0; int Forward = 0; MFCapOpen(); MFInit(); MFSetPortDirect(0x00000FFF); MFSetServoMode(1,1); MFSetServoMode(2,1); MFSetServoMode(3,1); MFSetServoMode(4,1); MFSetServoMode(5,0); MFSetServoMode(6,0); MFSetServoMode(7,0); MFSetServoMode(8,0); DelayMS(5000); /Init MFSetServoRotaSpd(1,0); MFSetServoRotaSpd(2,0); MFSetServoRotaSpd(3,0); MFSetServoRotaSpd(4,0); MFSetServoPos(5,206,256); MFSetServoPos(6,580,256); MFSetServoPos(7,291,256); MFSetServoPos(8,0,256); MFServoAction(); DelayMS(250); while (1) /检测目标球的位置 MFCapSetH(159,0); MFCapSetS(255,61); Ball_x = MFCapGetCenterX(); Ball_y = MFCapGetCenterY(); /Dx? Dx = Ball_x - 159; /Dy? Dy = Ball_y - 61; /Forward Forward = Dy * 10; /Turn Turn = Dx * 2; /Left Left = Turn + Forward; /Right Right = Turn - Forward; if (Left =0)&&(Right= 0) MFSetServoRotaSpd(1,0); MFSetServoRotaSpd(2,0); MFSetServoRotaSpd(3,0); MFSetServoRotaSpd(4,0); MFSetServoPos(5,206,256); MFSetServoPos(6,580,256); MFSetServoPos(7,291,256); MFSetServoPos(8,180,256); MFServoAction(); DelayMS(2000); MFSetServoRotaSpd(1,0); MFSetServoRotaSpd(2,0); MFSetServoRotaSpd(3,0); MFSetServoRotaSpd(4,0); MFSetServoPos(5,785,256); MFSetServoPos(6,225,256); MFSetServoPos(7,291,256); MFSetServoPos(8,0,256); MFServoAction(); DelayMS(2000); /Init MFSetServoRotaSpd(1,0); MFSetServoRotaSpd(2,0); MFSetServoRotaSpd(3,0); MFSetServoRotaSpd(4,0); MFSetServoPos(5,206,256); MFSetServoPos(6,580,256); MFSetServoPos(7,291,256); MFSetServoPos(8,0,256); MFServoAction(); DelayMS(1000); else MFSetServoRotaSpd(1,Left); MFSetServoRotaSpd(2,Left); MFSetServoRotaSpd(3,Right); MFSetServoRotaSpd(4,Right); MFSetServoPos(5,206,256); MFSetServoPos(6,580,256); MFSetServoPos(7,291,256); MFSetServoPos(8,0,256); MFServoAction(); DelayMS(250); 6、实验结果并调试7、实验心得体会这周我们做的是智能识别并捡起兵乓球的机器人,不怎么成功,原因有很多方面的,我觉的主要方面还是理论和实际方面的差别,往往理论是可以成功的,但实际却有好的地方达不到要求,还有自己对机器人系统还是不是很深刻的了解,希望通过以后的学习进一步加深自己的专业知识。 在我看来,嵌入式专业的核心就是将理论与实践相结合,运用专业知识基础,理论实践为辅,开拓创新。经过学习,我也知道,若要学好自己专业知识,除了掌握理论知识之外,必要的还需将实践结合,这样才能更全方位的去掌握应用电子专业这门课的精髓。“纸上得来终觉浅,绝知此事要躬行。”在短暂的大学学习和实习过程中,我深深的感觉到自己所学知识的肤浅和在实际运用中的专业知识的匮乏。未来的社会是讲究技能的社会,如果在大学的有限时间能够掌握好自己的专业知识,才能使自己有足够的本钱去立足于社会,才能更好的去服务社会!