掌桥专利:专业的专利平台
掌桥专利
首页

一种检测禽类生命体征的智能小车及其云端管理方法

文献发布时间:2023-06-19 16:09:34



技术领域

本发明涉及嵌入式控制领域,特别涉及一种检测禽类生命体征的智能小车以及云端管理方法。

背景技术

OpenCV(Open Source Computer Vision Library),是一个基于(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows 和 MacOS 操作系统上,能实现图像处理和计算机视觉方面的很多通用算法。

信息革命的浪潮推动了现代电子信息技术的发展,人工智能技术慢慢渗透于人们的生活和工厂的生产当中。近年来,国家一直在大力支持畜牧业发展,环保高效的大型养殖场成了国家重点支持的对象。信息时代的环保高效离不开科技的支撑,目前投入畜牧业使用的信息技术包括精确投食、自动投食、环境监测等等,大多利用通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,连贯监控饲养管理、防疫、无害化处理等环节,帮助养殖场实现全过程动态化管理。然而,在利用智能设备检测禽类生命体征方面的研究却寥寥无几。如何在减少人畜接触、保障工作人员安全的前提下,获取禽类的生命体征状态,判断禽类的健康状况,是目前急需解决的难题。

发明内容

本发明的目的是克服现有技术缺陷,提供一种检测禽类生命体征的智能小车及其云端管理方法,能够减少人畜接触、保障工作人员安全的前提下,获取禽类的生命体征状态,判断禽类的健康状况。

本发明的目的一方面是这样实现的:一种检测禽类生命体征智能小车的云端管理方法,其特征在于,包括以下步骤:

步骤1)云端通过嵌入式控制板下达巡航指令给智能小车,小车绕着养殖场随机运动;

步骤2)通过智能小车的压电式传感器进行数据采集,通过编码器脉冲信号判断小车是否碰撞到障碍物;

步骤3)智能小车在行进路途中碰到障碍物时通过摄像头获取障碍物图片,并通过图像识别模块进行图像种类识别处理;判断碰撞到的障碍物是养殖场的设备还是禽类,若是禽类,判断禽类是否有生命体征;

步骤4)通过智能小车的GPS模块进行确认无生命体征的禽类的位置信息,并上传至云端。

作为本发明的进一步限定,所述步骤1)具体包括:

步骤1-1)将向前、向后、向左、向右的指令分别打包到四个函数中;

步骤1-2)设计智能小车的运行路线时,在主函数中随机调用步骤1-1)中所述的四个函数,给他们设置不同的参数来控制小车在该方向上的运动距离;每次调用主函数时,四个函数的调用顺序、调用次数以及设置的参数都是在一定范围内随机的,使小车的运动路径是随机且能跨越整个养殖场;

步骤1-3)在移动端或PC端下达前进指令,智能小车在接收指令后,嵌入式控制板调用主函数,小车前进。

作为本发明的进一步限定,所述步骤2)具体包括:

步骤2-1)根据增量式编码器的特性,利用编码器Z相的脉冲信号计算小车实时的运行速度,编码器每转一圈发送一次脉冲信号,同时车轮也旋转一圈;

步骤2-2)智能小车运动时,编码器实时返回小车的速度,当小车速度为0时,驱动模块终止,图像识别模块启动。

作为本发明的进一步限定,所述步骤3)具体包括:

步骤3-1)嵌入式控制板控制图像识别模块的启动,摄像头自动拍摄障碍物的照片,并将照片上传云端;图像识别模块运用的库为OpenCV,在图像识别模块投入实验使用前,利用OpenCV库对禽类图片进行训练,训练结果采用二分类的方式,禽类照片结果为1,其它照片结果为0;训练好的模型部署到在线平台的后台,当小车有捕获到的图片上传时,平台调用该模型判断图片中是否包含有禽类的实体;

步骤3-2)若是判断结果为0,智能小车的驱动模块启动,主函数再次调用向前、向后、向左、向右的函数,控制智能小车绕开障碍物;若是判断结果为1,即障碍物为禽类,驱动模块启动,多次调用向前、向后的函数,使智能小车前后运动,以实现小车对禽类的大力碰撞;

步骤3-3)再次调用图像识别模块,摄像头拍摄当前图片,并将图片上传云端,平台调用模型判断图片中是否包含有禽类的实体;若是结果为0,则表示该禽类受到惊吓,已经离开现场;若是结果为1,则表示该禽类无生命体征,则启动GPS模块。

作为本发明的进一步限定,所述步骤3-2)具体包括:

步骤3-2-1)定义动力函数,通过PWM的changedutycycle函数控制,若x=0.2,y=0则为前进forward();若x=0,y=0.2则为后退backward();若x=0,y=0则停止stop();

步骤3-2-2)定义方向函数,通过uservo.set_servo_angle根据x的值进行左右转动,若x=-20则向左转left(),若x=20,则向右转right();

步骤3-2-3)定义定位函数,采用serial库连接比特率为9600的串口并调用,获取当前位置信息,经数据处理后得经度纬度;

步骤3-2-4)定义连接数据库,使用pymysql库,给host、port、db、user、password变量赋值,连接云数据库;

步骤3-2-5)定义拍照函数,通过控制树莓控制库里的fswebcam函数,调用串口diveo0进行拍照;

步骤3-2-6)读取判断变量judge值,judge是判断是否为有障碍物的变量,若为0则后退,绕开障碍物;若为1,则重复向前试探3次;利用定义过的拍照函数,拍照并上传到云端,云端图像识别,调取实际判断physical值,若为1则禽类已死亡,若为0则未死亡。

作为本发明的进一步限定,所述步骤4)具体包括:

步骤4-1)为了获取智能小车的位置信息,利用python中的serial库来获取小车的经纬度;调用串口获取GPS输出的数据;嵌入式控制板将每次转换成功的经纬度传到数据库,平台从数据库读取每一次的经纬度信息,再调用地图API,即可获取无生命体征的禽类的位置信息;随后,前端将该位置信息发送给养殖场管理者;

步骤4-2)GPS模块停止,启动驱动模块,主函数再次调用向前、向后、向左、向右的函数,控制小车绕开障碍物;

步骤4-3)不断重复此过程,直至走完整个路线。

本发明的目的另一方面是这样实现的:一种检测禽类生命体征的智能小车,其特征在于,包括嵌入式控制板、GPS模块、4G通信模块、驱动模块和图像识别模块和压电式传感器;

所述嵌入式控制板用于根据养殖场的场地状况,通过GPS数据处理和导航算法控制智能小车按指定路线行驶;接收GPS信号,经处理实现对GPS信号的跟踪、锁定、测量;接收压电式传感器的压力值信号,并将接受到的信号数据上传至云端。

所述GPS模块用于向嵌入式控制板发送GPS导航定位信息;

所述驱动模块用于驱动小车主动轮电机的正转和反转,使智能小车能够向前、向后、向左、向右前行;

所述压电式传感器安装在小车四周,用于将外界碰撞情况转化成模拟信号,经过放大电路和 AD 模数转换器转换成数字信号交给嵌入式控制板进行处理;

所述4G通信模块用于将压电式传感器接收到的数据上传到mysql数据库中,使移动端或PC端能够观测到实时的压力数据;

所述图像识别模块用于判断摄像头自动拍摄到障碍物的照片是否是禽类,并将照片上传云端。

作为本发明的进一步限定,所述嵌入式控制板通过RS485接口与压电式传感器电连接;所述嵌入式控制板与4G通信模块电连接,所述4G通信模块与4G网卡相连接。

作为本发明的进一步限定,所述驱动模块采用L298N电机驱动芯片。

作为本发明的进一步限定,所述嵌入式控制板采用EASYARM1138开发板。

本发明采用以上技术方案,与现有技术相比,有益效果为:预先设计向前、向后、向左、向右的运动函数,驱动模块的主函数中多次调用这四个函数以实现小车绕着养殖场随机运动;其次,利用编码器实时的脉冲信号判断小车在前进时是否碰到障碍,若是遇到障碍,再利用小车的图像识别模块判断障碍物的种类;图像识别模块利用OpenCV对模型进行训练,若障碍物判断为禽类,则再次触发线程一中的运动模块,控制小车运动来确认禽类的生命体征。然后,利用GPS模块确认无生命体征的禽类的位置信息;本发明在减少人畜接触的基础上高效判断养殖场禽类的生命体征,有效控制了禽类传染病的传播。

在小车四周安装多个压电式压力传感器,压电材料具有很好的感测性能,由压力材料制成的压电传感器具有动态特性好、传感特性优良、灵敏度高、信噪比高、线性度好、体积小,频带宽,响应速度快等诸多优点,适用于测量加速度、动态力、压力等参数,压电式传感器为基于嵌入式控制器的禽类生命体征身上所用的传感器的不二之选;采用4G通信模块提升了信息的传输速度,采用移动通讯卡作为传输载体,改善了传输过程中信号的覆盖问题,对于不同距离传感器,均能凭借移动网络进行传输,提高了数据的传输能力,减少各种影响因素对于传输数据的影响,改进了传输的性能。

附图说明

图1本发明方法的流程图。

图2本发明小车的系统框图。

具体实施方式

如图1所示的一种检测禽类生命体征智能小车的云端管理方法,包括以下步骤:

步骤1)云端通过嵌入式控制板下达巡航指令给智能小车,小车绕着养殖场随机运动;

步骤1-1)将向前、向后、向左、向右的指令分别打包到四个函数中;

步骤1-2)设计智能小车的运行路线时,在主函数中随机调用步骤1-1)中所述的四个函数,给他们设置不同的参数来控制小车在该方向上的运动距离;每次调用主函数时,四个函数的调用顺序、调用次数以及设置的参数都是在一定范围内随机的,使小车的运动路径是随机且能跨越整个养殖场;

步骤1-3)在移动端或PC端下达前进指令,智能小车在接收指令后,嵌入式控制板调用主函数,小车前进。

步骤2)通过智能小车的压电式传感器进行数据采集,通过编码器脉冲信号判断小车是否碰撞到障碍物;

步骤2-1)根据增量式编码器的特性,利用编码器Z相的脉冲信号计算小车实时的运行速度,编码器每转一圈发送一次脉冲信号,同时车轮也旋转一圈;设置一个循环,调用Z相的引脚,每一次脉冲信号都累加至事件中,每秒计算一次该秒内接收到的脉冲信号的次数。相较于根据接收到两次脉冲信号之间的时间来计算车轮的运动周期,计算频率来确定速度的误差更小;

步骤2-2)智能小车运动时,编码器实时返回小车的速度,当小车速度为0时,驱动模块终止,图像识别模块启动。

步骤3)智能小车在行进路途中碰到障碍物时通过摄像头获取障碍物图片,并通过图像识别模块进行图像种类识别处理;判断碰撞到的障碍物是养殖场的设备还是禽类,若是禽类,判断禽类是否有生命体征;

步骤3-1)嵌入式控制板控制图像识别模块的启动,摄像头自动拍摄障碍物的照片,并将照片上传云端;图像识别模块运用的库为OpenCV,在图像识别模块投入实验使用前,利用OpenCV库对禽类图片进行训练,确保图像识别的准确度,训练结果采用二分类的方式,禽类照片结果为1,其它照片结果为0;训练好的模型部署到在线平台的后台,当小车有捕获到的图片上传时,平台调用该模型判断图片中是否包含有禽类的实体;

利用OpenCV库对禽类图片进行训练具体包括以下流程:定义权重函数,通过truncated_normal函数选取位于正态分布均值=0.1附近的随机值作为权重;然后定义偏置函数,定义卷积函数,调用tensorflow中的conv2d函数,输入图片信息矩阵x,卷积核的值W;定义池化函数,池化函数用简单传统的2x2大小的模板做max pooling,池化步长为2,选过的区域下次不再选取。

对数据进行两次卷积和池化操作:定义第一层卷积层网络结构:第一卷积核为:卷积核大小=5×5;输入的通道数是1,输出的通道数是32;激活函数reLU非线性处理,卷积核的值这里就相当于权重值,用随机数列生成的方式得到,然后再经过第一次池化(池化步长是2);定义第二层卷积层的网络结构;第二卷积核大小还是5×5;输入的通道数是32,输出的通道数是64;同样激活函数reLU非线性处理,再经过第二次池化(池化步长是2);全连接层的输入就是第二次池化后的输出,尺寸是7*7*64,全连接层1有1024个神经元,然后每次只让部分神经元参与工作使权重得到调整,这一步是为了减小过拟合现象。全连接层2有10个神经元,相当于生成的分类器经过全连接层1、2,得到的预测值存入prediction 中,结果存放在一个布尔型列表中。

步骤3-2)若是判断结果为0,智能小车的驱动模块启动,主函数再次调用向前、向后、向左、向右的函数,控制智能小车绕开障碍物;若是判断结果为1,即障碍物为禽类,驱动模块启动,多次调用向前、向后的函数,使智能小车前后运动,给他们设置不同的参数,调用向前函数时设置的参数略大于调用向后函数,以实现小车对禽类的大力碰撞;

步骤3-2-1)定义动力函数,通过PWM的changedutycycle函数控制,若x=0.2,y=0则为前进forward();若x=0,y=0.2则为后退backward();若x=0,y=0则停止stop();具体代码为:

def ****():

pwm1. (x)

pwm2.ChangeDutyCycle(y)

pwm3.ChangeDutyCycle(x)

pwm4.ChangeDutyCycle(y)

步骤3-2-2)定义方向函数,通过uservo.set_servo_angle根据x的值进行左右转动,若x=-20则向左转left(),若x=20,则向右转right();具体代码为:

def ****():

uservo.set_servo_angle(SERVO_ID, x, interval=100)

步骤3-2-3)定义定位函数,采用serial库连接比特率为9600的串口并调用,获取当前位置信息,经数据处理后得经度纬度;具体代码为:

def gps():

ser= serial.Serial("/dev/ttyUSB1",9600)

line= str(str(ser.readline())[2:])

if line.startswith('$GNGGA'):

line = str(line).split(',')

Longitude=float(float(line[4][:3])+float(line[4][3:])/60)

Latitude=float(float(line[2][:2])+float(line[2][2:])/60)

return Longitude,Latitude

步骤3-2-4)定义连接数据库,使用pymysql库,给host、port、db、user、password变量赋值,连接云数据库;具体代码为:

def connection():

conn=pymysql.connect(host=host,port=port,db=db,user=user,password=password)

return conn

步骤3-2-5)定义拍照函数,通过控制树莓控制库里的fswebcam函数,调用串口diveo0进行拍照;具体代码为:

def camera():

global name#全局变量

os.system("fswebcam /dev/video0 /home/pi/Pictures/"+str(name)+".jpg")

步骤3-2-6)读取判断变量judge值,judge是判断是否为有障碍物的变量,若为0则后退,绕开障碍物;具体代码为:

sql='select judge from car'

judge=pd.read_sql(sql,conn)

if(judge==0):

backward()

time.sleep(0.4)

forward()

time.sleep(0.6)

mid(20)

backward()

time.sleep(1)

mid(-20)

forward()

若为1,则重复向前试探3次;

else if(judge==1):

for i in range(3):

backward()

time.sleep(0.4)

forward()

time.sleep(0.6)

利用上述定义过的拍照camera函数,拍照并上传到云端,云端图像识别,调取实际判断physical值,若为1则禽类已死亡,若为0则未死亡;

camera()

upload_local='/home/pi/Pictures/'+str(name)+'.jpg'

upload_remote='/var/www/chicken/Public/assets/camera/'+str(name)+'.jpg' //采用ftp上传;

sql1='select physical from car'

physical=pd.read_sql(sql1,conn)//表示是否死亡的变量;

if(physical==1):

print("禽类已死亡")

else

print("禽类未死亡") //打印出结果更直观,判断结果本应直接呈现在前端。

步骤3-3)再次调用图像识别模块,摄像头拍摄当前图片,并将图片上传云端,平台调用模型判断图片中是否包含有禽类的实体;若是结果为0,则表示该禽类受到惊吓,已经离开现场;若是结果为1,则表示该禽类无生命体征,则启动GPS模块。

步骤4)通过智能小车的GPS模块进行确认无生命体征的禽类的位置信息,并上传至云端。

步骤4-1)为了获取智能小车的位置信息,利用python中的serial库来获取小车的经纬度;调用串口获取GPS输出的数据;嵌入式控制板将每次转换成功的经纬度传到数据库,平台从数据库读取每一次的经纬度信息,再调用地图API,即可获取无生命体征的禽类的位置信息;随后,前端将该位置信息发送给养殖场管理者;

步骤4-2)GPS模块停止,启动驱动模块,主函数再次调用向前、向后、向左、向右的函数,控制小车绕开障碍物;

步骤4-3)不断重复此过程,直至走完整个路线。

如图2所示的一种检测禽类生命体征的智能小车,包括嵌入式控制板、GPS模块、4G通信模块、驱动模块和图像识别模块和压电式传感器;

嵌入式控制板用于根据养殖场的场地状况,将多条系统规划好的路线烧进嵌入式控制板中,通过GPS数据处理和导航算法控制智能小车按指定路线行驶;接收GPS信号,经处理实现对GPS信号的跟踪、锁定、测量;接收压电式传感器的压力值信号,并将接受到的信号数据上传至云端。利用UART0将GPS导航定位信息发送到嵌入式控制板并从中提取经度和纬度,这些坐标值与预设目标点坐标比较后,将按一定的算法控制小车按预设航线行驶,最终实现GPS自动导航的功能;嵌入式控制板通过RS485接口与压电式传感器电连接;嵌入式控制板与4G通信模块电连接,4G通信模块与4G网卡相连接,向移动端或PC端传输信号。嵌入式控制板采用EASYARM1138开发板。

GPS模块用于向嵌入式控制板发送GPS导航定位信息;

驱动模块用于驱动小车主动轮电机的正转和反转,使智能小车能够向前、向后、向左、向右前行;驱动模块采用L298N电机驱动芯片。小车行驶状态为两轮驱动,即前轮为主动轮,后轮为从动轮,L298N是一个H桥集成芯片,其中IN1~IN4接收EasyARM1138开发板的高低电平控制信号,ENA和ENB为两个使能口。经过H桥后,IN1、IN2和ENA三个信号一起控制B1电机的工作,B1电机的两端分别接OUT1和OUT2,利用OUT1和OUT2输出的高低电平可以控制电机的正转和反转;IN3、IN4和ENB三个信号一起控制B2电机的工作, B2电机的两端分别接OUT3和OUT4。B1、B2电机分别对应的小车的左轮和右轮。

八个压电式传感器安装在小车四周,用于将外界碰撞情况转化成模拟信号,经过放大电路和 AD 模数转换器转换成数字信号交给嵌入式控制板进行处理;八个压电式压力传感器分别编号为01、02至08,能将八个方向的传感器的实时数据通过RS485接口传递给EASYARM1138开发板。此外,在开发板中烧写能实现把传感器接收到的16进制的数据转化成可人工直接读取的2进制数据的代码。

4G通信模块用于将压电式传感器接收到的数据上传到mysql数据库中,使移动端或PC端能够观测到实时的压力数据;将压电式传感器传到EASYARM1138开发板的数据通过4G通信模块(ML302模块)进行控制,通过EP32模组进行转换,实现会话功能的同时,可通过两路ADC接口搜集采样数据,实现控制主要依靠八路通用IO口控制高低电平的输出,进而实现模块的控制功能。4G通信模块采用中国移动网络通讯,在使用中需要使用移动数据作为设备通讯的渠道,这里采用卡扣设计;让设备可以使用中国移动类的物理网卡和移动4G卡,板卡设计的正面集成了易于操作的 SIM 卡接口和串行接口选择拨码开关,主要用来选择板卡的串行输出信号,此外还需要通过串行转换芯片,将USB转换为URAT信号,为主控模组系统的烧录和调试接口。

图像识别模块用于判断摄像头自动拍摄到障碍物的照片是否是禽类,并将照片上传云端。

本发明工作时,小车在前进路途中碰到障碍,根据嵌入式控制板中的代码判断碰到的障碍是养殖场中的墙壁、设备还是养殖场中的禽类,此代码中包含的在某一方向上移动的净值可帮助判断该障碍物是否为墙类或者设备。

若是判断结果为墙类或是设备,则停止碰撞,转换方向继续前进;若是判断结果不是墙类或设备则障碍是禽类,则沿着原方向继续前进。

若是继续前进无障碍,则表明该禽类有生命体征,受到碰撞惊吓已经离开;若是继续碰撞有障碍,则每间隔5秒继续加大力度碰撞,此过程持续3次,若是在此过程中障碍物消失,则表明禽类有生命体征,连续碰撞使得该禽类离开,若是此过程中障碍物没有消失,则表明该禽类无生命体征。

判断某障碍为无生命体征的禽类后,将该禽类的位置信息通过GPS模块传递至移动端或PC端,通知养殖场管理员来处理。

本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。

相关技术
  • 一种检测禽类生命体征的智能小车及其云端管理方法
  • 一种生命体征检测方法和生命体征检测设备
技术分类

06120114723462