|
本帖最后由 旭日东升 于 2019-3-15 11:46 编辑
/ V% _- y( _3 L0 b- f# S6 d0 b' r* M
最近也搭建好解魔方的LEGO机器人,其中也遇到不少问题将大多数问题汇总如下,同时欢迎参与问题分享和解决方法补充:: R; x. }# O" t$ [) e0 z
1.魔方配置规格要求
3 H/ U! a1 E$ [2 a5 G3 H 我也尝试多个厂家和规格的魔方,发现很多应用问题的根源出在魔方上,以下提供一些参考建议:0 Z7 [4 s: p! v+ J7 e7 R2 c4 P; a
a.魔方塑料白色的,魔方塑料黑色的,实践证明选择黑色塑料将更加有利于应用。验证是否你将买的魔方是否可以使用,请将转好的魔方放置在你的LEGO上,扫描完成将开始执行,否则提示扫描失败。9 }0 w+ k/ k# \/ @
b.魔方大小固定和弹性可调的,实践证明选择大小弹性可以调节的更加有利于应用。由于魔方规格上细微差异,市场可以选择弹性可以微调的魔方为好,这样翻转臂将大大减少磕碰问题而导致失败。
* X. k) a: N, z) Q# R8 c' B2 f' ]7 W 通过以上这样几个步骤可以排除魔方问题。
$ Z, r/ M7 {# z# j# M# Q$ o
( f* p( p+ A' q4 a+ M8 n2.清楚你的解魔方的设计方案,目前有两套解魔方方案和搭建方法(由搭建结构不同来划分类型/两个方案加载程序不能混用)。
) l9 P9 C: b3 H- H# |$ v9 C$ N a.tiltedtwister方案
' v* f1 \" w6 [9 e( v E 相关网站:http://tiltedtwister.com/robots.html 作者:David Gilday
* l% c' z3 O4 R( X8 U# H3 B% r4 l 版本:2008版本/2010版本+ o# p1 t! U1 a% O' W
搭建图:(详细搭建图文件比较大,截效果图如下)
: |5 c7 v$ |, Z8 K+ }7 v2 h + { A) ]8 }5 D! r& L; ?6 \- m
图1 2010版本 图2 2008版本
4 U3 S+ ?- r/ O4 ^ 下载地址:http://tiltedtwister.com/download.html
" f) y" O V0 |1 ? 源代码:
tiltedtwister_code.rar
(9.45 KB, 下载次数: 409)
! X" ?7 F( h& k& m. c
加载程序:
tiltedtwister_bin.rar
(144.35 KB, 下载次数: 516)
(注意使用bricxcc_setup_3389.exe作为编译器)
0 e9 x* `, t" l4 ]7 I' G1 G7 J$ o; @8 s 优点:可以通过源代码调试LEGO魔方,了解和改进设计上问题(需要C的设计能力)! Y |( |' ]- n6 t/ T
缺点:由于结构问题,目前的结构设计不稳定,
1 B7 C8 M3 Y8 Q, ~7 R% b' Z 性能: - 扫描魔方: 1 分钟
- 解决方案: 20 - 40 秒
- 执行: 1 - 5 分钟. 平均 4.5 分钟 (60 面翻转)
- 平均耗时: 6 分钟7 A) u' g' m& `1 l3 i' ~" N
6 [ M. s# e% I0 y* u
b.MindCuberRubikCubeSolver方案
5 Q. r6 p# N) U6 W$ d8 G 相关网站:http://mindcuber.com/' _, n j6 |9 \) F$ p" A: ]
作者:David Gilday. E2 `4 H- G0 ^& \ W7 @
版本:2012版本* x+ w; a: W. X4 U3 R- z
搭建图:
MindCuberRubikCubeSolver_PDF.pdf
(7.68 MB, 下载次数: 3174)
. i0 H9 }$ _( Y \9 ?
$ W- ]1 G f W8 u$ G X1 }% O 图3 2012版本
6 U9 e" j9 s* y$ c& ]3 I+ F 源代码:
MindCuber-v2.2.zip
(50.4 KB, 下载次数: 6)
(源码网络链接:http://mindcuber.com/mindcuber/mindcuber-source.html)
) E0 u2 z9 v ? 加载程序:
MindCuber_bin.rar
(20.81 KB, 下载次数: 1073)
! M5 {0 R$ k7 }1 q- A 优点:结构稳定,执行时间较快
, U& \2 d& t: |, N% S3 ^ 缺点:
p$ b0 r1 w7 I X! E 性能:
! O; D5 [1 C8 i 改进建议:由于翻转臂会有磕碰问题,建议在翻转臂马达上加些可以简单结构设计,主要添加两个球形部件在马达上容易滑动,防止转动时呆死(如下图,希望可以给翻转臂结构问题一点提示)8 w7 P: @6 j6 i7 ~1 j
$ D7 a8 _8 w/ D! i1 _
! H+ s) f9 U B) ]5 a+ z' C1 r3.调试方法
0 O% ^" |. D) c _" \, S1 G9 b a.搭建好LEGO 解魔方平台,搭建好注意检查结构是否有问题,这个没什么好方法了,需要你好的观察力,开始尽量同搭建向导一样,后续对于细微差异可以稍微修正;
5 U: o8 m( O/ f7 D' J& ~ b.不要急于下载代码验证,对照配置线缆连接是否正确,
3 s! W" j' P$ ]1 N# o @ tiltedtwister线缆连接要求 MindCuberRubikCubeSolver线缆连接要求
& [9 r' N* q! Z: i' U7 ?8 s5 H" G2 y1 q: `1 M$ M/ v
1 =========Color sensor颜色传感器 2=========Ultrasonic sensor超声波传感器
$ {/ G" I9 K3 s6 M2 =========Ultrasonic sensor超声波传感器 3=========Color sensor颜色传感器
; O8 I- P; m: C2 C) y: @A =========Center motor 中央马达 A =========Center motor 中央马达
/ Y) y8 |8 C, C; L5 nB =========Tilter arm motor 翻转手臂马达 B =========Color sensor motor 颜色检测控制马达
: V% H/ ~8 Q2 v' LC =========Color sensor motor 颜色检测控制马达 C =========Tilter arm motor 翻转手臂马达) }1 I6 h3 E: o" P* d g+ c
# G( ]' E; i8 T! V. ~& s两者搭建后的连接不同,通过NXT-G/NXC 的Remote控制可以检查是否连接好,动起来是否连贯,防止磕碰,有磕碰问题需要尽量处理,否则你需要通过NXC修改代码完善你的设计。
* }( A& U: z$ e o c.检查LEGO解魔方平台对颜色识别是否稳定,方法如下:$ v( |6 s4 `5 K% X, t
(1).手动转好魔方,或者使用刚购买的魔方(一般6个面都正确)在你的LEGO平台上验证。一般在tiltedtwister中代码有检测,但是目前没有显示扫描信息在屏幕显示,而MindCuber可以显示各个面的颜色信息。+ N4 g) k& h$ X' k( ?5 T+ H
尽量多验证几次,比较好每次可以正确检测出每个面的颜色,如果概率性出现,建议看看翻转手臂动作是否连贯,颜色检测传感器可否正常检测正确(有些颜色传感器与魔方距离需要微调一下,实际情况可以通过NXC的端口信息来调试)
1 e. F; ~+ H+ c% R/ ?: R; n Q v" \) R
d.中央马达控制微调,方法如下:
u7 t) S# Z/ G8 r" h, A (1).结构调整,通过齿轮传动,注意传动结构灵活度和稳定性,需要注意调整和更换不好的连接件;: q, Q8 C# s) a. c) a0 }
(2).中央位置校准,tiltedtwister/MindCuber刚开始化时都是通过半自动校准,注意一些方法(tiltedtwister倒计数手动定位校准,MindCuber参考点一线定位校准),否则看似可以工作,但是不稳定。
0 W x8 s4 v& T! D+ F5 [* X' m X% L9 E2 m4 I; s
e.下载执行程序整个调试验证:
& t; k; K7 c3 A0 A0 U (1)将生成或者得到的rxe下载到你的NXT上,如果下载失败注意你的固件是最新版本,同时保证NXT内存空间足够使用,不够注意删除NXT上部分空间使用,正常时NXT是没有内存空间上问题。' p! h* ]% k1 U; u2 Z) h- _
(2)程序流程大致如下:
/ Y- T3 s: W1 Y4 h: E/ d. u3 Xtiltedtwister:针对这部分代码简要给出流程上的分析! E: Z* y, Z0 {! @* @ |
while(true)9 ~9 x! i. P' Q2 _( @3 M
{
9 _, c3 a% p" S Initialize(); -------------------初始化固定翻转臂(注意需要固定翻转臂才完成)
4 J# O) M. e1 i- {' }, o0 c 初始化固定颜色传感器位置(注意需要固定颜色传感器才完成)
9 [4 U5 D9 ] g6 w" E' j& b3 {% f 初始化转台中央转台位置(需要手动驻停中央转台)6 n1 ?9 o1 c9 x: a0 R% }0 o- i
: N4 u' i# r% n. B8 f
WaitForCube();-------------屏幕提示“GIVE ME A CUBE”放上魔方,/ A Z9 v' O. V. d. }) B3 h0 T
通过检测是否魔方在平台上,直到检测物体放上为止,显示“Thank you”
( @: V( W' m; z/ s8 D8 j- h2 r! |" ]* J) ^8 S( y% {- v8 `6 e6 S0 v2 ?
ScanCube();----------------颜色传感器开始移动,翻转臂偶尔转动翻转魔方,屏幕绘制魔方图框
# N5 @# f- b1 a3 z if(ResolveColors())---------NXT 计算放置魔方是否正确,如果错误需要更换魔方,重新操作Initialize()
9 x) @' }; }( }* ^- O4 S! q if(SolveCube())---------NXT 计算魔方是否可以解,如果错误需要更换魔方,重新操作Initialize()
4 V! W j8 u8 F0 O DoMoves();---------按照既定算法操作魔方,期间不会处理异常,直至完成
t( {4 P- n% N$ q+ j! v WaitForCubeRemove();--提示拿走魔方,重新操作Initialize()
# M8 F2 m, b7 O1 i+ A }
- R* m3 j3 i$ N& v. T- D3 yMindCuber:没有代码,借鉴操作手册上说明描述翻译如下
7 x- }! M5 M y5 | MindCuber可以解决标准3x3x3的魔方。它由红色,橙色,绿色,蓝色,黄色和白色组成魔方。魔方表面必须非常光滑,容易转动。
0 P, h) c& o. } L8 \. ]( ^" O 选择和运行NXT的上的“MindCuber”软件文件。 MindCuber开始移动“翻转臂”和“扫描颜色臂”,因为它需要固定它们位置。颜色传感器在此过程中闪烁的红色,表明它正在运行。3 v2 Q6 M8 J9 |0 w$ W
如果有魔方在中央转盘上,MindCuber检测到并显示提示消息,询问拿走魔方。当MindCuber检测没有魔方,它停止闪烁的色彩传感器,并显示提示消息,询问插入一个魔方。同时你必须确保“中央转盘”是否正确对齐,以便其在同一方向的前缘对齐,. v G/ h, n* H4 {4 D# o% M
MindCuber解魔方平台自身是无法做到这点。你可以使用NXT上左键旋转中央转盘逆时针和顺时针旋转右边的按钮。短时间按下按钮将小步微调旋转。长时间按下会不断旋转中央转盘较大的调整。当中央电机停止时,因为它和电机之间的齿轮连接,尝试用手非常轻柔旋转的底下的转盘来调整转盘到中央位置。/ g6 t. F9 L+ ~; Z) M$ |+ d
通过来回调整完成转盘位置的正确。当MindCuber等待要插入的魔方时, 每次启动程序时对齐,转盘通常只需要一次可以完成,但你也可以随时调整位置。放置魔方在中央转盘上,MindCuber使用超声波传感器检测魔方时,当发现魔方时将自动启动。它使用色彩传感器开始扫描魔方。在扫描过程中,色彩传感器闪烁为蓝色,当6个面的扫描完成时,色彩传感器闪烁为红色。算法将计算出一个解决的方案,这个过程大致在10秒左右,完成方案需要40~45步移动。一旦MindCuber计算完成解决方案,然后通过翻转和转动魔方来解决它。在结束魔方和移走魔方时,色彩传感器绿色闪烁表明完成。当你移开魔方,色彩传感器将停止闪烁。3 q" B) r" m- G' [
在解魔方期间和之后,时间将在屏幕上显示。 MindCuber完整的解魔方过程通常需要2至3分钟,而后MindCuber等待准备好为您放置魔方来解魔方。
. |; _' I& j) e2 O/ f 【提示】:
8 @! m+ |$ E9 a0 {* Y 观察魔方位置,以确保它每次翻转和滑回正确位置。如果它有时会向后倾斜,而不是滑回,这时确保贴纸放置在中央转盘位置上(建议可以垫上大小合适的纸片)。如果魔方有特别尖锐的边缘,你可以使用较大的贴纸。
& o: W9 W: t4 V" W& G 如果MindCuber不能确认出正确的颜色,它会自动重新扫描魔方三次。如果仍然无法确定正确的颜色,它会移动的翻转臂,继续闪烁红色,等待你再次尝试拿开魔方。如果MindCuber在闪光灯或变化灯光下,将使其难以正确地感知颜色。尝试将MindCuber离开光线地方。
( r: ]. p" W8 `$ N4 l 如果扫描还是工作不好,你可以自己完成魔方的一个面,通过校准魔方上白色的面是来帮助提升。当红色灯闪等待你移走魔方,在移走魔方之前按下桔黄色的按键。MindCuber屏幕上显示“Calibrate white”。将转好的魔方白色面放到转台上,同时白色朝上放置。MindCuber将扫描白色面,通过这个完成传感器的校准来提高扫描成功率。这个校准将被使用直到重新校准或者重启程序。
( C- p; x4 i) ]- M! Q 如果魔方不标准颜色,它可能无法正确扫描。
1 G- \. V0 {$ l% ^1 _# m手动解3阶魔方必杀技方法:
. ?4 G$ s+ {3 A- N$ _5 phttp://www.appchina.com/app/appinventor.ai_736176007.ULeTian_magic0 H$ p# E n4 x% w3 T0 g0 |, ]: O
参考论坛英雄帖:
/ A2 H4 R7 |0 k9 E) Z; b" L' e* ]http://bbs.cmnxt.com/thread-2183-1-1.html/ l1 S1 w' D3 G+ ^$ L: O* O
5 K a' ]- O" e6 \
http://bbs.cmnxt.com/forum.php?mod=viewthread&tid=8240
: a9 n) h% b" h! [
S, Z, w* `. B, whttp://bbs.cmnxt.com/thread-7443-1-1.html
/ H# W+ l9 R1 a& S) M2 a& q0 v0 F {! V7 n2 z
http://bbs.cmnxt.com/thread-6726-1-1.htmlhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=35801 j0 y! y- g# g; k& C8 t
! c: w3 F) q. [& hhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=5871
; d6 }! O" _( w9 i9 c, B( D4 z) V. c+ N' @" @
http://bbs.cmnxt.com/forum.php?mod=viewthread&tid=7870
: a1 I& ~# m7 K' Y/ F0 U! d- q6 [' s" U. [! e/ i
高端设计英雄帖:. L) p* a! Q" W' H5 q$ x k! D
http://bbs.cmnxt.com/forum.php?mod=viewthread&tid=3647
5 t7 w Y3 ?/ U" n( p: u' khttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=6021
8 X& U' r( X/ e% f- o' w
- F L/ J# [3 {8 o' E- Z* w6 m; p8 s) |! |" \/ n1 u7 r% z3 u; I
|
|