基于ROS的大棚除草机器人设计

2022-12-01 01:06彭雪斌周联浩陈得日
计算机测量与控制 2022年11期
关键词:里程计除草处理器

彭雪斌,易 艺,周联浩,陈得日,梁 军

(桂林信息科技学院 电子工程学院,广西 桂林 541004)

0 引言

目前,在我国主要的除草方式是人工除草和化学除草,人工除草主要是通过人力或简单的农具进行人工除草,其效率极为低下,且工作量巨大,大大消耗了农业生产中的劳动力。而化学除草主要是通过化学除草剂进行除草,农民在除草过程中往往采用大面积喷洒的方式进行除草,该方法的缺点是对地面杂草目标没有识别能力,大面积的施药导致农药污染[1]。此外,没有针对性的大面积除草,除草效率不高。近几年,我国第一产业劳动力大大下降,虽然我国人口基数很大,但劳动力大多分布在其它产业,而且由于我国人口老龄化问题的产生,农业生产成本也不断提高,所以研究农业机器人具有重要的意义[2]。

农业机械化,智能化是国家农业发展的必然趋势。近年来,中央下发文件中明确指出,现代化农业的发展对于我国的新农村建设是必不可少的重要环节,更是提出了精准农业的新概念,而精准农业中重要之一就是利用现代先进的技术条件减少对自然环境的污染和破环,智能除草机器人的研究可以大大降低劳动成本,同时避免了大面积使用化学药剂对环境造成的污染和对人类健康的危害。将精准农业应用在了农业生产中,可以提高农产品的质量和产量,成为近年来科研人员研究的热点课题[3-12]。

为了精准地喷洒农药进行除草,减少农药对环境的污染和农药在农作物的残留,提高除草效率,设计了一种基于ROS的大棚除草机器人。除草机器人采用Jetson Xavier NX[13]和STM32F103作为控制器,辅以激光雷达、深度相机和三轴陀螺仪/加速度传感器进行路径规划和导航,通过相机采集大棚中的杂草和农作物图像,经过分析、算法处理后获取杂草的位置信息,然后控制机械臂上携带的喷头喷洒农药,进行除草,从而达到除草的目的。

1 系统组成和原理

除草机器人系统由顶层控制模块和底层控制模块组成,其系统组成框图如图1所示。

图1 系统组成框图

顶层控制模块是除草机器人系统的主控制中心,主要负责除草机器人系统的功能控制、信息采集和处理等工作,Jetson Xavier NX处理器A主要控制激光雷达模块和深度相机模块进行工作,分别获取机器人行进路线上的二维平面扫描数据和三维深度图像数据。

底层模块中的STM32微控制器A通过电机驱动模块A和电机驱动模块B控制机器人上的4个电机进行工作。霍尔编码器分别用来检测4个电机的转速,获取机器人运行的速度,经过处理后得到除草机器人的里程计定位坐标。MPU6050三轴陀螺仪/加速度传感器用来获取除草机器人的姿态信息,然后通过STM32微控制器A的串口将除草机器人的姿态信息和里程计信息发送给Jetson Xavier NX处理器A。

Jetson Xavier NX处理器A将除草机器人的姿态信息、里程计信息、二维平面扫描数据和三维深度图像数据进行处理,从而完成除草机器人对大棚的建图和导航功能,可以进行巡垄行驶。

在巡垄的过程中,通过Jetson Xavier NX处理器B控制高清相机工作,不断获取大棚内垄间的图像信息,然后进行图像处理得到杂草的位置信息。Jetson Xavier NX处理器B通过串口发送指令给STM32微控制器B,STM32微控制器B收到指令后控制机械臂工作,使机械臂上携带的喷头到达杂草位置上方,然后控制水泵工作,进行喷药除草。

2 系统硬件电路设计

系统的硬件电路设计主要包括顶层控制模块,底层控制模块的电机驱动电路、MPU6050传感器电路、编码器电路和系统电源电路设计。

2.1 顶层控制模块的硬件设计

顶层控制模块由Jetson Xavier NX处理器、激光雷达、深度相机、高清相机、触摸屏、STM32微控制器、高清相机、水泵及其驱动模块和机械臂组成。其部分硬件设计框图如图2所示。

图2 顶层控制模块部分电路设计框图

主处理器采用的是英伟达Jetson Xavier NX处理器,它采用Volta架构的384核GPU,且加入48个Tensor Core,拥有21TOPS的INT8运算能力,它还拥有Carmel架构的6核CPU,带有10MB的缓存,64位运算能力,最高可以达到1 900 MHz主频,可以同时处理来自多个传感器的高分辨率数据[14]。因此,选用Jetson Xavier NX处理器,可以满足整个除草机器人系统的需求。

深度相机采用奥比中光Astra Pro实感深度相机,深度范围能达到0.6 m至8 m,延迟在45 ms以内,采用USB2.0进行数据传输,主要用于获取垄间的深度图像信息。深度相机能够将具有一定结构特征的光线投射到被拍摄物体上,再由专门的红外摄像头进行采集。它具备一定结构的光线,会因被摄物体的不同深度区域反射,而采集不同的图像相位信息,并能够通过运算单元将这种结构的变化换算成深度信息,以此来获得三维环境信息,深度相机的深度视觉利用RGB图像和深度图像来感知机器人周围空间的三维信息,获得的环境信息丰富。但是深度相机是通过深度图像来感知周围环境的信息,由于图像会受环境光照变化的影响,当环境光照不理想时,深度相机难以获得足够的图像特征匹配点数目,从而导致获取环境图像信息不够准确[15]。

激光雷达采用思岚RPLIDAR A1型激光雷达,主要用于获取机器人行进路线上的二维平面数据。激光雷达通过旋转的反射镜将激光发射出去,利用接收反射光和发射光的时间比较从而完成距离的测量任务,因此激光雷达是通过激光感知机器人周围的环境信息,其单次测量准确,受外界的环境变化影响小,但是数据稀疏,并且只能获得与激光雷达同一高度的二维信息,而对于不在同一高度的障碍物束手无策[15],因此,除草机器人系统采用激光雷达和深度相机来获取除草机器人行进路线的环境信息,将激光雷达和深度相机结合,可以弥补各自的不足,取长补短,解决了在除草机器人行进过程中垄间环境信息的感知问题,提高了除草机器人对垄间环境信息的感知能力,以及同步定位和建图的准确度[15]。

在人机交互方面,除草机器采用了一块IPS电容触摸高清屏。电容高清触摸屏通过HDMI接口和Micro USB接口与英伟达Jetson Xavier NX处理器连接,完成画面的显示和触摸功能。

2.2 电机驱动模块的硬件设计

电机驱动模块采用东芝半导体公司生产的直流电机驱动芯片TB6612FNG来实现。该芯片采用大电流MOSFET-H桥结构,具有双通道电路输出功能,可同时驱动2个电机,TB6612FNG每通道输出最高连续驱动电流为1.2 A[16]。该芯片可以驱动12 V直流减速电机,满足除草机器人的需要。底层微控制器采用的是意法半导体公司32位增强型的STM32F103微控制器作为核心控制器,STM32具有片上资源丰富、功耗低和性能高等优点,最高工作频率能够达到72 MHz,拥有64 k的SRAM,可以满足除草机器人底层控制的功能需求,电机驱动模块直接与STM32控制器连接,STM32控制器通过PID算法调节PWM的占空比,通过TB6612FNG电机驱动模块,达到精确控制各个电机转速的目的,其电路原理如图3所示。

图3 TB6612FNG电机驱动模块电路原理图

2.3 IMU加速度/陀螺仪模块的硬件设计

IMU加速度/陀螺仪模块采用的Invensense公司的MPU6050芯片来实现[17]。该模块用来获取除草机器人的姿态信息。在实验过程中得知:如果仅使用一种里程计信息,其存在累计误差,随时间的推移和轮子打滑等问题,会导致除草机器人在位姿的估算定位中,存在较大的误差。通过将IMU加速度/陀螺仪模块的数字运动处理器实时输出机器人的角速度,经过积分得到姿态信息,然后结合轮式里程计、视觉里程计[18]等多种里程计信息,可以更准确地得到机器人位置和姿态[19]。IMU加速度/陀螺仪模块的电路原理图如图4所示。

图4 IMU加速度/陀螺仪传感器电路原理图

在除草机器人上安装霍尔编码器,用来实现电机转速的测量。设电机测速编码数为M,在一个时间周期t(单位为s)内,测量得到的脉冲数为N,则由公式(1)可以计算得到除草机器人上每个电机的转速[20]。

(1)

将除草机器人的轮子半径r和电机的减速比(1∶50)代入公式(2)进行计算,得到除草机器人每个轮子的速度。

vr(vl)=100*n*(2*π*r)/50

(2)

式(2)中左车轮速度为vl,右车轮速度为vr。

除草机器人采用4个车轮差速运动的模型,左侧前后两个车轮的速度相同,右侧前后两个车轮的速度相同,因此将除草机器人左侧车轮速度为vl,右侧车轮速度为vr,左右车轮间距为L,代入公式(3)、公式(4)和公式(5)可以分别求得除草机器人的线速度v、角速度ω和旋转半径r。

(3)

(4)

(5)

将除草机器人的角速度ω、线速度v对时间进行积分,求得机器人的移动距离,进而得到机器人的位置信息。

3 系统软件设计

系统的软件设计主要由顶层控制模块的处理器程序设计和底层控制模块程序设计组成。

3.1 顶层控制模块的处理器程序设计

在Jetson Xavier NX处理器中安装了ROS机器人操作系统,即 Robot Operating System它是一种适用于移动机器人、无人驾驶等领域的开源操作系统。它是衔接在真正操作系统和诸多实体传感器之间的一个特殊的中间平台。ROS有一套标准信息定义格式,包括集合概念信息定义(如:位姿、变换、矢量等)和传感器信息定义(如:激光雷达、深度相机等)。

ROS 操作系统包含进程消息传递、底层控制和包的管理等基本服务。在除草机器人研发中,可以利用ROS 包含的开源功能包,像搭建积木一样搭建功能模块[19]。ROS 包含了服务、话题和参数服务器等通信方式[21]。

ROS操作系统主要处理来自激光雷达、深度相机、底层控制模块反馈的轮式里程计信息、高清相机等数据信息,从而进行位置的测算、建图和导航,以及杂草图像的处理和识别,进而控制机械臂喷洒农药。其软件系统架构图如图5所示。

图5 上层软件系统架构图

激光节点在建图、定位和导航过程中负责提供和发布雷达数据,相机节点主要负责在定位和建图过程中读取和发布图像数据,为机器人提供丰富的周围环境观测数据。USB通信节点通过与STM32底层控制器进行里程计等数据的交换,建图节点通过订阅里程计、图像、深度相机等数据完成二维栅格-三维点云地图的构建,同时输出机器人的位置状态,主节点主要负责管理其他各个节点的运行,为方便软件调试,采用了Rviz(三维可视化工具)[22]作为可视化界面进行软件的调试。

除草机器人系统在进行建图时,激光节点和相机节点分别发布激光点云数据话题和图像的数据话题,建图节点会订阅激光点云数据话题和图像的数据话题并在节点内部进行处理,主要为了激光点云的特征提取和匹配以及根据标定的信息将激光点云映射到相机坐标系下,同时会在节点内部进行图像深度信息的提取和匹配特征点获得其位置和映射的关系,并同时订阅USB通信节点发布的里程计数据话题,利用匹配好的激光视觉数据进行位置姿态的测算,随后进行大范围的点云建图以及回环检测。启动ROS系统中的Rviz(三维可视化工具)节点,Rviz节点通过订阅机器人位姿数据和地图数据,为软件的调试提供效果展示[23]。

除草机器人通过高清相机采集作物垄间杂草的图像数据,随后将图像数据传送给Jetson Xavier NX处理器B进行图像处理,在图像处理过程中,首先是将图像数据进行归一化处理,随后将图像数据的颜色空间转化为HSV颜色空间,利用阀值分割与滤波处理提取出绿色的像素数据,然后绘制出绿色像素数据矩形边框并计算其面积大小,滤除不符合面积阀值的矩形,计算出符合面积阀值的矩形空间中心坐标,即为杂草的像素坐标,接着再转化为世界坐标下的三维坐标点,并利用三维立体空间中的两点间距离公式计算出除草机器人与杂草间距离,然后控制机械臂定点喷洒农药。图像处理程序流程图如图6所示。

图6 图像处理流程图

3.2 底层控制模块程序设计

底层控制主要由STM32F103微控制器作为核心控制器来完成控制工作。在底层控制模块中,STM32采用片内定时器产生不同占空比的PWM信号送给电机驱动模块驱动除草机器人电机进行工作,然后使用片内的定时器来获取霍尔编码器输出的脉冲信号,经过处理得到除草机器人电机的转速。同时控制IMU加速度/陀螺仪模块工作,获取IMU加速度/陀螺仪模块的数据,然后通过串口发送给Jetson Xavier NX处理器A。STM32微控制器通过串口接收来自Jetson Xavier NX处理器A的命令。底层控制软件实现流程图如图7所示。

图7 底层控制软件流程图

在底层控制模块程序中,程序首先进行系统的初始化,比如定时器、串口中断、编码器和MPU6050模块的初始化等,然后程序在定时器的定时下以100 Hz的频率执行,读取出MPU6050模块中的数字运动处理器DMP(digital motion processor)解算的俯仰角、横滚角和航向角等数据,然后再以50 Hz的频率将编码器采集到的数据结合机器人的运动学模型,经正向运动学解析,计算出机器人的运动线速度和角速度,并对其在时间上进行积分,计算出机器人里程计坐标系下的坐标位置,接着通过串口向Jetson Xavier NX处理器A发送陀螺仪角速度、加速度、姿态角度、里程计坐标、里程计坐标变化量和编码器的当前值和目标值等数据,当Jetson Xavier NX处理器A通过串口向底层控制模块中的STM32微控制器A发送数据时,底层控制程序会先判断串口接收的数据是否符合命令格式,如果符合,就将接收到的数据进行存储,然后结合除草机器人的运动模型,经逆向运动学结算,计算出每个电机的速度,接着在通过PID算法调节控制4个电机的PWM信号的占空比从而实现控制除草机器人达到预期的速度。其PID算法的框图如图8所示。

图8 PID算法框图

图8中,r(t)为设定状态量,y(t)为实际状态量,e(t)为当前误差,u(t)为控制器输出。PID是一个作用于闭环系统的控制算法,由比例环节(Р)、积分环节(Ⅰ)、微分环节(D)共3个部分组成[24]。

up(t)=Kp*e(t)=Kp*[r(t)-y(t)]

(6)

(7)

(8)

(9)

式(6)为比例环节公式(Р),比例环节有误差存在时才会产生输出up(t)。比例调节的过程是成比例地反应控制系统的偏差信号e(t),偏差一旦产生,通过Kp*e(t)产生控制作用以减小偏差。

式(7)为积分环节(I)公式,积分环节的输出ui(t)与系统的误差累加和有关。当系统存在误差时,积分环节将误差累加后起调节作用,直到误差为0后控制器稳定输出。积分环节可以消除系统比例环节稳态误差,一般常用PI调节,即up(t)+ui(t) ,使得实际状态量等于设定状态量。

式(8)为微分环节(D)公式,微分环节的输出ud(t)与系统的误差变化率有关。根据现在的趋势去判断未来,可以阻碍未来可能出现过度的调节,微分环节可以反应偏差信号的变化规律。

式(9)是整个PID控制器的输出,即3个环节的输出求和[25]。

4 系统功能实验测试

为了验证除草机器人系统的除草效果以及其工作的稳定性,在现有的实验室条件下,在实验室构建模拟测试环境,选用白菜作为垄间作物植株,白菜的总数量为30颗,排列成3列即两垄的形式,白菜排列的行间距为60 cm,株距为60 cm,垄长为5.4 m,适合机器人在行间行走,杂草的株高在2~10 cm不等。为验证除草机器人喷药作业的实际喷药效果,采用水分检测试纸进行测试观察。在测试过程中,除草机器人系统调用事先建好的离线地图,在除草机器人的操作界面规划好路径,除草机器人沿着垄间行走。在正常光照条件下,除草机器人进行喷药作业,随后通过统计与分析水分检测试纸的颜色变化情况,计算出除草机器人的喷药成功率,实验结果如表1所示。

表1 除草机器人的喷药作业实验结果

5 结束语

本文基于Jetson Xavier NX处理器搭载ROS系统,结合激光雷达、深度相机和高清相机等外部设备,采用图像识别处理技术、建图和导航技术、多传感器融合技术,设计了一种大棚除草机器人。本文介绍了除草机器人的系统组成原理,软硬件实现方法,并对除草机器人进行功能测试,实验结果表明,在正常的光线条件下,该除草机器人喷药除草效果良好。

猜你喜欢
里程计除草处理器
室内退化场景下UWB双基站辅助LiDAR里程计的定位方法
玉米除草、追肥 记住这些“黄金时段”
除草记
小麦播种后 除草最佳时间别错过
里程计技术发展综述
SINS/OD组合导航系统转弯误差补偿*
ADI推出新一代SigmaDSP处理器
除草新招
火线热讯
基于捷联惯性导航的组合导航系统研究