|
本帖最后由 旭日东升 于 2019-3-15 11:46 编辑 $ z2 U8 `! {8 O) F
. m8 p) q) F8 A 最近也搭建好解魔方的LEGO机器人,其中也遇到不少问题将大多数问题汇总如下,同时欢迎参与问题分享和解决方法补充: b5 G+ F! J- o& s
1.魔方配置规格要求
) a$ L3 u& y5 N7 {5 I) W 我也尝试多个厂家和规格的魔方,发现很多应用问题的根源出在魔方上,以下提供一些参考建议:' Q& }" V, _/ a
a.魔方塑料白色的,魔方塑料黑色的,实践证明选择黑色塑料将更加有利于应用。验证是否你将买的魔方是否可以使用,请将转好的魔方放置在你的LEGO上,扫描完成将开始执行,否则提示扫描失败。
6 m7 X$ m( q! N5 n! i( i- J b.魔方大小固定和弹性可调的,实践证明选择大小弹性可以调节的更加有利于应用。由于魔方规格上细微差异,市场可以选择弹性可以微调的魔方为好,这样翻转臂将大大减少磕碰问题而导致失败。' k6 ]( r, f7 ]
通过以上这样几个步骤可以排除魔方问题。4 {4 q8 v) ]# D1 L3 M( G
" R- Q4 J+ @. m6 Q( z- E) l
2.清楚你的解魔方的设计方案,目前有两套解魔方方案和搭建方法(由搭建结构不同来划分类型/两个方案加载程序不能混用)。8 F& U# a) J: H
a.tiltedtwister方案
4 h" F- K! T1 j1 m0 Y# j 相关网站:http://tiltedtwister.com/robots.html 作者:David Gilday
7 X" u: w8 t1 b: \ 版本:2008版本/2010版本
`- P# w/ O' p5 [' F( n6 Q& a 搭建图:(详细搭建图文件比较大,截效果图如下)* ?7 ?5 x% `" W( h. a- Q5 t( P4 R4 x
" ^% L E6 M1 V( G8 t" }, g0 Q$ C
图1 2010版本 图2 2008版本7 h# ]- {7 {# k3 X( p# ~8 C
下载地址:http://tiltedtwister.com/download.html
" ?& u8 {8 c$ G0 w7 I 源代码:
tiltedtwister_code.rar
(9.45 KB, 下载次数: 409)
2 W0 \' g* ] s, ]$ E% j9 R
加载程序:
tiltedtwister_bin.rar
(144.35 KB, 下载次数: 516)
(注意使用bricxcc_setup_3389.exe作为编译器)3 ]6 G' \/ Z; g! p& Z! a5 X- _* a
优点:可以通过源代码调试LEGO魔方,了解和改进设计上问题(需要C的设计能力)% o5 P, Z, h, k" O! s% N
缺点:由于结构问题,目前的结构设计不稳定,4 I5 H$ C1 \$ ?" r8 A8 y- N
性能: - 扫描魔方: 1 分钟
- 解决方案: 20 - 40 秒
- 执行: 1 - 5 分钟. 平均 4.5 分钟 (60 面翻转)
- 平均耗时: 6 分钟4 `/ `9 v$ {6 | }" x# @) |
3 S0 }! P$ m3 p( |
b.MindCuberRubikCubeSolver方案
, j) n' |2 B/ a0 K4 H( z9 s 相关网站:http://mindcuber.com/, V" g5 {% U- u6 Y9 `& y) K
作者:David Gilday
# K1 e t# G7 q, R; _: L 版本:2012版本
% w! y1 d. k8 W 搭建图:
MindCuberRubikCubeSolver_PDF.pdf
(7.68 MB, 下载次数: 3177)
% r$ H# u7 p+ \3 C. U" ]
. J1 o; w) q: f j6 |$ e& ` 图3 2012版本) \+ O7 ^! V1 ^2 B! O
源代码:
MindCuber-v2.2.zip
(50.4 KB, 下载次数: 6)
(源码网络链接:http://mindcuber.com/mindcuber/mindcuber-source.html). Z/ r1 w0 y+ U: F0 K
加载程序:
MindCuber_bin.rar
(20.81 KB, 下载次数: 1073)
% u" Q' x3 }* `6 @6 E5 D+ { 优点:结构稳定,执行时间较快/ @5 @' }9 h! g* B2 ]5 H+ \* Q
缺点:+ Y3 K3 H1 A1 y! h2 y
性能:0 K# D* p/ c+ [% |9 R
改进建议:由于翻转臂会有磕碰问题,建议在翻转臂马达上加些可以简单结构设计,主要添加两个球形部件在马达上容易滑动,防止转动时呆死(如下图,希望可以给翻转臂结构问题一点提示)
& i7 T% x8 H8 U2 t5 p" K
3 x' Z3 n X" B% Y4 d& x. R6 \9 ^
1 U! O% t N6 l4 Z3.调试方法. ?: E3 n; Z6 b% e- K
a.搭建好LEGO 解魔方平台,搭建好注意检查结构是否有问题,这个没什么好方法了,需要你好的观察力,开始尽量同搭建向导一样,后续对于细微差异可以稍微修正;
( Y$ t9 Y" |. C+ T2 L' Z! Q/ g1 J b.不要急于下载代码验证,对照配置线缆连接是否正确,/ U; ^8 z' Q) g
tiltedtwister线缆连接要求 MindCuberRubikCubeSolver线缆连接要求' K5 f' N9 R \0 k* \ j0 d
5 ~5 p) t( q: o' e* C# C5 O6 n1 =========Color sensor颜色传感器 2=========Ultrasonic sensor超声波传感器# l1 p% q, ? a4 m% O
2 =========Ultrasonic sensor超声波传感器 3=========Color sensor颜色传感器
# e* b8 m4 D$ f7 o* ^) E! L/ `A =========Center motor 中央马达 A =========Center motor 中央马达& I! D' H$ t q4 U5 ]; q+ m7 ?+ K
B =========Tilter arm motor 翻转手臂马达 B =========Color sensor motor 颜色检测控制马达& @' X, d$ K' M9 L+ |1 F
C =========Color sensor motor 颜色检测控制马达 C =========Tilter arm motor 翻转手臂马达- c; f* F9 `/ U& G
5 a! w3 S9 X1 n4 ?两者搭建后的连接不同,通过NXT-G/NXC 的Remote控制可以检查是否连接好,动起来是否连贯,防止磕碰,有磕碰问题需要尽量处理,否则你需要通过NXC修改代码完善你的设计。
" L2 u4 e& N2 V c.检查LEGO解魔方平台对颜色识别是否稳定,方法如下:2 P7 L- q) e) k% O9 k; ]
(1).手动转好魔方,或者使用刚购买的魔方(一般6个面都正确)在你的LEGO平台上验证。一般在tiltedtwister中代码有检测,但是目前没有显示扫描信息在屏幕显示,而MindCuber可以显示各个面的颜色信息。' L" z$ I4 c/ v* i! V/ W
尽量多验证几次,比较好每次可以正确检测出每个面的颜色,如果概率性出现,建议看看翻转手臂动作是否连贯,颜色检测传感器可否正常检测正确(有些颜色传感器与魔方距离需要微调一下,实际情况可以通过NXC的端口信息来调试)
: z+ M0 E, ~" m5 O! i- Z
# g$ a% @. l3 g8 |7 k* R6 z d.中央马达控制微调,方法如下:
" \! w$ D7 `7 q' |% D (1).结构调整,通过齿轮传动,注意传动结构灵活度和稳定性,需要注意调整和更换不好的连接件;; r2 A& i# U& b* v. W6 T
(2).中央位置校准,tiltedtwister/MindCuber刚开始化时都是通过半自动校准,注意一些方法(tiltedtwister倒计数手动定位校准,MindCuber参考点一线定位校准),否则看似可以工作,但是不稳定。
3 m4 n8 H' S. D2 P- C$ N' t9 d, c3 |- i/ K
e.下载执行程序整个调试验证:1 P3 W* _# v, T2 E2 O b
(1)将生成或者得到的rxe下载到你的NXT上,如果下载失败注意你的固件是最新版本,同时保证NXT内存空间足够使用,不够注意删除NXT上部分空间使用,正常时NXT是没有内存空间上问题。
; m8 O, G3 p( {/ g- r8 b3 ~" X1 g (2)程序流程大致如下:
) v: q- p2 K4 l( utiltedtwister:针对这部分代码简要给出流程上的分析/ K' h- B+ l0 b+ v& Z# I* B
while(true)
; b1 ^8 o4 V! Q( Q! P {; p+ w* ^! L3 C/ X0 w5 A/ b, X; v$ P
Initialize(); -------------------初始化固定翻转臂(注意需要固定翻转臂才完成)
* {$ G8 M7 j/ B& j 初始化固定颜色传感器位置(注意需要固定颜色传感器才完成)+ ?, [6 c. B- e
初始化转台中央转台位置(需要手动驻停中央转台). n$ d* D( ?2 n+ V% x) A9 u
' L: v. X) n4 S) n }" { WaitForCube();-------------屏幕提示“GIVE ME A CUBE”放上魔方,' Z4 c# x7 y8 W( o; P( J4 i
通过检测是否魔方在平台上,直到检测物体放上为止,显示“Thank you”
4 q7 _+ g: g' T' }* S9 |
+ i8 S9 n5 d2 O% q1 ?1 x1 J% }+ w2 }5 V ScanCube();----------------颜色传感器开始移动,翻转臂偶尔转动翻转魔方,屏幕绘制魔方图框) k/ U3 P7 x; _; H& S
if(ResolveColors())---------NXT 计算放置魔方是否正确,如果错误需要更换魔方,重新操作Initialize()
) q2 p) H" T3 R! d, H0 s if(SolveCube())---------NXT 计算魔方是否可以解,如果错误需要更换魔方,重新操作Initialize()6 s, u3 l, W# C# V5 ]
DoMoves();---------按照既定算法操作魔方,期间不会处理异常,直至完成1 o. P- F, U8 _
WaitForCubeRemove();--提示拿走魔方,重新操作Initialize()
# U; J; j! E( V6 q6 o }
: a. O n: s$ \MindCuber:没有代码,借鉴操作手册上说明描述翻译如下
# n' L. p* W& g' A, i% P MindCuber可以解决标准3x3x3的魔方。它由红色,橙色,绿色,蓝色,黄色和白色组成魔方。魔方表面必须非常光滑,容易转动。1 `: E u, Z8 Y/ D; O2 F; B" I
选择和运行NXT的上的“MindCuber”软件文件。 MindCuber开始移动“翻转臂”和“扫描颜色臂”,因为它需要固定它们位置。颜色传感器在此过程中闪烁的红色,表明它正在运行。5 ^% _! S4 m( s+ j4 m+ C
如果有魔方在中央转盘上,MindCuber检测到并显示提示消息,询问拿走魔方。当MindCuber检测没有魔方,它停止闪烁的色彩传感器,并显示提示消息,询问插入一个魔方。同时你必须确保“中央转盘”是否正确对齐,以便其在同一方向的前缘对齐,0 M9 _# y. {! e' m- h
MindCuber解魔方平台自身是无法做到这点。你可以使用NXT上左键旋转中央转盘逆时针和顺时针旋转右边的按钮。短时间按下按钮将小步微调旋转。长时间按下会不断旋转中央转盘较大的调整。当中央电机停止时,因为它和电机之间的齿轮连接,尝试用手非常轻柔旋转的底下的转盘来调整转盘到中央位置。
+ a5 D1 x+ Z+ i' O 通过来回调整完成转盘位置的正确。当MindCuber等待要插入的魔方时, 每次启动程序时对齐,转盘通常只需要一次可以完成,但你也可以随时调整位置。放置魔方在中央转盘上,MindCuber使用超声波传感器检测魔方时,当发现魔方时将自动启动。它使用色彩传感器开始扫描魔方。在扫描过程中,色彩传感器闪烁为蓝色,当6个面的扫描完成时,色彩传感器闪烁为红色。算法将计算出一个解决的方案,这个过程大致在10秒左右,完成方案需要40~45步移动。一旦MindCuber计算完成解决方案,然后通过翻转和转动魔方来解决它。在结束魔方和移走魔方时,色彩传感器绿色闪烁表明完成。当你移开魔方,色彩传感器将停止闪烁。$ S1 O, a- c3 V9 s
在解魔方期间和之后,时间将在屏幕上显示。 MindCuber完整的解魔方过程通常需要2至3分钟,而后MindCuber等待准备好为您放置魔方来解魔方。
0 }, O {. y8 d1 d; J7 a3 s6 D 【提示】:" a% u6 N/ g# I \2 }! F/ O/ x$ n' k
观察魔方位置,以确保它每次翻转和滑回正确位置。如果它有时会向后倾斜,而不是滑回,这时确保贴纸放置在中央转盘位置上(建议可以垫上大小合适的纸片)。如果魔方有特别尖锐的边缘,你可以使用较大的贴纸。
( L1 p. a1 B7 A/ m& _7 @/ p/ V 如果MindCuber不能确认出正确的颜色,它会自动重新扫描魔方三次。如果仍然无法确定正确的颜色,它会移动的翻转臂,继续闪烁红色,等待你再次尝试拿开魔方。如果MindCuber在闪光灯或变化灯光下,将使其难以正确地感知颜色。尝试将MindCuber离开光线地方。" @+ }1 ^% j& Y9 T
如果扫描还是工作不好,你可以自己完成魔方的一个面,通过校准魔方上白色的面是来帮助提升。当红色灯闪等待你移走魔方,在移走魔方之前按下桔黄色的按键。MindCuber屏幕上显示“Calibrate white”。将转好的魔方白色面放到转台上,同时白色朝上放置。MindCuber将扫描白色面,通过这个完成传感器的校准来提高扫描成功率。这个校准将被使用直到重新校准或者重启程序。2 |5 I/ @: o& `. J7 c5 k; e' a
如果魔方不标准颜色,它可能无法正确扫描。 : M: D5 X! Z/ s9 G! ]2 y" a9 f* }
手动解3阶魔方必杀技方法:
5 C% g, J% F0 y$ G# y) shttp://www.appchina.com/app/appinventor.ai_736176007.ULeTian_magic
c; A4 ?1 C0 `0 V参考论坛英雄帖: " o9 Q. T6 m w- ^# |; D
http://bbs.cmnxt.com/thread-2183-1-1.html
( @6 i9 B1 W- g0 U* n {
5 J. k. y& t: o. \5 O; bhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=8240
8 h. q' K/ Q4 X' g. l C. K8 d, i. a) ^. T9 i) L
http://bbs.cmnxt.com/thread-7443-1-1.html
5 x+ k `* B1 b; D9 U0 h. {) c$ _- v$ C3 U; o3 U/ w
http://bbs.cmnxt.com/thread-6726-1-1.htmlhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=3580) t! a+ X- H* l! O
$ R( d+ C' Y4 k9 k
http://bbs.cmnxt.com/forum.php?mod=viewthread&tid=58719 l4 t h! Z4 c" F7 z
2 Y' a2 A* r( K, u$ Hhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=7870/ t. C) a+ u. q
% M5 q6 Q2 e2 d
高端设计英雄帖:
% p5 ?' }1 n0 Rhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=36475 q0 `# p) O1 F7 }5 `
http://bbs.cmnxt.com/forum.php?mod=viewthread&tid=6021* I# k. A, C- P" {
/ Y0 f, P# T; R* W; h
( A' {0 ^9 L- w" S: \ |
|