用树莓派机器人实现更智能的垃圾分类搬运

2023-03-07 06:22杨广峰
电脑报 2023年8期
关键词:步数树莓置信度

杨广峰

我们在2022年第50期《用树莓派六足机器人实现垃圾分类搬运》中已经实现了基于树莓派的智能垃圾识别搬运机器人,能够智能识别垃圾筒,自动计算机器人与垃圾筒的距离,从而实现智能搬运的功能。但是这个实例中机器人的初始位置必须在目标物体正前方,如果把机器人放在任意位置,机器人简单的直线前进就不能达到合适的夹取位置,实用场景非常有限。

本文将给原来的程序增加智能识别任意位置垃圾桶的功能,增加动态自动纠偏功能,打造出一个任意场景下的智能垃圾识别搬运机器人,能自动调整机器人的运行方向、前进和夹取,从而实现任意场景下的智能搬运功能。

一、树莓派实验器材及连接

实验器材:树莓派六足机器人一套(六足机器人一个,树莓派4B一块,古德微扩展板一块,电机驱动板一个,USB摄像头一个),目标物体两个(红色、蓝色海绵正方体各一个,边长为10厘米)(图1)。

二、创建物体检测模型

创建物体检测模型的步骤与前例相同。

1.登录网站,开始“物体检测”

首先,登录古德微机器人网站(http://www.gdwrobot.cn),选择“物体分类”进入“远程使用树莓派摄像头进行物体分类”页面。

2.采集并标注,训练与验证

使用拍照功能,不断变换机器人的位置与角度,进行目标图片添加,完成目标图片的采集工作。这个训练过程中目标图片采集得越全面,后期识别的效率和准确度就会越高。然后,手工完成对采样的目标图片的物体的标注工作(图2)。

接下来,使用“开始训练”按钮对采集的图片进行训练。最后对预览图片中的物体进行分类验证,目标物体的分类识别置信度在80%以上,即说明训练模型具有较高的应用价值。

3.下载训练模型文件,保存至树莓派中

拍照采集与训练验证均完成之后,点击右下角的“下载树莓派上使用的模型”按钮,很快就会有“模型转换下载完成”的提示,这时,相关文件已被下载到树莓派的/home/pi/model/object_detection目录下,模型文件为model.tflite,对应标签文件为labels.txt。通过Windows的远程桌面连接进入树莓派进行查看,labels.txt的文件包含两行内容,依次对应训练模型的分类名称:“红色、蓝色”。

三、六足机器人实现搬运编程

本例中,机器人面向前方进行拍照,自动寻找并识别目标物体,读取物体的位置数据,计算物体的位置偏差,根据情况进行相应的偏差处理,机器人自动转向,按照步数前进至物体前方,并实施搬运。

1.拍照与检测函数

使用机器人摄像头对前方拍照,调用物体检测模型对照片进行检测,返回检测结果列表(图3)。

2.读取检测结果函数

这个函数是从检测结果列表中找到我们的

目标(红色物体)的名称和置信度。

通过判断检测结果列表的长度是否大于0来区分有没有检测结果,没有检测结果则需要跳出判断重新检测;如果有检测结果,则对检测结果进行下一步的处理。首先,循环读取检测结果列表中的每一个检测结果字典,分别读出这个检测结果字典中的置信度和物体名称。然后判断物体名称是否红色物体,如果符合条件,则找到了我们的目标名称和置信度,中断循环,准备下一个环节(图4)。

3.计算位置偏差函数

首先,从检测结果字典中获取检测框的位置列表,分别获取检测框的左上和右下两个点的横、纵坐标值。计算出检测框的物体横向像素位置(横向中心),与图片中心位置相比较获取物体的位置偏差。这里使用的公式为:位置偏差=320-物体横向位置。因为摄像头拍出的照片是640×480,所以照片的横向总宽度是640,照片的中心位置是320(图5)。

4.位置偏差处理函数

获取了物体的位置偏差,接下来就需要控制机器人进行相应的旋转,以实现机器人能够锁定目标物体进行前进。考虑到偏差较大的情况,我们还需要对位置偏差做偏差除以8的缩放,并且对偏差值进行了一定范围(从负10到正10)的限制。偏差处理结束后,机器人按照位置偏差的角度进行相应的旋转,最后将置信度设为0,完成本次拍照的识别纠正工作(图6)。

5.计算距离与步数函数

首先,计算出检测框的物体横向像素大小(横向长度),根据计算公式得到机器人与目标物体之间的当前距离。然后,计算出机器人到达物体所需要的前进步数。最后,控制机器按照步数前进(图7)。

6.智能搬运物体

首先,判断机器人是否到达最佳夹取位置,如果条件满足,开始夹取物体。然后,控制机器人先向后移动,再左转90度,再向前,到达指定的投放位置。接着,控制机器人放下物体完成垃圾的智能搬运工作,最后将变量步骤设为0,标志着整个搬运工作全部结束(图8)。

7.主程序

首先,控制摄像头两个舵机,调整其最佳拍摄角度,设置机器人的最初姿态,将机器人任务的开关变量“步骤”设为1,完成对机器人的初始化。然后,建立一个重复当真的循环,实现根据任务反复拍照、识别、纠偏、前进,直至到达最佳夹取位置,实现夹取任务。目标物体有效识别后,如果偏差较大,进行合适的偏差缩小,机器人自动旋转至目标物体的正前方,根据距离计算出步数,并进行有限步数(1-10步)的前进,如果达到了最佳夹取距离,机器人完成夹取任务。最后,为了解决因为目标物体不在机器的前方的原因造成的识别为空的情况,我们给机器人设置了一个识别不成功时,原地自行旋转30度的操作,自动寻找识别(图9)。

经过多次测试,机器人在任意角度、任意位置时均能成功夹取目标物体,实现了垃圾的智能搬运的成功升级。

本次我们通过位置偏差的计算和处理,配合有限步数的前进实现了机器人位置的动态调整,通过重复循环实现了机器人多次前进与调整,使得机器人在反复拍照识别后逼近目标物体正前方,再现了机器人处于目标物体正前方的应用場景,实现了复杂情况下的机器人的智能搬运。

大家可以在这个例子的基础上进一步思考多个搬运任务的编程实现,也可以结合其他场景,给物体动态调整赋予更多的实际意义。

猜你喜欢
步数树莓置信度
硼铝复合材料硼含量置信度临界安全分析研究
楚国的探索之旅
基于树莓派的骑行智能头盔设计
微信运动步数识人指南
正负关联规则两级置信度阈值设置方法
基于树莓派的远程家居控制系统的设计
国人运动偏爱健走
响应面法优化红树莓酒发酵工艺
置信度条件下轴承寿命的可靠度分析
欧盟:速冻树莓比鲜食树莓市场更好