找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 26526|回复: 37

解读大师的思想之魔方机器人深入剖析第一篇

   火.. [复制链接]
发表于 2009-3-10 21:05:25 | 显示全部楼层 |阅读模式
本帖最后由 rainjoe 于 2009-3-11 13:19 编辑


首先看一段源程序

以下为预处理部分:
// Power of tilt
#define TILTPOWER1 50
#define TILTPOWER2 100

// Angles of power1 and power2 TILTANGLE1 + TILTANGLE2 = 63
#define TILTANGLE1 35
#define TILTANGLE2 28

// Power of returning tilterarm
#define TILTRETURNPOWER1 100
#define TILTRETURNPOWER2 20

// Angles of power1 and power2 TILTRETURNANGLE1 + TILTRETURNANGLE2 = -63
#define TILTRETURNANGLE1 -33
#define TILTRETURNANGLE2 -30

// Time (ms) to rest before return tilterarm
#define TILTREST 200

以下函数中红色标记的部分为机械手推动魔方的具体代码:
void Tilt()
{

CheckCube();


RotateMotorEx(OUT_B,TILTPOWER1,TILTANGLE1,0,false,false);


RotateMotorEx(OUT_B,TILTPOWER2,TILTANGLE2,0,false,false);


RotateMotorEx(OUT_B,50,-1,0,false,false);


RotateMotorEx(OUT_B,100,1,0,false,true);


Wait(TILTREST);


RotateMotorEx(OUT_B,TILTRETURNPOWER1,TILTRETURNANGLE1,0,false,false);


RotateMotor(OUT_B,TILTRETURNPOWER2,TILTRETURNANGLE2);


char uf=faces[UPPERFACE];


faces[UPPERFACE]=faces[LEFTFACE];


faces[LEFTFACE]=faces[DOWNFACE];


faces[DOWNFACE]=faces[RIGHTFACE];


faces[RIGHTFACE]=uf;

}

为了大家更好理解,将预处理部分的具体数值代入函数中

RotateMotorEx(OUT_B, 50,35,0,false,false);//A

RotateMotorEx(OUT_B,100,28,0,false,false);//A


RotateMotorEx(OUT_B,50,-1,0,false,false);//B


RotateMotorEx(OUT_B,100,1,0,false,true);//B


Wait(200);//C


RotateMotorEx(OUT_B,100,-33,0,false,false);//D


RotateMotor(OUT_B,20,-30);//D


应用函数RotateMotorEx参数的具体意义参考NXC_Guide,视觉上一个连续的推动过程被大师分解成了四个部分,A部分首先让机械手以50的速度启动向前运动35(实际上是转动35度,在此用向前运动表示),两个原因:1、慢速(50)启动的好处是让系统平稳,不然你拿QQ四挡启动试试?2、向前35的效果是让机械手刚好接触到魔方,50的速度接触魔方的又一好处就是可以不让魔方在转台上跳动,而后B部分让机械手以100的速度推动魔方向前28,这里不用解释了吧,用最大的力去推动魔方让其翻转,但是在这里要说明一下的是A部分为什么不以更低的速度启动机械手,原因就是你用QQ拉个卡车试试?-1档都启动不了,那为什么又不高一点呢,60之类的,除了前面两个原因应该还有一个叫冲量定理的东西(貌似高中学过),Ft=m(v2-v1),即速度在瞬间差量越大提供的冲击力越大,在机械手接触到魔方的一刹那,即刚开始可以翻转魔方的一刹那,推力较大,以此保证的魔方的顺利到位,C部分这个来回抖动一下的作用其实是整个里面最巧妙的,为的是利用机械结构的压力和重力(惯性)使得魔方推动到位,注意C部分中第二句的最后一个参数为什么要设置为true,为的就是利用电机骤停加大机械手的惯性,使得机械手能够下压魔方,并在D部分加了一个小延时200ms,目的就是利用机械手的重力下压一下魔方(时间比较短,貌似用作用甚微),并在前后动作中稍微停顿,法拉利飙到最高时速后然后倒车能不停吗?后面的D部分应该不难理解了,以最快的速度离开魔方的原因是为了避免静摩擦力带动魔方向后运动,即把魔方回扯,被罪恶之手带走了?一旦速度快,动摩擦力小于静摩擦力,貌似高中物理知识用上不少,然后以较低速度停住,这个原因不用解释吧,毕竟世界上以最高时速停车的男人都称之为赛车手。

预告:
我把Hans Andersson的程序分成了关键的几个部分:
1、机械手推动精确控制
2、转台转动的精确控制
3、魔方解法算法
4、一些貌似微不足道的妙笔

今天先写第一部分了,为的是支持站长糖伯虎同志,感谢本站站长的资料,让我有机会复原大师的杰作,在此再次申明大师的魔方机器人叫Tilted Twister,在此注明以示尊重,记得藤子不二雄死前告诉他儿子,要让全世界的人们记得小叮当只有一个名字叫做哆啦A梦,不叫机器猫。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2009-3-10 22:33:40 | 显示全部楼层
呵呵,为了你最后一句,我得把那些图纸,视频什么的名字都该过
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-3-10 22:40:32 | 显示全部楼层
我之前都在研究他的算法,还真没有你看得那么细,连里面的力学都研究到了,看来您作为名老师还真是很有道理的,专业人和业余的就是不同,虽然我玩nxt比你早,但是汗颜啊。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2009-3-11 13:24:32 | 显示全部楼层
我之前都在研究他的算法,还真没有你看得那么细,连里面的力学都研究到了,看来您作为名老师还真是很有道理的,专业人和业余的就是不同,虽然我玩nxt比你早,但是汗颜啊。
糖伯虎 发表于 2009-3-10 22:40


站长实在太谦虚了,之所以有一个这样的平台,目的就是为了给大家一个交流的空间,为了实现大家的机器人梦想,大家一起互相学习,共同提高,还希望大家能踊跃发言,支持我们自己的NXT中文论坛,用实际行动支持我们糖伯虎同志的辛勤贡献,貌似有点像愤青的口号
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-3-11 16:18:53 | 显示全部楼层
老师好,您的解释真的很仔细,很佩服你啊。。。。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-3-16 10:39:52 | 显示全部楼层
Awesome~Magic自己正在学魔方,同时也在考虑做魔方机器人
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-3-20 23:53:01 | 显示全部楼层
魔方我倒是会解     但是要机器人去    难度。。。。。。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-8-25 22:34:05 | 显示全部楼层
我拿到NXT后的第一件事情就是做了个魔方机器人,只是按照资料,依葫芦画瓢,没有仔细去分析。惭愧呀
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-8-27 22:26:09 | 显示全部楼层
魔方机器人怎么做呀?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-9-5 11:04:44 | 显示全部楼层
呵呵,为了你最后一句,我得把那些图纸,视频什么的名字都该过
糖伯虎 发表于 2009-3-10 22:33


问一下,魔方机器人的相关资料都在哪里?

我正在试图用8547复制一个魔方机器人(就是楼上提到的Tile Twister)。
想参考参考。

另外,有一些改造部分希望能跟同样适用8547的朋友共享共享。

还有,顺便问个问题,这个魔方机器人是不是只能解边长小于56mm的魔方?我这里有一个边长57mm的魔方,卡在篮子里,很紧。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-10-13 21:23:54 | 显示全部楼层
真厉害,佩服佩服,以后有时间来研究研究~
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2009-11-2 10:22:46 | 显示全部楼层
佩服佩服,正在考虑做一个魔方机器人,只考虑算法问题了,没想到控制动作方面有这么多讲究!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-3-26 12:23:35 | 显示全部楼层
好东西呀,先留下了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

头像被屏蔽
发表于 2010-4-18 16:05:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-17 11:29:22 | 显示全部楼层
嗯 不错不错 站长是不是可以考虑下再开个版面 关于从LEGO延伸方面的学科 如:力学,动学等
把机器人面化、细化是不是更能让人理解,更能让人的思维发散了?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-3-29 01:42 , Processed in 0.262135 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表