1、图像采集处理
我们将OpenCV软件安装在安卓手机中,对手机拍照后的图像进行辨别处理以及定位处理,通过蓝牙模块,将信号传给单片机。
示意图:
(1)、利用手机进行拍照、识别的原因:
我们查阅相关资料,找到了蓝牙助手v1.0这个软件,它是一款手机软件,实现了对于安卓手机蓝牙的基本操作以及安卓手机与单片机的通信。
安装了次软件的安卓手机就可以借助HC-05蓝牙串口模块,控制单片机等系统,并可以接受从单片机等传送来的数据。
利用这个软件的原因是因为此软完成了蓝牙串口协议的设置,开发者使用时可以免去复杂的设置。
(2)、所用设备HC-05蓝牙串口
实物图:
模块与单片机的连接方式:
参数设置:
工作模式:从模式;波特率:9600bps;设备名称:HC-05;配对密码:1234,如按默认参数则无需以下个性设置。
所有设置好的参数掉电都可保存):
1)、给模块提供合适的工作电源,带底板模块的工作电源为3.6~6V,不带底板核心模块为3.3V
2)、正确连接数据线,单片机的TXD和RXD必须与蓝牙模块的RXD,TXD交叉连接
进入AT命令模式有两种方法:
a.蓝牙模块工作后拉高KEY脚电平进入AT模式1,LED状态为快闪,此时设置AT命令使用的波特率与通信时波特率一致,如通信时使用9600则此时设置AT命令的波特率
也应该选择9600
b.在模块上电的同时也令KEY脚为高电平,则进入AT模式2,LED状态为慢闪,固定使用38400,8,N,1的通信格式设置参数进入AT模式后只有保持KEY脚为高电平才能使用全部的AT命令。
AT命令后面必须有回车换行符。
如果使用SSCOM则在字符串输入框输入“AT”并勾选“发送新行”即可。
(3)、手机与蓝牙从机模块的连接及通信测试:
首先打开手机蓝牙,然后用手机的蓝牙管理程序扫描蓝牙设备,这时会找到蓝牙从机模块,然后进入蓝牙助手v1.0这个软件,在此软件中再次查询蓝牙从机模块,这时点击连接,会提示输入密码,例如模块初始配对码为1234。
输入后,会提示配对未连接。
此操作只要进行一次即可被手机记住,下次自动配对。
因为蓝牙设备是串口设备,需要打开端口才可以连接,这时模块的灯还是闪烁的,当你打开端口后,灯才会变成连接成功状态。
下一步进行测试,在蓝牙助手v1.0中,输入字符后点击send,这时数据就会通过蓝牙发送到蓝牙模块,并从模块的TXD发出,此时单片机连接到模块的TXD-RXD进行数据通信了。
(4)、如何利用opencv软件进行物体的识别区分以及定位
识别特定的物体,可以用模板匹配的方法,大致说来就是先拍一张模板,再在图像里检测目标,模板匹配对比的是图像的像素值。
我们设想的具体方式为:
1)、在比赛前,分别拍摄架子上的物品(第一层和第二层),作为OpenCV图像库中的模版图像(patch);(其角度为正面照,若增强其区分的精确度,则可多角度完成一个物品的模版照)
2)在机器人启动前,我们将要拿去的东西输入进机器人;
3)、寻找一幅图像的匹配的模板,OpenCV已经为我们集成好了相关的功能,具体函数为matchTemplate;
4)、比赛时在现场分5次拍摄图像(每四个物品一次拍成),最中间无巡线部分,采用相隔1S的时间段的频率进行拍摄,知道拍摄出的图片物品在正中间即可,这就确定了物品的位置。
5)、接下来就是在所拍摄的图像中寻找和模板图像(patch)最相似的区域。
OpenCV提供给我们的函数matchTemplate。
该函数的功能为,在输入源图像Source image(I)中滑动框,寻找各个位置与模板图像Template image(T)的相似度,并将结果保存在结果矩阵result matrix(R)中。
该矩阵的每一个点的亮度表示与模板T的匹配程度。
然后可以通过函数minMaxLoc定位矩阵R中的最大值;
6)、手机根据找到的物体的位置,生成指令,并通过串口传递给单片机,最后机器人则针对匹配度最高的物品进行拿取操作。
通过查找资料,OpenCV的函数库中能够应用于匹配的方法有一下几种:
CV_TM_SQDIFF 平方差匹配法,最好的匹配为0,值越大匹配越差
CV_TM_SQDIFF_NORMED 归一化平方差匹配法
CV_TM_CCORR 相关匹配法,采用乘法操作,数值越大表明匹配越好CV_TM_CCORR_NORMED 归一化相关匹配法
CV_TM_CCOEFF 相关系数匹配法,最好的匹配为1,-1表示最差的匹配CV_TM_CCOEFF_NORMED 归一化相关系数匹配法
前面两种方法为越小的值表示越匹配,后四种方法值越大越匹配。