作者:内蒙古科技大学 齐耀旭 郝剑波 陆剑锋
指导教师:郭宇 高丽丽
作品简介
1.1 开发背景
随着人类科学技术的发展,人工智能化已经成为各类产品的一种发展趋势,许多娱乐性的玩具也都走向自动化、智能化。本作品就是基于科学技术发展的产物。以前,人们总是自己动手来解魔方,那么在科学技术高速发达的今天,为什么不让机器来帮忙解魔方呢?如此一来,本作品便应运而生了。解魔方机器人不仅仅是一种娱乐工具,更是一种科学艺术。
1.2 结构说明
下图为总体结构:
(1). 主控模块:本模块采用比赛要求的ARM kinetis K10来控制。
(2). 舵机模块:本作品采用了8块舵机。外围4个控制舵机的伸缩,内圈4个控制魔方的顺时针和逆时针旋转。
(3). 摄像头模块:本作品采用高清摄像头做为我们机器人的眼睛。
(4). 上位机部分:本软件采用C#为源码编写,它包含实时计时功能、视频显示功能、抓取魔方、读取颜色功能、截图调试并识别功能、串口设置功能等。
1.3 功能与使用说明
(1)功能
本作品可完成对魔方颜色的读取并解开魔方的功能,上位机可以实时记录解魔方所用的时间,时间根据魔方的打乱程度不同而不同,平均大概二分钟多就会解完。
(2)使用说明
首先,人工将魔方随意打乱,点击抓取魔方,让机器人抓取魔方,接着点击读取颜色,魔方便开始将六面的读入,点击识别,上位机进行处理、计算之后,将解法发给下位,此时开始计时,与此同时,机器人也开始解魔方。结束后,计时停止。机器人的手自动松开,由人工将其取出。
1.4 作品特色
本作品实现了从传统的人工解魔方到智能的机器人解魔方,其中不乏趣味性,此科技作品解放了人的双手,让机器自己来解,具有一定的欣赏价值,同时也具有一定的艺术价值,更具有一定的创新性。
平台选型说明
2.1 ARM控制板介绍
ARM主要模块介绍如下:
(1)通信模块:UART 模块; SPI 模块; I2C 模块; I2S 模块; CAN 模块。
(2)模/数处理模块: A/D 转换模块(ADC) ; D/A 转换模块(DAC) ; 电压比较器(CMP); 触摸感应接口(TSI)。
(3)定时相关模块: 可编程延时模块(PDB) ; Flex 定时器(FTM); 周期中断定时器(PIT);低功耗定时器(LPTMR) ; 载波调制发射器(CMT); 实时时钟(RTC)。
(4)存储相关模块: FLASH 在线编程模块(FTFL);存储卡驱动模块(SDHC)。
ARM引脚介绍如下:
2.2 ARM控制板的选择
由于ARM拥有以上功能,再加上ARM体积小、低功耗、低成本、高性能,寻址方式灵活简单,执行效率高,所以此科技作品采用的主控为ARM。
设计说明
3.1 设计方案
硬件系统设计:
主控制模块:本作品采用ARM系列单片机为主控,我们使用的功能有8路PWM、串口等。如图:
舵机模块:作品采用的舵机如图所示:
舵机工作原理: 舵机常用的控制信号是一个周期为20毫秒左右,宽度为1毫秒到2毫秒的脉冲信号。当舵机收到该信号后,会马上激发出一个与之相同的,宽度为1.5毫秒的负向标准的中位脉冲。之后二个脉冲在一个加法器中进行相加得到了所谓的差值脉冲。输入信号脉冲如果宽于负向的标准脉冲,得到的就是正的差值脉冲。
如果输入脉冲比标准脉冲窄,相加后得到的肯定是负的脉冲。此差值脉冲放大后就是驱动舵机正反转动的动力信号。舵机电机的转动,通过齿轮组减速后,同时驱动转盘和标准脉冲宽度调节电位器转动。直到标准脉冲与输入脉冲宽度完全相同时,差值脉冲消失时才会停止转动。
机械结构搭建:本作品采用塑料棒与实心铁丝搭建而成,搭好的实物如图:
摄像头模块:本作品采用的摄像头如图所示
本摄像头采用像素为1000万、传感器为CMOS的摄像头。
(2) 软件系统设计
上位机软件设计
本软件采用C#为源码编写,具有计时、控制下位机等许多功能。设计好的上位机界面如下图所示:
我们的上位机软件可以在视频窗口截取我们想要的图片并保存,然后再读取固定位置的颜色RGB值,经过多次取平均值之后,与我们设置的阈值进行比较,得到颜色,再经我们的魔方算法得出需要旋转魔方的过程,发送下位机动作,同时开启计时功能,当解好之后,时间计时停止,得到解魔方时间。
魔方算法
一个魔方可以由一串字符串表示: UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR,其中 U: Up F: Front R: Right L: Left D: Down B: Back
这种表示法是由一个叫Mike Reid的人首先使用的,它表示一个已经被解好的魔方。其实这就是代表了空间坐标系的六个方向。表示法中包含了12组双字母的组合,分别代表了魔方的12个棱,第一组UF就表示Up和Front之间夹角的棱。另外还包含了8组三字母的组合,分别代表了魔方的8个角,每个角由三块颜色组成。看下面的示意图:
输出表示法:
这个程序的输出是这个样子:F- U+ F- D- L- D- F- U- L2 D-FRL之类的字母依然表示六个面,F-表示前层逆时针转90度,U+表示上层顺时针转90度,L2表示左边层转180度。
这里的顺时针和逆时针使用的是“观察者迎着某个面看”的参照系,例如B-是从下往上看的逆时针。
我们将得到的这个解法的程序整理成C#代码程序,并与我们设计的硬件结合,得出解魔方步骤。
颜色识别与处理
根据上面对魔方的规定与表示,我们先将颜色值放到数组当中,这样就可以按照下面的代码来让摄像头读取魔方六个面的颜色。
识别以后,交给上位机处理,再交给下位机执行。
3.2 设计原理
(1) 电路原理图
电路原理图是由kinetis k10主板和电源的转接板,这样我们可以很容易的插入舵机信号线,方便使用,下面是PCB图。
此文档的相关视频来自:http://v.eepw.com.cn/video/play/id/13537