解魔方机器人系列(一)kociemba算法
安装
apt-get install libffi-dev
apt install python-pip
pip install setuptools
pip install kociemba
使用
整个包只有一个函数solve(), 输入参数是魔方的各个面的颜色分布字符串,输出是包含解魔方的所有步骤的字符串。还有一个可选的输入参数是用于指定解魔方到特定状态的字符串。
Python下的使用示例:
>>> import kociemba
>>> kociemba.solve('DRLUUBFBRBLURRLRUBLRDDFDLFUFUFFDBRDUBRUFLLFDDBFLUBLRBD')
u"D2 R' D' F2 B D R2 D2 R' F2 D' F2 U' B2 L2 U2 D R2 U"
>>>kociemba.solve('FLBUULFFLFDURRDBUBUUDDFFBRDDBLRDRFLLRLRULFUDRRBDBBBUFL', 'BBURUDBFUFFFRRFUUFLULUFUDLRRDBBDBDBLUDDFLLRRBRLLLBRDDF')
u"R' D2 R' U2 R F2 D B2 U' R F' U R2 D L2 D' B2 R2 B2 U' B2"
当安装完解魔方包后,可以使用单独的工具运行解魔方程序:
$ kociemba <cubestring>
魔方标记字符串:
每个面都有一个字符表示,U为上表面,D为下表面,L为左表面,R为右表面,F为前表面,B为后表面。
解完的魔方每个面都是同一个颜色,所以UDLRFB可以代表每个面的颜色。假定我们让上表面U为白色,下表面D为黄色,左表面L为红色,右表面R为橙色,前表面F为蓝色,后B表面为绿色。当魔方打乱后,则下图表示的每个面的单元格颜色就可能是之前任何面的某一个颜色。
我们按照如下顺序将单元格颜色变成字符串:`U1`, `U2`, `U3`, `U4`, `U5`, `U6`, `U7`, `U8`, `U9`, `R1`, `R2`, `R3`, `R4`, `R5`, `R6`, `R7`, `R8`, `R9`, `F1`, `F2`, `F3`, `F4`, `F5`, `F6`, `F7`, `F8`, `F9`, `D1`, `D2`, `D3`, `D4`, `D5`, `D6`, `D7`, `D8`, `D9`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `L7`, `L8`, `L9`, `B1`, `B2`, `B3`, `B4`, `B5`, `B6`, `B7`, `B8`, `B9`。所以当我们输入字符串"UBL...",表示U1为白色,U2为绿色,U3为红色,以此类推,即可定义所有面的单元格标志字符串。
解魔方步骤字符串包含空格字符,含义如下:
- 单个字符表示所代表的面顺时针旋转90度。
- 单个字符带一撇,表示代表的面逆时针旋转90度。
- 单个字符带2,表示代表的面旋转180度。
比如R U R’ U R U2 R’ U, 表示右表面顺时针旋转90度,下表面顺时针旋转90度,右表面逆时针旋转90度,下表面顺时针旋转90度,右表面顺时针旋转90度,下表面旋转180度,右表面逆时针旋转90度,下表面顺时针旋转90度。
|************|
|*U1**U2**U3*|
|************|
|*U4**U5**U6*|
|************|
|*U7**U8**U9*|
|************|
************|************|************|************
*L1**L2**L3*|*F1**F2**F3*|*R1**R2**R3*|*B1**B2**B3*
************|************|************|************
*L4**L5**L6*|*F4**F5**F6*|*R4**R5**R6*|*B4**B5**B6*
************|************|************|************
*L7**L8**L9*|*F7**F8**F9*|*R7**R8**R9*|*B7**B8**B9*
************|************|************|************
|************|
|*D1**D2**D3*|
|************|
|*D4**D5**D6*|
|************|
|*D7**D8**D9*|
|************|
解魔方机器人系列(一)kociemba算法相关推荐
- 解魔方机器人系列(三)软件控制及整机测试
魔方机器人的分上位机PC端软件以及下位机arduino软件.上位机采用python编写,带有UI,用户需输入魔方各个面的颜色分布,点击solve按钮,软件就会将解魔方步骤通过串口发送给arduino. ...
- 解魔方机器人系列(二)步进电机控制
电机控制采用A4988+Arduino uno.A4988控制板采用的成品模块+cnc shield v3成品板.注意如果自行设计A4988控制板,需要注意电机输入电压与地之间要接个大电容.因为这个, ...
- 物联网毕设 - 基于Kociemba算法和颜色识别的解魔方机器人 - 单片机
⭐️基于Kociemba算法和颜色识别的解魔方机器人⭐️ STM32开发板 亚克力机械手 全志 ARMPC C30 开发板 Kociemba算法 安卓APP 源码: https://blog.csdn ...
- 基于Arduino、树莓派的两款解魔方机器人
历史的车轮一直在前进,时代总是在发展,在互联网时代,各种新技术层出不穷.其中,最具有实用性和创新性的便是21世纪比较热门的领域--机器人.本次将要制作的即为解魔方机器人,旨在成功地实现不同机械结构情况 ...
- 自动解魔方机器人1 [算法篇]
魔方机器人其实上个学期就已经做完了,参加了机器人大赛的创意组. 本来想写一个教程,一直没时间整理(其实是懒),这次先把我觉得比较重要的东西写一下,主要是为了记录一下我的制作过程和制作思路,给有同样兴趣 ...
- 解魔方机器人一秒搞定魔方
机器人已经可以在一秒左右解魔方啦,是不是完胜人类? 魔方,在大部分人眼中可能就是一个儿时的玩具,殊不知它却是高智商人群的钟爱.解魔方不仅靠智商,其实还是有技巧的,掌握了规则你就可以很快地拼凑出来啦,甚 ...
- 自动解魔方机器人 [开篇]
2017年2月底,在网上看到了一篇新闻 http://digi.tech.qq.com/a/20161112/003776.htm 自然而然的想了想它是如何实现的,从视频来看,在装置顶部和底部各安装了 ...
- python+opencv多进程实现识别魔方颜色,通过kociemba算法得出算法字符串并画图(附毕设完整视频)
完整毕设成果视频如下: 本科毕业设计转魔方(声音略大) python+opencv本科毕业设计转魔方(声音略大) 上一篇博客已经给大家讲了鼠标hsv获取魔方颜色阈值方法,具体见 python+open ...
- 毕业设计 stm32颜色识别解魔方机器人
文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4.1 Kociemba算法 4.2 软件设计 5 部分核心代码 最后 0 前言
最新文章
- 剑指offer:面试题04. 二维数组中的查找
- 做“是非题”的正确姿势
- 三年磨一剑,五次被拒稿,交大博士坚持稿件申诉,终发表学科顶刊
- huffman编码的程序流程图_Huffman编码实现压缩解压缩
- Oracle 用户,角色,权限等
- AIX、hpux、linux 通过nfs文件系统运行oracle 数据库
- 移动端媒体尺寸_网络推广外包浅析提升移动端网站建设效率有哪些网络推广外包技巧...
- HeadFirstJava——2_类与对象
- 激活函数maxout
- vue + element插件 首次运行白屏原因分析
- 杂谈随感-3:不同的角色,不同的价值体现
- 用java实现首字母大写_java实现每个单词首字母大写
- Java8新特性(三) – 流式数据处理
- 树莓派/linux 功能配置(含网络)不定期更新
- archivelog模式和flashback db以及guarantee restore point之间的相互制约关系!
- 全国产!全志A40i+Logos FPGA核心板(4核ARM Cortex-A7)硬件说明
- excel怎么设置自动计算_excel表格设置自动计算的方法步骤(2)
- 第109篇 Compound 中的 Liquidate
- 2019-11-29-git-需要知道的1000个问题
- Qgis 加载在线地图:如高德、天地图、OSM等