基于ROS农田打药机器人的设计与研究

2019-09-20 12:32陈淑瑜杨豪韦德泉孙亚宁
枣庄学院学报 2019年5期
关键词:循迹串口小车

陈淑瑜,杨豪,韦德泉,孙亚宁

(1.枣庄学院 机电工程学院,山东 枣庄 277160;2.枣庄学院 光电工程学院,山东 枣庄 277160)

0 引言

机器人技术近些年得到了快速的发展,智能种菜机器人、林下作业机器人、扫地机器人等逐渐被应用于生活中[1~7].近年来,国家高度重视乡村振兴,并加大对农村的投入力度[8],为了减轻农民负担,减少农药对人身体的危害,本文设计制作了一款农田打药机器人,并且进行了测试,研究结论为农田打药机器人的制作提供参考.

1 硬件设计

1.1 主体模块

主体模块选用了履带式机器小车底盘,如图1履带式机器小车采用了12V的直流电机,铝合金的金属骨架,其履带式的车轮设计适用于打药机器人的实际工作环境.履带是价格低廉的塑料履带,而且防滑功能较好.履带小车适应野外的各种复杂环境,能够较好的实现其驱动目的.

图1 履带式机器小车 图2 光电传感器

1.2 控制模块

控制模块选用了STC15F2K60S2单片机.此单片机是8051单片机的增强版,STC15F2K60S2单片机比传统的51单片机运行速度快很多,在相同时钟下,最快可以比51单片机快12倍.无需外接最小系统电路.内部集成多路PWM控制器,可以同时独立输出多路PWM,具有两个串口,内部集成时钟电路,时钟频率可以进行配置.

1.3 避坑模块

用光电开关传感器作为避障模块,如图2所示,光电开关传感器通过前面的遮光程度来实现避障的,传感器上面有两个小灯,一个灯发射红外线,照到物体后,会发生漫反射.如果另一个灯收到,就会给一个低电平.

1.4 循迹模块

基于OpenCV视觉库的视觉循迹.OpenCV(open source computer vision library)是一个开源的计算机视觉库,可以在市面上流行的主流操作系统上运行.视觉库里面提前装了许多图像处理算法的函数,所以它十分的高效.视觉循迹是使用摄像头采集车辆前方行走路径的图像,进行图像识别,并判断小车的位置.视觉循迹技术的特点是它具有较为准确的定位而且技术成本较低.视觉循迹对于各种复杂的工作环境都可以达到稳定循迹的效果.

1.5 打药模块

机械式打药机的工作原理是根据伯努利原理制做而成.伯努利原理所说的是压强越大,液体的流速就会越大;而压强越小,流速就会越小.设计在机器小车上安装一个小型的抽水泵,加一个塑料软管,将药液喷洒出去.再安装一个舵机,实现药管左右晃动打药.

2 软件设计

2.1 系统框图

图3 系统框图

2.2 PC端程序设计

本设计运用Linux Ubuntu 16.04发行版,在Linux上运用了ROS kinetic发行版.编程语言用的是Python.ROS的通信机制:ROS(robot operating system)是一个开源的机器人软件平台.ROS系统最大的特点就是它的发布-订阅式的框架结构.正基于此,该设计选择了ROS系统来作为农田打药机器人的控制操作系统.OpenCV作为视觉节点,其它传感器采集的信息通过MCU处理后,经总线发送至PC端,PC端通过专门的节点进行处理.各节点经分析综合,给出机器人的运动方案,再经总线传给机器人驱动层.为了提高系统的稳定性,避免因为串口失效引起系统崩溃,我们将计算机视觉部分与串口通信部分分离.

2.2.1 视觉节点程序设计

首先导入OpenCV图像处理库,创建摄像头对象并打开摄像头,然后读取摄像头进入主循环,在主循环中首先判断摄像头是否成功读取到了摄像头数据,如果数据正确读取就对图片进行处理,如果没有成功获取就继续读取.图片处理中首先对图片进行高斯滤波,然后是颜色空间变换,将原本的RGB转化为SVH,这样使得程序更好的对图片的色彩以及饱和度信息进行判断和分类,然后对图片进行二值化,二值化后的数据只有黑白二种颜色,通过调用函数找到二值图像中所有的连通域并通过编写算法找到最大连通域,画出最大连通域的最小外接正四边形并找出正四边形的几何中心,我们定义该点为小车下一步要达到的目标点.最后通过topic广播出去.流程图如图4所示.

图4 视觉节点流程图

2.2.2 串口收发节点程序设计

该部分主要负责订阅监听来自视觉节点的话题,并根据话题内容决定小车的走向,并通过串口发送给小车.该部分原可以放入视觉节点中,但考虑到如果结点因为两个设备中一个设备故障而失效时可能会带来另一个设备被占用而无法重启节点,所以添加此节点.

在该节点中首先导入串口处理函数库并打开对应串口,然后编写监听的回调函数,最后注册监听来自视觉节点的话题,进入等待阶段.当受到订阅的消息时系统会自动调用回调函数,在回调函数中首先对接收到的消息进行判断,然后得出小车应该直行、左转或者右转,最后把小车方向控制信息通过串口发送给小车.该部分程序流程图如图5所示.

图5 控制节点流程图 图6 单片机流程图

2.3 单片机程序设计

实时采集传感器并将传感器采集到的信息经处理后上传,并且接受来自PC端的命令,控制电机,来完成PC端想要机器人完成的动作.该部分程序流程图如图6所示.

2.4 实地调试

调试地点选择了足球场的草地,模拟了一条白线为农田的路径,也就是机器人运动的路径.经实地调试发现,实现了用ROS系统控制机器人的驱动,机器人根据PC端发出的指令进行前进后退以及转弯.机器人会根据前方安装的光电开关传回来的路径信息进行反馈避障,并根据视觉摄像头进行视觉循迹,通过在机器人身上安装的打药机械装置完成农田打药工作.

图7 视觉循迹图 图8 ROS操作界面图

图9 整体实物图

3 结论

基于ROS操作系统的农田打药机器人是将传统的农田打药机械装置和循迹避障智能车相结合,能够通过电脑操作从而控制机器人进行农田打药.该设计将传统的循迹智能车进行了优化,将传统循迹智能车所采用的超声波传感器换成了基于OpenCV视觉库的摄像头视觉循迹,此改良能够进一步的提升机器人的准确定位,利于人们对于机器人的控制.基于ROS操作系统的农田打药机器人能够大大的提高农田打药工作的效率,并且省时省力,能够很好的减轻人工负担.

猜你喜欢
循迹串口小车
基于DFT算法的电力巡检无人机循迹检测系统设计
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
浅谈AB PLC串口跟RFID传感器的通讯应用
大车拉小车
自制小车来比赛
浅谈基于机器视觉和姿态检测的循迹智能车
刘老师想开小车
两轮自平衡小车的设计与实现
船舶电子设备串口数据的软件共享方法
智能差分循迹小车设计