APP下载

基于Arduino的两臂解魔方机器人

2018-09-13李泽萱滕旭阳郑艺彬唐日成徐欢潇

电脑知识与技术 2018年17期

李泽萱 滕旭阳 郑艺彬 唐日成 徐欢潇

摘要:该设计以层先法作为基础算法,将魔方以面、颜色、位置(二维数组)三个基本属性进行存储,通过调用设计的六个基本动作进行“底部十字”“底角还原”“中棱还原”“顶面十字”“顶角面位”“顶角还原”“顶棱还原”七个还原步骤,输出得到还原序列。最后该设计优化了操作面的问题,调用了设计的四套基本动作,最终完成魔方的还原。

关键词:算法设计;单片机算法;解魔方算法;机器人算法

中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2018)17-0248-03

Abstract: This design takes the first method as the basic algorithm, and stores the magic cube with three basic attributes of surface, color and position(two-dimensional array).By calling the six basic movements of the design, the seven restoration steps of” bottom cross” ”bottom angle restoration” ”middle prism restoration” ”top cross” ”top angle surface”” top angle restoration” are carried out. Finally, this design optimizes the operation surface problem, calls the four basic actions of the design, and finally completes the restoration of the Rubiks cube.

Key words: algorithm design; single chip algorithm; magic square algorithm; robot algorithm

在市場和政策的双重利好下,国内机器人市场迅速升温,机器人产业可谓迅猛发展。如今由一开始的多达95%的工业应用扩展到更多的非工业应用。例如做手术,采摘水果,巷道掘进,侦察,排雷,还有空间机器人等等,只要是能想到的,就可以去创造去实现。

机器人技术的发展,它应该说是一个科学技术发展共同的一个综合性的结果,也同时,为社会经济发展产生了一个重大影响的一门科学技术,它的发展归功于在第二次世界大战中,各国加强了经济的投入,就加强了本国的经济的发展。同时,科技的发展也是人类发展的一个必然结果,机器人技术当然也就是科技发展的一项产物。另一方面,这些也是人类生产力需求下的必然结果,随着社会的发展,对这个世界,对自然的更多的认识,在人力不可达到不可完成的对自然改造的情况下,科技发展,机器人技术的发展就成为人类的一个客观需要。该设计将完成既可以用于教育行业作为典型的机器人教学教具,也可用于娱乐业作为展示用和表演用的机器人,还能产生一定经济效益。该解魔方机器人运用颜色识别和数字舵机精确控制等科学技术。对于解魔方机器人,控制系统就如同人的神经中枢,它起着承接算法与机械结构的作用。该文将从算法设计部分进行论述。

1 前期设计分析

首先,该设计需要三个主要部分。第一:魔方信息的采集;第二:魔方还原序列的计算;第三:对舵机的调用。对于第一部分,使用摄像头采集到魔方的二进制颜色信息并将其转换成详细的RGB颜色信息,从而得到魔方的初始颜色状态。第二部分,设计采用层先法计算输出魔方的还原序列。第三部分来说,我们需要更换每一步完成后的操作面以更优的方法步骤来实现对魔方的操作,最终调用四路舵机完成对魔方的还原。

2 层先法的描述以及选用层先法的原因

在还原魔方的算法方面我们选择了层先法,与竞速还原法CFOP相比,CFOP有较少的还原步骤,但需要大量的函数,不便于编程,从可行性方面,最终选用层先法。

层先法,就是指将魔方分为三层:底层、中层、顶层分层复原。用层先法复原魔方一共分七步,分别为:做好底层十字、调整底面角块、复原中层棱块、做好顶面十字、顶角归位、调整顶角位置、调整顶棱位置。做好这七步,魔方就可以成功复原了。

2.1 魔方特性

魔方共有6个中心方块,它们颜色固定并且不会随着旋转而改变,同时拥有12个棱块和8个角块。魔方的展开图如图1:

在调用层先法算法时,遍历所有方块,然后调用以上函数,即可实现魔方的还原。

3 案例参考与对比

3.1 与四机械臂相比

我们在四机械臂的基础上减去了两个机械臂,让还原魔方过程减少对于机械臂的要求,让还原魔方这一过程在更为简易的环境下运行。

3.2 调用舵机的代码

3.2.1 转换至操作面的代码优化

由于与四机械臂相比减少了两个操作面,所以我们对于将目标面旋转至操作面的代码进行了优化。我们对于除了两个操作面以外的其余四个面都定义了将本面移动至操作面的函数,在需要时调用该函数以达到将目标面旋转至操作面的目的。

3.2.2 对机械臂的动作优化

由于原本的算法给出的步骤是基于原始操作面进行移动旋转,这就要求机械臂在每一次完成旋转目标面之后都要还原到原始面再进行下一步操作,这种不必要的动作大大加长了魔方的还原时间。所以我们对于机械臂的动作做了一定程度上的优化,我们在每一次机械臂进行当前的操作之前计算在机械臂完成当前操作之后下一个目标面的位置以及所需旋转的方向,并进行修改替换机械臂的下一步操作。

4 摄像机-算法-舵机之间的连接

我们把还原魔方的过程粗略分为三个部分:

(1)通过摄像机获取魔方的初始状态数据;

(2)通过算法对魔方的初始状态数据进行处理获得解魔方的相应步骤;

(3)将解魔方步骤转化成相应的代码操纵机械臂进行活动。

我们首先将三个步骤分开作为三个独立的项目进行,在三个项目都完成的情况下如何将三个项目串联形成一个完整的解魔方机器人就成为一个新的问题。

对于(1)—>(2)的连接首先我们通过摄像机获取对应面的二进制数组的数据,通过图像解码将对应区域的二进制码求取并均值获得魔方一面上相对应的小方块的RGB颜色数据,最后将每一面的数据集中存放在一个二维数组当中。当算法开始计算并需要获得魔方的初始颜色状态时调用上述相机操作存储的二维数组进行计算。

对于(2)—>(3)的连接中我们将算法中输出的一连串的步骤放入一个二维数组当中,并在操作舵机的程序中将动作步骤部分的代码修改成为调用上述二维数组的内容进行还原魔方的动作,以完成算法与操作舵机程序的连接,来达到从代码到机械臂活动的目的。

5 总结

该文主要阐述了此次针对解三阶魔方的机器人的算法研究。从前期的需求分析进行算法的基该设计到最终选取采用了层先法为基础方法,然后根据机械臂转动的需求对算法进行了步骤优化,从算法的详细编辑再到算法的细节优化,最终实现将本算法应用于解魔方机器人。

参考文献:

[1] Arduino案例实战(卷Ⅰ)/清华开发者书库[M]. 北京: 清华大学出版社, 2017: 42.

[2] Michael Margolis. Arduino权威指南[M]. 杨昆云, 译. 2版, 北京: 人民邮电出版社, 2015.