基于 python 和 Arduino,实现能够还原三阶魔方的机械结构
- 通过摄像头识别魔方颜色
- 将识别结果转化成魔方求解算法的输入
- 执行魔方求解算法,得出还原操作序列
- 指令优化与碰撞规避处理
- 通过wifi将序列发给硬件控制器
- 硬件控制器按照序列,控制机械结构执行还原
- over
python 版本: 3.x
- pywifi
- pillow
- numpy
- opencv-python
$ pip install -r requirements.txt
$ python3 guiconfig.py
-
tkinter gui 组件的设计与开发
-
Camera:基于cv2.VideoCapture 构造的摄像头管理类
-
HoverButton:基于 tk.Button 提供可带参数事件绑定接口,并做了些许美化
-
ViewCanvas:颜色数据采集与调试工具中的面板,用于展示视频与图片
-
CubeFloorPlan:用于绘制并管理魔方平面展开图,存储并管理整个魔方的色块分布,并生成魔方色块序列
-
HSVAdjuster:颜色数据采集与调试工具中的面板,实时调整颜色识别中使用的 hsv 范围并保存
-
SampleAdjuster:颜色数据采集与调试工具中的面板,实时调整用于颜色识别的采样范围并保存
-
Console:控制台模块,用于主控程序运行时的状态输出
-
Window:Tk 窗口的封装,提供了 update_func 接口
-
CameraCanvas:摄像头视频展示面板,用于主控程序
-
-
颜色数据采集与调试工具的开发
-
魔方模拟器的开发
- 虚拟魔方的实现
-
执行还原序列
- 获取魔方状态
-
twophase 求解接口的后台服务器
-
主控程序的开发
-
计算机视觉模块:魔方定位与颜色块的识别
-
指令调整与优化
-
机器动作指令集的设计
-
标准还原序列到机器动作指令序列的转化
-
碰撞规避处理
-
-
- wifi检测与连接
- 自动获取 esp8266 模块在 ap 模式下的 ip 地址
- 发送数据和接收数据
软件架构如下:
界面如下:
-
-
esp8266
-
ap 模式
-
提供路由处理来自客户端的请求,并返回处理结果
-
-
操作序列的解析
-
电机控制逻辑
-
单个电机动作控制
-
多个电机同步运行
-
单个电机角度微调
-
单个电机的基本连接如下:
模型及装配体如下图所示,所有原文件在sldprt目录下
导出的3D打印模型在stl目录下
凹槽凸轮 | 魔方翻转 |
---|---|
装配爆炸视图 |
---|
翻转魔方 | 魔鬼接线 |
---|---|
![]() |
![]() |
识别魔方色块分布 | 旋转魔方面 |
---|---|
![]() |
![]() |