资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于基于LegoLego的的还还原魔方机器人原魔方机器人? 于文君? 2011-06-03? 整体介整体介绍绍? 机械结构 图像处理 魔方算法 硬件控制 流程介流程介绍绍? 放置魔方,调整初始状态? 读颜色,分六面48块? 按照PC计算的步骤还原魔方? 检验魔方是否被还原? 接收颜色数据,? 并返回解魔方步骤? 输出数据,供用查错? NXT端 PC端 帮助弱小的NXT 辅助计算 实际演示 Video 实际演示? 构构思思过过程程? 机械结构 1 动力转变 LDD lego 驱动设计 颜色处理 2 RGB/HSV 处理办法 容错设计 传感器 魔方算法 3 CFOP 降群法 魔方表示法 魔方坐标系 硬件控制 4 电机运动方式 传感器反馈 容错性 机械结构 Question 1: 旋转变直线?? 四种实现方式:? 齿条? 蜗杆? 曲柄滑块机构? 传送带或者滑轮机构? (参考几本机械原理的书)? Choice:齿条最佳,曲柄滑杆机构也可以接受? 想象力很重要? 机械结构 Question 2: 电机个数?? 1.NXT有电机个数限制:3个? (多NXT控制,之间可以蓝牙通信)? 2.重力方案? (对于三阶立式方案略显奢侈,高阶很适用)? 3.颜色传感器,摄像头? (摄像头节省一个电机)? Choice:采用重力方案,在师兄现有结构图基础上修改。? 参考网上的和参考网上的和钟师钟师兄的兄的图图? 机械结构 Others:? 1.Lego Digital Designer(LDD)方便实用的 LegoCAD软件? 2.Lego MindStorm 套装,机械结构相当全。? (不过缺乏较长的机构)? 3.长杆件刚性不够,应尽量加固? 机械机械结构结构? 机械结构的部分还存在很多的问题机械结构的部分还存在很多的问题,搭建搭建 一个机构不仅需要有成熟的思路一个机构不仅需要有成熟的思路,而且要而且要 有一定的灵感有一定的灵感。想要将结构精巧的实现想要将结构精巧的实现, 需要很高的技巧和创造力需要很高的技巧和创造力。 国外甚至有很多国外甚至有很多Lego创作的“大师创作的“大师”。? 颜颜色色处处理理? Question 1: 摄像头 or 传感器?? 1.摄像头略显不智能,东西还不齐备? (需要对于硬件摄像头进一步了解, NXT与PC的通信,图像/颜色识别程序, 图像 降噪,未来的趋势)? 2.Lego传感器经测试,RGB值区分度还 比较满意? 3.现成的搭建图纸,只需做零星的修改? Choice:采用传感器,利用多余的一个电机驱动? 颜颜色色处处理理? Question 2: RGB直接识别?? 1.RGB三个通道的数值与环境相关? (直接识别会悲剧,直接采用比例或大小进行 识别也不可行)? 2.考虑HSV等其他识别方式? Choice:集体采样,集中处理,还能分担NXT的工作 量。? 采用集中办法读取识别出错的概率已经 比较小了,颜色出错一般是在电机旋转角度上。? 颜颜色色处处理理? 分析一组数据:? /oringe? 254,128,90,248,120,80,253,137,96,266,137,78,239,128,86? /red ? 246,92,86,245,75,82,239,64,77,230,47,65,266,77,77? /white !?!?RGB处理方式不同RGB处理方式不同?308,297,286,319,320,313, 299,249,240,308,308,300,323,320,312? /yellow 256,224,114,233,202,106,260,230,119,251,214,109, 253,220,107? /green? 98,1180,121,96,204,139,104,202,144,65,183,133,85,189,133,? /blue? 95,136,181,104,131,184,78,107,171,126,135,176,83,122,181? 颜颜色色处处理理? 根据观察到的规律,按照如下方式识别:(共48组数据)? 1.所有颜色的三通道值相加从大到小排序,最大的前8个为 白色? 2.剩余颜色中,按R+G分量从大到小排序,最大的前8个为黄 色? 3.剩余颜色中,按G分量从大到小排序,最大的前8个为绿色? 4.剩余颜色中,按R分量从小到大排序,最小的前8个为蓝色? 5.剩余颜色中,按G-B分量从大到小排序,最大的前8个为橘 黄色? 6.剩余颜色为红色? PS: 红色和橘黄色最难识别,他们各个通道均有交集,不 能直接识别? 颜颜色色处处理理? Others:? 目前采用的方式还很朴素,将来应该转向摄像头/相机 的方式来识别,提高效率。? 这种识别方式需要3分钟左右。(可以进一步提高)? 魔方算法魔方算法? Question 1: 还原步数? 1.传统方法为CFOP算法,可以参考各种魔方的BBS均有 详细介绍,属于主流算法。? 使用简单公式在100步之外(人工),换算成机器步骤 将有400-500步以上。相当考验观众耐心。? 如果使用200个公式,则相当快(50-70人工步,200以 上机器步数),但是相当考验程序员耐心。? 2.网上资料 - 魔方快速算法!http:/ tomas.rokicki.com/cubecontest/winners.htm? 基本上基于降群法,思想优先。? 3.其余方法:棱先、角先;CFCE(一百多个公式);桥 式(不到一百个公式)? 魔方算法魔方算法? 算法敲定:? 最终采用上述网页中的第三名Jaap的算法,主要基于 Thistlethwaites four stage algorithm。平均人工步 数为30步,机器步数150左右。 网站提供了一个C的程序,将其改写为Java程序并通过 了验证。一般的电脑上计算时间不会超过半秒钟。? 魔方算法魔方算法? 魔方表示法约定? 一个魔方可以由一串字符串表示。? UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR(属于Mike Reid)? U: Up? F: Front? R: Right? L: Left? D: Down? B: Back? 魔方算法魔方算法? 输出表示法约定:? 1.Jaap的输出为F3 U1 F3 D3 L1 D2 F3 U3 L2 D3(我命名之 为URD表示法)(顺时针)? 2.自定义机器的输出表示法 (自己命名为PBH表示法)? 将Jaap输出翻译为PBH表示法。? 如: BBBPHHHPHPPPHHHPPPHHH BBBPHPPPHHBPHHHPHHHBBB PHHPHHH? 魔方算法魔方算法? Question 2: NXT Brick 太脆弱? 1.NXT Brick采用32位 ARM7 微处理器,事实证明,连 这个三阶的魔方的降群法也计算不了,估计是内存不足。? (实际结果是等待10分钟,出现一个未知错误)? ? 2.体力活就只能交给PC来干吧,但是多了根USB线,有 点不爽。? 魔方算法魔方算法? 对应的程序中的算法:? 1.PC端接收,java程序计算? 2.具体三个相关的类,入口位于Class CubeSolverPC,包含主要算法Thistlethwaites four stage algorithm。其余两个类Class ColorIdentify用于 将接收的color数据分门别类,Class CubeCenter用于将 URDSteps转换为PBHSteps。(具体后面会讲)? 3.将主要计算的部分放到PC上执行,以后可以利用蓝牙 通信,这样看起来更酷点。? 硬件硬件编编程程? 环境配置:? 1.采用Java语言,使用JDK1.6版本,IDE(Integrated Development Environment)选用IBM的开源Eclipse。? 2.专用API,LeJOS 0.85版本。专门为Lego的NXT和RCX编程 开发的Java专用API(color小bug),需要JDK1.5以上版 本。? 3.NXT brick需要刷机,利用安装LeJOS后的工具将NXT Brick的操作系统刷为配套使用的。? 4.通信使用USB方式? 另一种环境配置:? 1.采用Labview+NXT MindStrom2.0插件。? 2.Labview编程,通信问题较简单,计算问题较麻烦。可能 需要采用外部其他计算方式辅助(如师兄采用Matlab)? 硬件硬件编编程程? 关于Eclipse的配置:? 作为专业的IDE,Eclipse对于Java的编写和调试提供了 很大方便。? 将常用的几个NXT的编译工具,如NXJ compile, download,和 explorer等增加到运行按钮中,之后即可以 直接点击使用。? Eclipse开源,而且支持众多插件,对于C+,Python等 语言也有插件支持。? ? 硬件硬件编编程程? 程序框架:? PC端:三个类 CubeSolver,ColorIdentify, CubeCenter三个类。? NXT端:一个程序yumaxwellV3(目前版本)。需要 download至NXTBrick中执行。? 整套程序大致有1500行左右,将来还要增加其他功能。? 运行顺序:? 1.先运行NXT端yumaxwellV3.nxj程序,? 2.直到NXTBrick发出连续三声twoBeeps,运行 CubeSolver类中的main函数。? 硬件硬件编编程程? 程序具体介绍:? 1.yumaxwellV3中集成了读魔方颜色和根据步骤转魔方 的功能? 2.CubeSolver类实现通信,计算魔方解法(根据URD计 算URDSteps,从Jaap程序改写得来)的功能? 3.CubeCenter类提供一个和魔方一起旋转的坐标系,并 根据URDSteps计算出PBHSteps。方便NXTBrick理解魔方旋 转的步骤? 4.ColorIdentify类将colorAllSide的数据识别为具体 的颜色 ? 数据流程:? robot-colorRGB-colorString(URD)-URDSteps- PBHSteps-robot? 具体的具体的详细详细步步骤骤? yumaxwellV4? ColorIdentify? CubeSolverPC? readColor()? readOneSide()? Angle?Edge? Comm? out? in?out? in? colorRGBTo URD()? findCenter()? CubeCenter? URDToPBH()? Get Result ()? rotateBySolver()? checkAllSide()? Success!? int ? int ? int ? URD? URD Steps? PBH Steps? PBH Steps? PBH Steps? int?int? int ? Sort()? Start 关关键键的的问题问题:机械的容机械的容错错性性? 涉及到四方面的问题:? 1.读颜色的细长杆件的刚度? 2.三只电机均有一定的回程差,所以必须朝向一个方向 旋转,但是pawMotor需要来回旋转,所以总出现问题
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号