|
本帖最后由 旭日东升 于 2019-3-15 11:46 编辑 3 Y8 ~/ `- B1 ~- B. x" i) O1 O9 Y
0 ~+ c# U# P8 {0 @' ^ 最近也搭建好解魔方的LEGO机器人,其中也遇到不少问题将大多数问题汇总如下,同时欢迎参与问题分享和解决方法补充:9 X% k( O' ^! q) c+ Z0 Y0 B
1.魔方配置规格要求
A1 u) B2 a/ e; X# P8 e 我也尝试多个厂家和规格的魔方,发现很多应用问题的根源出在魔方上,以下提供一些参考建议:3 Q, \. H+ W {) v
a.魔方塑料白色的,魔方塑料黑色的,实践证明选择黑色塑料将更加有利于应用。验证是否你将买的魔方是否可以使用,请将转好的魔方放置在你的LEGO上,扫描完成将开始执行,否则提示扫描失败。$ m% \2 Z. q1 i7 ]0 H) I% z* }
b.魔方大小固定和弹性可调的,实践证明选择大小弹性可以调节的更加有利于应用。由于魔方规格上细微差异,市场可以选择弹性可以微调的魔方为好,这样翻转臂将大大减少磕碰问题而导致失败。
7 J2 P# I' O0 o8 X ^! l 通过以上这样几个步骤可以排除魔方问题。
5 U* l9 l: k: B3 Z1 O# {0 @4 ?0 L% I5 A/ ~" c @
2.清楚你的解魔方的设计方案,目前有两套解魔方方案和搭建方法(由搭建结构不同来划分类型/两个方案加载程序不能混用)。- w0 X% p5 D* U" j$ k$ Q9 f* i
a.tiltedtwister方案
8 f* w' h8 W! U4 B4 K- {- g 相关网站:http://tiltedtwister.com/robots.html 作者:David Gilday$ h0 I2 L8 V, o# U* q
版本:2008版本/2010版本- B- ?& s! ^* h
搭建图:(详细搭建图文件比较大,截效果图如下)- W$ v1 x% K0 D0 q% S% G; ~, U
0 R0 _7 ?8 W( S3 O
图1 2010版本 图2 2008版本5 { m/ r: ~ ^9 e( S) i- C: l
下载地址:http://tiltedtwister.com/download.html
- w/ z9 O) [* a9 T! K 源代码:
tiltedtwister_code.rar
(9.45 KB, 下载次数: 409)
$ d) h) E7 _# q$ U% { 加载程序:
tiltedtwister_bin.rar
(144.35 KB, 下载次数: 516)
(注意使用bricxcc_setup_3389.exe作为编译器)
. Y# r: B/ y' ~$ L 优点:可以通过源代码调试LEGO魔方,了解和改进设计上问题(需要C的设计能力)
$ t2 U: g% H: l( c 缺点:由于结构问题,目前的结构设计不稳定,8 Q# B6 q* l) _2 }# x# Z
性能: - 扫描魔方: 1 分钟
- 解决方案: 20 - 40 秒
- 执行: 1 - 5 分钟. 平均 4.5 分钟 (60 面翻转)
- 平均耗时: 6 分钟
9 E5 x5 W4 {/ @2 d
% z; k! z6 m' S6 U6 @b.MindCuberRubikCubeSolver方案6 {& [% k# E- l1 N. N6 s
相关网站:http://mindcuber.com/
w' j% i9 ?2 H* `/ i" A1 d 作者:David Gilday
: v3 B- ]' y4 s/ p: ^* v8 Q# o+ y 版本:2012版本1 U5 ~, u- i$ L$ p0 S
搭建图:
MindCuberRubikCubeSolver_PDF.pdf
(7.68 MB, 下载次数: 3174)
9 b! `" b1 F( z, A Y/ \& Y
0 z; a e) k* m6 O$ Z0 h 图3 2012版本
- B' ?+ C& k. M- D- s 源代码:
MindCuber-v2.2.zip
(50.4 KB, 下载次数: 6)
(源码网络链接:http://mindcuber.com/mindcuber/mindcuber-source.html)
4 y& L5 H2 j8 M' g$ v: z; K 加载程序:
MindCuber_bin.rar
(20.81 KB, 下载次数: 1073)
) x5 k9 @! ` ?( k 优点:结构稳定,执行时间较快/ X' k' v8 }4 q- X' a2 w x
缺点:, Q0 i/ w- l4 A
性能:; y/ g( s: L' [5 M) g
改进建议:由于翻转臂会有磕碰问题,建议在翻转臂马达上加些可以简单结构设计,主要添加两个球形部件在马达上容易滑动,防止转动时呆死(如下图,希望可以给翻转臂结构问题一点提示)
- J# d* R: Z9 V; ^" ]" W) E# x/ o' k- \7 n# B6 U+ J
) G% h" h1 O; ~" D9 T3.调试方法
: g5 p0 Y2 V, l# U a.搭建好LEGO 解魔方平台,搭建好注意检查结构是否有问题,这个没什么好方法了,需要你好的观察力,开始尽量同搭建向导一样,后续对于细微差异可以稍微修正;) \$ t5 E' v! a4 T
b.不要急于下载代码验证,对照配置线缆连接是否正确,
6 u$ A4 c: d) I$ C- d; N7 X# ^ tiltedtwister线缆连接要求 MindCuberRubikCubeSolver线缆连接要求 p$ R- ], O& U& Q3 y
# C% @8 a; Y# |% l- |% n
1 =========Color sensor颜色传感器 2=========Ultrasonic sensor超声波传感器8 |% j! k6 j$ I% }; w1 p/ S
2 =========Ultrasonic sensor超声波传感器 3=========Color sensor颜色传感器
+ g ]8 a! f; h2 oA =========Center motor 中央马达 A =========Center motor 中央马达
- H; ~- E/ X# r) P4 a* sB =========Tilter arm motor 翻转手臂马达 B =========Color sensor motor 颜色检测控制马达
/ K. C0 V7 `. ~+ ], PC =========Color sensor motor 颜色检测控制马达 C =========Tilter arm motor 翻转手臂马达! q6 Q- P% x) X
1 S: i' a4 K& }" |4 G
两者搭建后的连接不同,通过NXT-G/NXC 的Remote控制可以检查是否连接好,动起来是否连贯,防止磕碰,有磕碰问题需要尽量处理,否则你需要通过NXC修改代码完善你的设计。" M0 ~) u8 J4 v* M
c.检查LEGO解魔方平台对颜色识别是否稳定,方法如下:/ O- T$ D- R# U* c9 o _
(1).手动转好魔方,或者使用刚购买的魔方(一般6个面都正确)在你的LEGO平台上验证。一般在tiltedtwister中代码有检测,但是目前没有显示扫描信息在屏幕显示,而MindCuber可以显示各个面的颜色信息。
% ?9 [' p- Z. W4 S1 C( l8 I 尽量多验证几次,比较好每次可以正确检测出每个面的颜色,如果概率性出现,建议看看翻转手臂动作是否连贯,颜色检测传感器可否正常检测正确(有些颜色传感器与魔方距离需要微调一下,实际情况可以通过NXC的端口信息来调试)
. q$ m3 z. S5 U9 h( }8 z! m6 ]3 e: w: ]* u5 S4 P
d.中央马达控制微调,方法如下:
+ B. ]: }' w; X0 w# H+ b (1).结构调整,通过齿轮传动,注意传动结构灵活度和稳定性,需要注意调整和更换不好的连接件;8 g0 `" W; v; H
(2).中央位置校准,tiltedtwister/MindCuber刚开始化时都是通过半自动校准,注意一些方法(tiltedtwister倒计数手动定位校准,MindCuber参考点一线定位校准),否则看似可以工作,但是不稳定。' X! d* v- T e& _, X8 p
* M, Y9 l& s6 ^) L! e+ O& {, K
e.下载执行程序整个调试验证:( H0 A% x) B9 @( `
(1)将生成或者得到的rxe下载到你的NXT上,如果下载失败注意你的固件是最新版本,同时保证NXT内存空间足够使用,不够注意删除NXT上部分空间使用,正常时NXT是没有内存空间上问题。& d' R% X' \+ t; e' c" U w2 s
(2)程序流程大致如下:
* _3 J3 o+ v" W% D/ Stiltedtwister:针对这部分代码简要给出流程上的分析1 {6 G# V+ g$ E+ t: Z0 }2 P' H/ y% N
while(true)
) F3 s4 J3 Q( W6 z: ?0 H {; v' W. E5 i8 m0 k" V# V9 _
Initialize(); -------------------初始化固定翻转臂(注意需要固定翻转臂才完成)8 q& K* k6 F( G# t, J# Y9 @
初始化固定颜色传感器位置(注意需要固定颜色传感器才完成)
5 g5 J; o5 x, b2 N# q5 [ 初始化转台中央转台位置(需要手动驻停中央转台)7 \+ a s; ~) O5 u& I- b
3 k# A' O, E: w
WaitForCube();-------------屏幕提示“GIVE ME A CUBE”放上魔方,9 g- Y5 o9 q5 i2 E9 [' m
通过检测是否魔方在平台上,直到检测物体放上为止,显示“Thank you”% j8 g- P( ]+ x& L3 h
* g& w: w: G& |6 I! i% K: v2 S
ScanCube();----------------颜色传感器开始移动,翻转臂偶尔转动翻转魔方,屏幕绘制魔方图框7 {8 E/ a; M: j& a* y1 Z+ a: l
if(ResolveColors())---------NXT 计算放置魔方是否正确,如果错误需要更换魔方,重新操作Initialize()( E/ K1 W2 Q9 V, w
if(SolveCube())---------NXT 计算魔方是否可以解,如果错误需要更换魔方,重新操作Initialize()
6 a7 H, L# Y2 g2 e DoMoves();---------按照既定算法操作魔方,期间不会处理异常,直至完成
2 `, L& j6 m0 f9 W0 r7 V& { WaitForCubeRemove();--提示拿走魔方,重新操作Initialize()" I4 F! b0 [( d9 W; z& x. y8 D8 `
}0 l7 A( {0 u' L9 }/ |# `
MindCuber:没有代码,借鉴操作手册上说明描述翻译如下9 r: e: K* J3 N' }: }2 l0 H
MindCuber可以解决标准3x3x3的魔方。它由红色,橙色,绿色,蓝色,黄色和白色组成魔方。魔方表面必须非常光滑,容易转动。
- Y. C) v' @) e: [' I! @ 选择和运行NXT的上的“MindCuber”软件文件。 MindCuber开始移动“翻转臂”和“扫描颜色臂”,因为它需要固定它们位置。颜色传感器在此过程中闪烁的红色,表明它正在运行。
, Y& n& R: j, W# ` 如果有魔方在中央转盘上,MindCuber检测到并显示提示消息,询问拿走魔方。当MindCuber检测没有魔方,它停止闪烁的色彩传感器,并显示提示消息,询问插入一个魔方。同时你必须确保“中央转盘”是否正确对齐,以便其在同一方向的前缘对齐,5 D# P3 G$ n: ~5 N: Y: R
MindCuber解魔方平台自身是无法做到这点。你可以使用NXT上左键旋转中央转盘逆时针和顺时针旋转右边的按钮。短时间按下按钮将小步微调旋转。长时间按下会不断旋转中央转盘较大的调整。当中央电机停止时,因为它和电机之间的齿轮连接,尝试用手非常轻柔旋转的底下的转盘来调整转盘到中央位置。; L4 C+ y0 n$ G1 C S U* j! x
通过来回调整完成转盘位置的正确。当MindCuber等待要插入的魔方时, 每次启动程序时对齐,转盘通常只需要一次可以完成,但你也可以随时调整位置。放置魔方在中央转盘上,MindCuber使用超声波传感器检测魔方时,当发现魔方时将自动启动。它使用色彩传感器开始扫描魔方。在扫描过程中,色彩传感器闪烁为蓝色,当6个面的扫描完成时,色彩传感器闪烁为红色。算法将计算出一个解决的方案,这个过程大致在10秒左右,完成方案需要40~45步移动。一旦MindCuber计算完成解决方案,然后通过翻转和转动魔方来解决它。在结束魔方和移走魔方时,色彩传感器绿色闪烁表明完成。当你移开魔方,色彩传感器将停止闪烁。
/ N, ?, n! S, ^6 s- K3 E! [+ o 在解魔方期间和之后,时间将在屏幕上显示。 MindCuber完整的解魔方过程通常需要2至3分钟,而后MindCuber等待准备好为您放置魔方来解魔方。# m1 P* V' |0 E% m/ c; E8 X9 |3 l- W
【提示】:. U) M1 G# w6 a& a, o+ P! }
观察魔方位置,以确保它每次翻转和滑回正确位置。如果它有时会向后倾斜,而不是滑回,这时确保贴纸放置在中央转盘位置上(建议可以垫上大小合适的纸片)。如果魔方有特别尖锐的边缘,你可以使用较大的贴纸。
/ C) ?7 l2 h9 z. d% p 如果MindCuber不能确认出正确的颜色,它会自动重新扫描魔方三次。如果仍然无法确定正确的颜色,它会移动的翻转臂,继续闪烁红色,等待你再次尝试拿开魔方。如果MindCuber在闪光灯或变化灯光下,将使其难以正确地感知颜色。尝试将MindCuber离开光线地方。
3 w; T* i$ i' }. w- d! b3 ` 如果扫描还是工作不好,你可以自己完成魔方的一个面,通过校准魔方上白色的面是来帮助提升。当红色灯闪等待你移走魔方,在移走魔方之前按下桔黄色的按键。MindCuber屏幕上显示“Calibrate white”。将转好的魔方白色面放到转台上,同时白色朝上放置。MindCuber将扫描白色面,通过这个完成传感器的校准来提高扫描成功率。这个校准将被使用直到重新校准或者重启程序。
" ^: ~" ~$ d' X/ Y 如果魔方不标准颜色,它可能无法正确扫描。
" j- r' U: Y, J; @) q4 R0 j手动解3阶魔方必杀技方法:; l7 l( G: m2 T& G/ S' F: R+ j
http://www.appchina.com/app/appinventor.ai_736176007.ULeTian_magic
1 P# @7 G0 [& U! S参考论坛英雄帖:
) H# h; V5 s( B5 x& U+ xhttp://bbs.cmnxt.com/thread-2183-1-1.html, a2 ?1 K7 p2 m% l' V' ?
) n2 i- E# _: A3 {. w& E0 A6 B/ r
http://bbs.cmnxt.com/forum.php?mod=viewthread&tid=82407 [/ L8 g/ z3 @& A! ^
. W1 X9 z2 m% q! Z9 R
http://bbs.cmnxt.com/thread-7443-1-1.html$ I7 Q( z# E7 H" z: Q2 J0 d
( f* b E7 B. u% W: W; M% L
http://bbs.cmnxt.com/thread-6726-1-1.htmlhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=3580& `. D6 @% k& U+ F5 [1 H' a
- e& \- o6 k8 ~& k, uhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=5871
, R: | ?! |9 x2 Q4 `
" \" Z: F: ]9 ?: V$ j' ]0 u' Xhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=7870 k; f8 l* R( ~2 s9 |1 D7 i
; k! G, s4 `* q高端设计英雄帖:
# `' d( _/ c# @. Nhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=3647
( R* d) q7 M/ lhttp://bbs.cmnxt.com/forum.php?mod=viewthread&tid=60217 X2 V: b0 L4 E- q( b
/ Z% y$ M( T! ^; m. i
' y4 ?+ \2 P0 i( [
|
|