赞
踩
点击选项,打开网络服务。
图 3-3 网络服务
并设置端口号为8081后程序会自动运行并将数据传递给下位机。
图 3-4 设置端口号
本二轴魔方机器人利用四个单目摄像头进行图像识别,如图4-1所示。由上位机OpenCV读取摄像头采集到的图像,采集魔方颜色。
图 4-1识别成功控制台输出
同时采集六面图像数据,夹爪采用亚克力板的透明设计可获54块颜色数据,直接完成魔方状态数据获取。
摄像头直接获取的图像为BGR格式,由互不干扰的三原色通道数据构成,其源自一定光强下的特殊光波,而在不稳定的光照强度下,每一通道数据都将产生未知变化,影响颜色读取准确度。
但通过降低摄像头曝光度以及选择环形灯进行补光,令光照强度达到预定范围,可完成,再通过深度学习建立CNN模型,进行色彩识别,也使得色彩识别程序更具有泛化性,提高整体鲁棒性。
上下摄像头获取图像为相互成90度的两个魔方面,因距离及光照缘故,若直接圈定区域识别成功几率较低,对畸变图像进行透视变换,如图4-2所示,同时由延展方向,补偿光强,降低外部影响,提高稳定性,基本达成识别目标。
图 4-2上方摄像头透视图
为完成整体解析算法,选择C++作为主体运算平台,同时由OpenCV库完成图像矫正及定位,然后通过深度学习识别色块,将色块按顺序发送给cubeExploer,得到还原步骤,将其通过坐标转换转为机械步骤后,通过串口将结果发送至单片机STM32,由下位机完成魔方还原,其总体时间约为7-9s。
1.从摄像头到Cube Explorer
由于所使用的Cube Explorer软件有固定的输入要求如下:
http://127.0.0.1:8081 /?bdrfuululululrddrubbflfbdbbfdrrdbdurlrudlffurfrdfblbfl,其中的udfblr分别对应up,down,front,back,left,right,也就是魔方。
例子如下图:
(http://127.0. 0.1:8081/?bdrfuululululrddrubbflfbdbbfdrrdbdurlrudlffurfrdfblbfl)在“?”之前的内容都会被程序忽略。在图4-3所示的例子里,由于U面的中心块是蓝色的,因此所有的蓝色色片所在的位置都应用“u”来表示。
图4-3 Cube Explorer所需序列
按照up => right =>front => down => left => back的顺序进行序列编写,每个面的色块都是从第一排到最后一排,每一排从左到右排序的,我们详细的用up(1)这个面(如图4-4)做解释:
顺序为:白色 => 绿色 => 红色 => 黄色 => 蓝色 => 蓝色 => 橘色 => 蓝色 => 橘色,根据上面我们讲过的颜色与面色对应关系【蓝(u)、绿(d)、黄(f)、白(b)、橙(l)和红(r)】可知,该序列为bdrfuulul。
图4-4 网络服务所需色块排列顺序
那么如何将我们从摄像头获取到的色块的颜色与Cube Explorer所需的色块序列对应起来呢?通过我们获取的中心色块来判断。
假如中心色块的颜色为蓝色,那么他对应Cube Explorer的up面,我们就将该面我们识别到的九个颜色作为up面的色彩序列。
2.从Cube Explorer到机械步骤
图 4-5上方摄像头透视图
从上图可知,我们的摄像头上方有两个面:
我们分别命名为up left和up right,摄像头下方有模仿的两个面,我们分别命名为 down left 和down right,前后两个面分别命名为front和behind,他们与Cube Explorer的面的对应关系如下图:
图 4-6算法命名与Cube Explorer的对应表
图 4-7 电控与视觉对应表
http://127.0.0.1:8081/?bdrfuululululrddrubbflfbdbbfdrrdbdurlrudlffurfrdfblbfl数据传递给Cube Explorer后我们可以得到其给的求解序列如下:U2BU2L2DL’B’D’L’B2D’BUD’F2U’L2U’F2UF2(21f)。
以U,U2,U’为例子,U表示魔方的上层顺时针旋转90度,U2表示旋转180度,U’表示逆时针旋转90度。因此我们需要获得电控如何进行上转90,上转180和逆时针转90,因此我们列出该对应表如上图。
需要注意的是,图4-7描述的内容,相当于魔方坐标转换的过程。可将上图转换为哈希表来简化运算。
(1).二阶段算法解魔方:
在第一阶段,找一个角块和棱块的色向会被限制,且原本属于 UD 夹层的棱块 必须被转至该夹层上的目标状态。
在第二阶段,算法通过执行被允许的转动,将已属于 G1 子群的魔方还原。解法将还原位于U 面和D面的8个角块、8个棱块的位置,以及 UD 夹层中四个棱块的位置。启发式函数 h2(x,y,z)仅估计到达还原态所需的步数,因为 G1 群中的非常多。 当算法找到第一个完整解法后并不会立即停止运算,而是对第一阶段其他非最佳(最少步)解法进行第二阶段运算。当第二阶段的 步数达到 0 时,完整解法便是最少步解法,算法至此停止运行。
(2).坐标转换和剪枝算法以及数据库解决机械步骤转换:
整体使用坐标转换解决机械步骤转换,我们将24种魔方状态,3种机械臂状态以及18种的旋转方式进行求解。
下位机采用STM32作为主控,控制电机及电磁铁,完成魔方还原。其可通过外部串口与上位机通讯,接受执行指令并完成。魔方还原基本步骤:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。