解魔方机器人颜色识别遇到的问题
一.关于解魔方机器人的步骤(上位机需要做的事)
1.上位机连接蓝牙
2.下位机通过蓝牙,向上位机发送拍照信息
3.上位机执行拍照,每隔一定时间自动拍照
4.上位机进行颜色识别,将六个面的颜色汇总并进行算法计算,计算出一个可供下位机解析的公式
二.遇到的问题
1.颜色识别的坐标找不准。我们颜色识别采用的是java根据图片坐标读取RGB,没有采用opencv数据图像处理,因此,需要根据坐标识别颜色,在处理中,总是找不准魔方的准确坐标,导致识别有误
解决方法:
将读取的六张图片拿到电脑上,打开方式选择画图,发现下面现实的像素是4608×3456,一定要注意这个像素,不同的手机分辨率不一样,图片像素也不一样,一定要放到电脑试一试,之前一直以为是1024×768,
导致一直读取不正确。然后,将鼠标分别放在魔方的九个点上,获取x,y值。
2.找到坐标以后,颜色识别应该没有什么问题,但是,六次拍照的顺序是有要求的,上下,左右,前后,放置时要注意不能放反。如下图,识别是从1到9的顺序识别,但是如果你换个角度放,顺序可能是369258147,如果确定了顺序,其他面也要如此,不能换角度,识别会出错(下位机舵机转动顺序的工作,测试时要注意)
3.所报的几种错。
Error 1:
魔方颜色识别错误,统计时发现每种颜色计数不止9个,就会报错Error 1,这个错误很多,因为魔方机器人对魔方要求高,最常见的是红色和橙色傻傻分不清楚,解决方法是换色准高的魔方
Error 2:
Not all 12 edges exist exactly once,就像上面我说的,可能顺序出现问题
ERR 3:
Flip error: One edge has to be flipped ,魔方错误,一个棱块需要被翻转
ERR 4:
Not all corners exist exactly once,魔方错误,不是所有的棱块都出现一次,这种错误一般也是颜色识别错误。
ERR 5:
Twist error: 一个角块需要被旋转,一样是魔方错了,不过这种情况下,魔方机器人会先去还原,一般都是就可以还原到只剩那个角块
ERR6 :
Parity error: 两个角块或者两个中间的棱块需要交换,一般不会出现这个错误
三.识别结果