• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB写的三维魔方解算GUI 两种算法(Thistlethwaite算法和Kociemba算法) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

大二的时候,没什么事情,打算用MATLAB做一个三阶魔方机器人,所以使用GUI做了个上位机,使用MATLAB编写的3阶魔方GUI,可以实现魔方状态设置(始末状态都可以设置),使用 patch 实现的魔方的旋转动画效果,可以调节旋转的速度,最开始打算用MATLAB实现解算算法的,但后来放弃了,主要是太难了,参考的两套算法都是用C#和C++实现的,而考虑到MATLAB运行机制的原因和算法的分析涉及的数学知识确实太高深了,可以先看看这篇文章(当然Kociemba算法可没有这么简单,他的剪枝做的厉害,优化也是很深入的),因此我在这里提供了两个魔方解算的DLL,是两种不同的算法实现的三阶魔方的解算,其中 Kociemba的解算结果比较好,我在DLL中限定了输出条件为解算步骤小于等于21步就输出,但是 Thistlethwaite 算法的话由于其数学理论决定了最大50+步,而一般确实是在25步以上,所以建议使用C++版本的DLL。

先放工程下载链接:

魔方解算上位机GUI完整源码链接

Kociemba算法C++dll工程+Kociemba算法C++控制台输出工程 + Thistlethwaite算法C#WinForm工程

效果图:





需要注意的有:
①想要运行DLL必须要有支持的编译器,最好有个VS吧,由于我使用的是MATLAB2014a,因此VS版本不能高于VS2013,如果你的电脑mex -setup -v
显示找不到编译器的话,那就很尴尬了,这个比较麻烦,我确实不敢去改环境变量,同时每次启动MATLAB都需要改一次,这很不方便,曾经的我选择了重装系统。
②GUI中有调用摄像头的部分,因此你的MATLAB最好是**完全的,没**完全会缺少一个相机包,不过百度一下就解决了,很简单。
③GUI是个半成品,没有做完后面的图像识别和串口发送,神经网络给了一部分(基本原理就是根据HSV和RGB来预测颜色,测试过识别的准确率有97%以上,当然,最好多做点样本,不同光照的也做一下),串口发送接收也很简单,我已经在Serial_Communication脚本里写了一个MATLAB操作串口的东东,也实验过,是可以用的。
④KociembaCubeDLL名称的几个.dll/.exp/.h/.lib是C++的支持库,其他的.mtb和.ptb没有用,只要运行就会生成,是twophase(Kociemba)算法的剪枝表,删除了一运行就会生成。TEST函数是调用这个dll的方法。同时我也在2phase文件夹里放了dll库的release版本。
⑤在support文件夹的CF_Cube_Algorithm.dll是C#的支持库,是Thistlethwaite算法的实现库。函数GetResult是调用这个dll的方法。
⑥由于当时我的电脑是x64的系统,因此dll生成的是x64版本的,不知道对x32有没有影响。不过x64肯定是没问题的。
⑦本人水平有限,GUI做的很粗糙,在这里放出来主要是给对这方面感兴趣的人提供点学习资料,毕竟当初我也花了不少时间弄这个。

Thistlethwaite算法中使用了这样的魔方表述方式,如果有人不知道怎么这样( UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR)表示魔方的话:可以看这篇文章

Kociemba算法中使用了这样的魔方表述方式,这个应该很清晰明了。
输入顺序:R(Green)–B(Orange)–L(Blue)–F(Red)–U(Yellow)–D(White) 看第五个是什么就行了
Input =‘HH RGRGGRGGG HH BYYBOOWYR HH GGOWBBBBB HH BBYWRWWRW HH ORWRYYYYG HH OWOOWOYOR’;
其中的HH可以理解为只是一个分隔符,没有任何意义。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi7中添加QuickRep发布时间:2022-07-18
下一篇:
Delphi中封装ADO之我重学习记录发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap