发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、执行速度快、跟踪的准确性高且能够进行自动搜索和跟踪的基于四轴飞行器的便携式目标跟踪方法及系统。
为解决上述技术问题,本发明提出的技术方案为:
一种基于四轴飞行器的便携式目标跟踪方法,步骤为:
(1)四轴飞行器实时跟踪并采集目标的图像,将采集的图像数据进行视频压缩后输出;
(2)接收视频压缩数据并进行解压,根据解压的图像数据采用TLD算法进行目标的检测、跟踪,并独立执行解压的图像数据与图像模板的匹配;当检测到目标时,输出检测到的目标位置;
(3)根据检测得到的目标位置采用PID算法计算得到控制参数,并根据四轴飞行器的飞行状态设置PID算法中的PID系数,由控制参数控制四轴飞行器执行相应的飞行动作。
作为本发明方法的进一步改进:所述步骤(1)中视频压缩采用P264格式。
作为本发明方法的进一步改进:所述步骤(2)中TLD算法采用简化的过滤条件,所述简化的过滤条件为方差过滤和集合分类。
作为本发明方法的进一步改进,所述方差过滤的具体实现方法为:采用方差最小值过滤条件对图像数据进行滤波后,滤除方差大于目标窗口方差的2倍的子窗口。
作为本发明方法的进一步改进:所述步骤(2)中解压的图像数据与图像模板的匹配采用FPGA执行。
作为本发明方法的进一步改进,所述步骤(3)中采用PID算法计算控制参数的具体实现方法为:输入一帧图像中目标(1)的中心像素点位置与图像的中心像素点位置之间的比较结果,并将上一帧图像中目标(1)的中心像素点位置与图像中心像素点位置之间的比较结果作为反馈输入,按照下式计算得到控制参数;
其中,k为采样序号且k=0,l,2...,Uk为得到的当前采样时刻的控制参数且 ax和ay分别表示四轴飞行器(2)在X轴和Y轴方向的加速度;ek为当前帧图像得到的所述比较结果,ek-1为上一帧图像得到的所述比较结果;Kp、KI和KD为PID系数,且Kp为比例系数、KI为积分系数、KD为微分系数。
作为本发明方法的进一步改进,所述步骤(3)的具体实现方法为:
(3.1)根据目标是否被跟踪判断四轴飞行器的飞行状态,若目标持续被跟踪达到多次时,判断四轴飞行器为持续跟踪目标状态;若没有跟踪到目标时,判断四轴飞行器为自动搜索目标状态;若没有跟踪到目标后重新跟踪到目标时,判断四轴飞行器为重新跟踪到状态;
(3.2)根据四轴飞行器的飞行状态,选择飞行状态对应的预设PID系数并采用PID算法计算得到控制参数,由控制参数控制四轴飞行器执行相应的飞行动作。
一种基于四轴飞行器的便携式目标跟踪系统,包括:
四轴飞行器,用来实时跟踪目标并采集目标的图像数据,将图像数据进行视频压缩后输出至目标检测和跟踪模块并根据飞行控制模块输出的控制指令控制执行相应的飞行动作;
目标检测和跟踪模块,包括视频解压单元、检测跟踪单元和模板匹配单元,所述视频解压单元接收四轴飞行器输出的图像数据并进行解压,输出至检测跟踪单元;所述检测跟踪单元根据解压的图像数据采用TLD算法进行目标的检测、跟踪,当检测到跟踪目标时,输出目标的位置;模板匹配单元独立执行解压的图像数据与图像模板的匹配;
飞行控制模块,包括控制参数计算单元以及参数调整单元,所述控制参数计算单元输入目标检测和跟踪模块输出的目标位置,采用PID算法计算得到控制参数,输出相应的控制指令至四轴飞行器;参数调整单元根据四轴飞行器的飞行状态对PID算法的PID系数进行设置。
作为本发明装置的进一步改进:所述四轴飞行器采用ARDrone四轴飞行器。
作为本发明装置的进一步改进:所述目标检测和跟踪模块和飞行控制模块采用Intel AtomE6x5c嵌入式工控机。
与现有技术相比,本发明的优点在于:
(1)本发明采用TLD算法实现目标的跟踪与检测,跟踪的准确性及效率高,将TLD算法中的过滤条件进行简化,仅采用方差滤波及集合分类进行过滤,有效提高了检测跟踪的执行速度,同时将TLD算法中耗时较大的模板匹配过程采用硬件加速执行,大大提高了对于运动目标的检测、跟踪的执行速度及效率,从而进一步提高跟踪的准确性;
(2)本发明通过四轴飞行器采集目标的图像并对目标进行跟踪,减小了无人飞行器的大小和重量使其达到可便携式;采用PID控制算法计算出控制参数,控制四轴飞行器的飞行动作并根据四轴飞行器的飞行状态设置相应的PID系数,将PID算法进行分段以使飞行器能够实时的跟踪目标,无需进行人工操作、实现准确的目标自动搜索和跟踪。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图2所示,本实施例中基于四轴飞行器的便携式目标跟踪方法,步骤为:
(1)四轴飞行器2实时跟踪并采集目标1的图像,将采集的图像数据进行视频压缩后输出;
(2)接收视频压缩数据并进行解压,根据解压的图像数据采用TLD算法进行目标1的检测、跟踪,并采用FPGA独立执行解压的图像数据与图像模板的匹配;当检测到目标1时,输出检测得到的目标位置;
(3)根据检测得到的目标位置采用PID算法计算控制参数,并根据四轴飞行器2的飞行状态设置PID算法中的PID系数,由控制参数控制四轴飞行器2执行相应的飞行动作。
本发明采用TLD算法跟踪和检测运动的目标1,并根据检测到的目标位置采用PID算法计算出控制参数,控制四轴飞行器2的飞行动作,突破了传统无人飞行器需要进行人工控制操纵的限制,实现运动目标的自动搜索与跟踪,且采用四轴飞行器2作为跟踪物,减小了无人飞行器的大小和重量使其达到可便携式。
本实施例中,采用ARDrone四轴飞行器实现实时跟踪目标1,通过ARDrone四轴飞行器中数字摄像头实时采集目标1的图像,并把图像的原始数据进行P264格式的视频压缩,通过UDP协议采用WIFI的方式进行发送。ARDrone四轴飞行器可以在-30℃~+50℃的几乎所有环境条件下进行跟踪作业。
本实施例中,接收到ARDrone四轴飞行器发送的P264视频数据后进行视频软解码,视频软解码利用ARDrone SDK中P264软解压库的API实现。
如图3所示,本实施例中视频解码方法流程,初始化视频解码器后进行解码,解码后释放资源并关闭解码器,其中函数vlib_stage_deciding_open的主要功能为初始化视频解码器,函数vlib_stage_deciding_transform的主要功能为对压缩的P264视频流进行软解码,函数vlib_stage_deciding_close的主要功能为释放解码初始化过程中申请的资源并且关闭解码器。
本实施例中接收解压后的BGR格式的图像数据,采用简化过滤条件的TLD算法对目标1进行检测与跟踪,执行TLD算法时模板匹配算法采用硬件独立完成。
TLD算法中采用正样本/负样本(P/N)对目标1进行学习,具体方法为:对P/N学习进行正约束限制,识别出非负样本并更新后验概率;对P/N学习进行负约束限制,识别出非正样本,将其添加到负样本中并更新后验概率。若子窗口与目标窗口的重叠率大于0.6且后验概率小于0.5,即为非负窗口,计算子窗口的特征值并按照概率值增加更新相应特征值的后验概率;若子窗口与目标窗口的重叠率小于0.2且后验概率大于0.5,即为非正窗口,计算子窗口的特征值、按照概率值减小更新相应的后验概率,并将子窗口添加到负样本中;若目标窗口的后验概率值小于θ+,将目标窗口添加到正样本中,其中θ+根据实验取值。正样本和负样本分别构成模板匹配中的正、负模板。
本实施例中,对运动目标进行检测与跟踪,背景为动态,去除TLD算法中基于静态背景的前景检测过程。
本实施例中,对接收到的图像数据进行方差过滤,滤除大部分不是接近目标1的图像,具体方法为:采用方差过滤条件过滤,即采用方差最小值过滤,滤除方差小于目标方差的一半的子窗口,同时滤除方差大于目标窗口的方差2倍的子窗口。通过过滤可以滤除大部分不是接近目标1的图像,大量减少了需要检测的子窗口数目。
本实施例中,去除TLD算法中耗时较长的学习部分中旋转学习过程,能够有效减少算法运行时间、提高运行速度而不影响检测效果。
本发明根据运动目标的特点将TLD算法中的过滤条件进行简化,仅采用其中的方差滤波和集合分类过滤条件进行过滤,同时去除耗时较长的旋转学习过程,有效提高了TLD算法进行运动目标检测的执行速度。
TLD中模板匹配算法就是计算待检测图像p与正负样本之间的距离,用d+表示待检测图像p与所有正样本之间的最小距离,用d—表示待检测图像p与所有负样本之间的最小距离。用一个单一的值p+来表示最小距离d+、最小距离d—的运算结果从而用p+的值来判断待检测图像是否为目标1,判别公式如下:
当p+大于θ+时,则判断待检测的图像为目标1,θ+根据实验经验设定,取值在0.5-0.7之间结果偏差基本不大,本实施例中θ+=0.65。
其中距离d的定义为:
ncc为Normalised Correlation Coefficient(NCC),即归一化互相关,NCC算法的表达式如下:
其中p1,p2为经过归一化后的两个图像,μ1,μ2;σ1,σ2分别为p1,p2两个图像的均值及方差。
TLD算法中计算公式(2)主要部分1/2(ncc(p1,p2)+1)的代码如下:
其中f1[i]和f2[i]分别表示p1(i)-μ1和p2(i)-μ2,即f1为检测到的目标图像归一化后的图像矩阵p1中的元素减去p1矩阵元素的平均值μ1形成的图像矩阵,f2为目标模板图像归一化的图像矩阵p2中的元素减去p2矩阵元素的平均值μ2形成的图像矩阵;corr表示sqrt(norm1*norm2)表示nσ1σ2,其中norm1表示nσ1 2,norm2表示nσ21 2,sqrt(norm1*norm2)表示模板匹配的核心算法,其执行代码为:
其中SumA、SumB和SumC分别表示norm1、corr、norm2。
模板匹配算法所对应的计算公式为:
Sum.A+=A[i][j]*A[i][j];
Sum.B+=B[i][j]*B[i][j]; (4)
Sum C+=B[i][j]*B[i][j];
则采用模板匹配算法进行匹配的核心计算过程对应为:
Sum A=Sum A+(Data_a*Data_a);
Sum B=Sum B+(Data_b*Data_b); (5)
Sum C=Sum C+(Data_a*Data_b);
其中Data_a表示A[i][j],Data_b为B[i][j];A表示图像矩阵f1,B为图像矩阵f2,即Data_a和Data_b分别为p1(i)-μ1和p2(i)-μ2。
本实施例中,TLD算法中非常耗时的模板匹配核心算法部分采用可编程逻辑芯片FPGA进行加速实现,即采用FPGA独立执行公式(5)计算,在FPGA硬件上Data_a和Data_b表示的是数据流相当于一个数据数组。
如图4所示,本实施例中采用FPGA执行模板匹配时数据交换接口,其中通过Avalon总线的接口、总线控制器与Atom端进行数据交换。公式(2)的数据交换流程为:首先通过读写控制器把正样本、负样本以及待匹配的目标1的图像存储于三个缓存RAM中;由于Avalon总线传输的为32位数据,而样本数据为8位宽,读取缓存RAM中相应的数据需要进行位宽的转化,转化后将其送入NCC运算器完成相应的平方累加和与乘法累加和之后将结果进行存储,最终通过中断唤醒Atom端,读控制信号将相应的数据通过Avalon总线传输到Atom参与后续运算。
如图5所示,本实施例采用FPGA执行模板匹配中NCC运算器结构,采用可编程逻辑芯片FPGA中的NCC运算器执行平方累加和与乘法累加和的计算,即式(5)的运算,其运算流程为:首先从存储器中读出32bit位宽的数据Data_a、Data_b,通过平方运算器并行的进行平方与乘法运算并将结果输入加法器,通过加法器与自身加法和结果的运算完成累加和的操作。由于需要存储最终的计算结果,因此需要根据状态控制器中加法的计算过程来控制需要存储的数据,并在每次计算后对加法器进行清零以进入后续的运算状态。
工作时,采用简化过滤条件的TLD算法对检测的图像进行检测、跟踪,其中模板匹配算法则采用FPGA加速执行,有效的减少了算法运行时间,提高算法执行效率及目标检测的速度及精度。
本发明将TLD算法中耗时较长的模板匹配算法采用硬件独立执行,由独立的硬件协作完成TLD算法的运算过程,大大减少了算法运行时间,提高运算速度有助于提高跟踪算法的效率,从而提高对运动目标检测的速度及精度。
如表1、2所示,本实施例中同一段视频不同算法之间执行速度、准确性的比较,在IntelAtom嵌入式平台上同一段视频采用传统的TLD算法以及本实施例中的TLD算法进行测试,其中第一TLD算法为传统的TLD算法,第二TLD算法为本实施例中简化过滤条件的TLD算法,第三TLD算法为本实施例中简化过滤条件并将模板匹配过程采用FPGA独立执行的TLD算法。执行速度的测试结果为:第二TLD算法比第一TLD算法在执行速度上提高了28.11%,而第三TLD算法在第二TLD算法的基础上采用了FPGA加速,其执行速度又提高了16.7%。
表1同一段视频不同算法之间执行速度的比较
本实施例中,准确性的测试结果为:第二TLD算法在的准确性比第一TLD算法低,由于第二TLD算法是以以降低准确性为代价提高执行速度;而第三TLD算法经过FPGA加速,提高了算法的运算速度,使得TLD算法的跟踪部分提高了效率,因此其准确性高于第一TLD算法、第二TLD算法。
表2同一段视频不同算法之间准确性比较
本实施例中,在检测到目标1时,得到目标1的中心像素点的位置,将目标1的中心像素点位置与图像的中心像素点位置进行比较,输出比较结果,根据相邻两帧图像数据进行检测后输出的比较结果采用PID控制算法计算四轴飞行器2的控制参数。
PID控制算法将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,用这一控制量对被控制对象进行控制。由于计算机控制是一种采样控制,只能根据采样时刻的偏差值计算控制量,而不能像模拟控制那样连续输出控制量,因此必须对积分和微分进行离散化处理。
本实施例中,离散化处理方法为:以T作为采样周期,k作为采样序号,则离散采样时间T对应着连续时间t,用求和的形式代替积分,用增量的形式代替微分,PID算法计算控制参数的公式为:
其中,k为采样序号,k=0,l,2...;Uk为第k次采样时刻的输出值,ek为第k次采样时刻输入的目标在中心像素点的位置和图像中心像素点的位置的比较结果;ek-1为第k-1次采样时刻输入的目标在中心像素点的位置和图像中心像素点的位置的比较结果;Kp为比例系数,KI为积分系数且KI=KPI=KPT/TI,TI为积分周期;KD为微分系数且KD=KPD=KPTD/T,TD为微分周期。Uk和△ek是二维的向量, ax和ay分别表示四轴飞行器2在X轴和Y轴方向的加速度,△x和△y分别表示目标1的中心像素点位置与图像中心像素点位置在x和y方向上的偏差值。
PID算法的输出Uk即为四轴飞行器2在X轴和Y轴方向的加速度ax和ay,由PID算法的输出Uk调整四轴飞行器在X轴和Y轴方向的加速度,从而控制四轴飞行器2在任意水平方向上的运动。
本实施例中,将检测得到的目标1在中心像素点的位置和图像的中心像素点的位置的比较结果作为PID算法的输入,并把上一帧图像数据中目标在中心像素点的位置和图像中心像素点的位置的比较结果作为反馈输入,由式(6)计算出控制参数,通过对PID算法的系数Kp、KI和KD的调整可以调节跟踪效果。进行调整时,首先调整积分参数KI,再调整比例系数Kp,最后调整积分系数KI。
本实施例中,将四轴飞行器2的飞行状态S分为三种:持续跟踪目标、重新跟踪到目标、自动搜索目标状态,分别采用S1、S2、S3表示。根据目标是否被四轴飞行器2跟踪到来判断四轴飞行器2的状态,若目标1持续被跟踪达到3次时,判断四轴飞行器2为持续跟踪目标状态S1;若目标没有被跟踪到时,判断四轴飞行器2为自动搜索目标状态S3;若目标没有跟踪到目标后又重新跟踪到时,判断四轴飞行器2为重新跟踪到状态S2,当持续跟踪到目标3次时,四轴飞行器2变为持续跟踪目标状态S1。
四轴飞行器2在持续跟踪目标状态S1时,PID算法中的比例系数、积分系数和微分系数分别为Kp1,KI1和KD1;在重新跟踪到目标状态S2时,PID算法中的比例系数、积分系数和微分系数分别为Kp2,KI2和KD2;在自动搜索目标状态S3时,PID算法中的比例系数、积分系数和微分系数分别为Kp3,KI3和KD3;四轴飞行器2各飞行状态时PID系数通过大量的实验进行确定。本实施例中,在持续跟踪目标状态S1下调整PID系数为Kp1=0.035、KI1=0.040且KD1=0.010,在重新跟踪到目标状态S2下调整PID系数为Kp2=0.053、KI2=0.032且KD2=0.022,在自动搜索目标状态S3下调整PID系数为Kp3=0.068、KI3=0.025且KD3=0.003,使得四轴飞行器2跟踪目标1的效果最佳。
本实施例中,通过判断四轴飞行器2的飞行状态S对PID算法进行分段,按照飞行状态将PID算法分为三段,每一段PID算法对应一种飞行状态并设置对应的PID系数Kp、KI、KD,以使飞行器能够实时跟踪目标1且跟踪效果最佳,分段PID算法计算控制参数的公式为:
其中Kp1=0.035、KI1=0.040且KD1=0.010;Kp2=0.053、KI2=0.032且KD2=0.022;Kp3=0.068、KI3=0.025且KD3=0.003。
工作时,首先判断四轴飞行器2的飞行状态,由飞行状态确定使用相应段的PID算法,并选择对应段的PID系数。当四轴飞行器2处于持续跟踪目标状态S1时,执行第一段PID算法,设置PID系数为Kp1=0.035、KI1=0.040、KD1=0.010;当处于重新跟踪到目标状态S2时,执行第二段PID算法,设置PID系数为Kp2=0.053、KI2=0.032且KD2=0.022;当处于重新跟踪到目标状态S3时,执行第三段PID算法,设置PID系数为Kp3=0.068、KI3=0.025且KD3=0.003。本实施例中,根据四轴飞行器2的飞行状态执行不同的控制模式,不同的控制模式下四轴飞行器2的调整幅度不同,若跟踪目标消失时,即四轴飞行器2处于自动搜索目标状态,执行搜索模式,此时四轴飞行器2会沿着上一次目标出现的方向进行搜索;若跟踪目标消重新出现时,即四轴飞行器2处于重新跟踪到目标状态时,执行重新跟踪模式,此时四轴飞行器2的控制会变的很灵敏并且调整幅度增大,因为重新跟踪的目标一般都在图像的边缘要很快的做出跟踪动作才能及时跟踪;若跟踪目标持续出现在图像中时,即四轴飞行器2处于持续跟踪目标状态时,执行持续跟踪模式,此时四轴飞行器2进行稳定的跟踪且调整幅度不大。
如图6所示,本实施例中控制算法实现流程,根据目标的跟踪状态来判断四轴飞行器2的飞行状态,如果目标1持续被跟踪达到3次时,四轴飞行器2处于持续跟踪状态,执行持续跟踪目标状态下的PID算法计算出控制参数,即PID系数为Kp1,KI1和KD1的PID算法;如果没有跟踪到目标1时,四轴飞行器2为自动搜索状态,执行自动搜索状态下的PID算法计算出控制参数,即PID系数为Kp2,KI2和KD2的PID算法,当没有跟踪到目标1达3次时,退出程序目标跟踪失败;如果重新跟踪到目标1时,四轴飞行器为重新跟踪状态,执行重新跟踪状态下的PID算法算出控制参数,即PID系数为Kp3,KI3和KD3的PID算法,当持续跟踪到目标1达3次时,四轴飞行器2变为持续跟踪状态。
本实施例中,对于四轴飞行器2的控制还可以通过人工控制,如图7所示,本实施例中对四轴飞行器的控制方法,进行自动搜索和跟踪时,接收四轴飞行器2输出的P264格式的视频流数据并进行解压,对解压后的图像数据执行TLD检测与跟踪算法,输出目标位置,根据目标位置执行PID控制算法并计算出控制参数,发出控制指令至四轴飞行器2进行控制;进行人工控制时,根据人工控制指令发出控制指令至四轴飞行器2进行控制。
如图8所示,本实施例中基于四轴飞行器的便携式目标跟踪系统,包括:
四轴飞行器2,包括视频采集单元21、视频压缩单元22、控制执行单元23,视频采集单元21实时跟踪并采集目标1的图像,视频压缩单元22将采集的图像数据进行视频压缩后输出至目标检测和跟踪模块3,控制执行单元23接收飞行控制模块4输出的控制指令,控制飞行器执行相应的飞行动作;
目标检测和跟踪模块3,包括视频解压单元31、检测跟踪单元32和模板匹配单元33,视频解压单元31接收视频压缩单元22输出的视频流并进行解压,检测跟踪单元32接收视频解压单元31输出的图像数据采用TLD算法进行目标1的检测、跟踪,当检测到目标1时,输出检测得到的目标位置;模板匹配单元33采用硬件独立执行图像数据与图像模板的匹配;
飞行控制模块4,包括控制参数计算单元41以及参数调整单元42,所述控制参数计算单元41输入目标检测和跟踪模块3输出目标位置,采用PID算法计算得到控制参数;参数调整单元42根据四轴飞行器2的飞行状态设置PID算法中的PID系数,输出相应的控制指令至四轴飞行器2。
本实施例中,四轴飞行器2采用ARDrone四轴飞行器且与飞行控制模块4通过WIFI连接通信,其中四轴飞行器2与目标检测和跟踪模块3之间通过基于UDP协议的形式传输视频流数据,与飞行控制模块4则通过TCP协议形式传输控制指令。目标检测和跟踪模块3及飞行控制模块4块通过Intel Atom E6x5c嵌入式平台实现,模板匹配单元33采用FPGA实现,Intel Atom E6x5c嵌入式平台与FPGA之间通过PCIE总线进行通信。
本实施例中,视频压缩单元22将采集的图像数据进行P246格式的视频压缩,由视频解压单元31进行P246格式的解压。
本实施例中,检测跟踪单元32对视频解压单元31输出的解压图像数据采用简化滤波条件的TLD算法进行目标1的检测、跟踪,将TLD算法中的滤波条件简化为方差滤波以及集合分类。对接收到的图像数据进行方差过滤时,滤除大部分不是接近目标的图像,具体方法为:采用方差过滤条件过滤,即采用方差最小值过滤,滤除方差小于目标方差的一半的子窗口,同时滤除方差大于目标窗口的方差2倍的子窗口。通过过滤可以滤除大部分不是接近目标的图像,大量减少了需要检测的子窗口数目。
本实施例中,由模板匹配单元33独立执行TLD算法中的模板匹配算法,采用独立的FPGA加速完成TLD算法。
本实施例中,控制参数计算单元41采用PID算法计算控制参数,控制参数的计算公式如式(6)所示,输入目标中心像素点的位置和图像中心像素点的位置的比较结果,并将上一帧图像数据中目标中心像素点的位置和图像中心像素点的位置的比较结果作为反馈,计算得到控制参数并输出相应的控制指令。
本实施例中,参数调整单元42根据四轴飞行器2的飞行状态设置相应的PID系数Kp、KI、KD,其中PID系数的选择如式(7)所示。
工作时,由ARDrone四轴飞行器通过数字摄像头采集到目标1的图像,并把图像的原始数据进行P264格式的视频压缩,通过UDP协议采用WIFI的方式发送给Intel Atom E6x5c嵌入式平台。当Intel Atom E6x5c嵌入式平台接收到视频数据之后输出给目标检测和跟踪模块3,目标检测和跟踪模块3通过软解压的方式进行P264视频的解压,将解压后的BGR格式的图像数据采用简化滤波条件的TLD算法对目标1进行检测与跟踪,TLD算法通过Atom E640和FPGA相互协作完成,其中模板匹配部分采用FPGA加速实现;当检测到目标1时,目标检测和跟踪模块3将目标1的中心像素点的位置传递给飞行控制模块4。飞行控制模块4将目标中心像素点的位置和图像中心像素点的位置的比较结果作为PID算法的输入,并将上一帧图像数据中目标中心像素点的位置和图像中心像素点的位置的比较结果作为反馈,计算得到控制参数,根据ARDrone四轴飞行器的飞行状态设置不同的PID系数,由PID算法输出的控制参数输出相应的控制指令并通过TCP协议用WIFI的方式传递给ARDrone四轴飞行器,ARDrone四轴飞行器做出相应的动作实现自动跟着目标1飞行。
如图9所示,本实施例中本实施例中PCIE与存储器的数据交换接口,PCIE与FPGA通信中,PCIE端可以直接通过DMA的方式来控制存储器的读写,从而实现AtomE640与FPGA之间的数据交互。PCI-E Megacore为PCI-E的硬核配置模块,将PCI-E链路的数据包转化为Avalon-MM的读写申请,以访问系统内部的存储空间。On-Chip Memory即内部存储器,用来存储来自PCI-E功能模块的数据,包括来自外部链路或者发送到链路中去的数据。DMA传输On-Chip Memory和PCI-E Megacore功能模块之间的数据。由于DMA和On-Chip Memory的控制端口映射到了PCI-E模块的存储空间中,因此DMA可以通过根端点来建立和配置数据的传输,On-Chip Memory的数据也可以直接被根端点获取。在该结构中,DMA能够发起Avalon-MM的读写申请,由PCI-E Megacore功能模块转化为PCI-E的操作申请,再通过链路进行传送,DMA还可以直接访问内部存储器,通过PCI-E链路写入其它的存储器中。
本实施例中,可以将FPGA看做一个基于PCIE总线的字符设备,对设备的编写要满足PCIE编写模式。Linux系统提供了一种基于总线的设备驱动编程模式mfd,对于设备驱动的实现必须在mfd.c中编写符合PCIE设备驱动格式的总线驱动,并且将设备要申请的资源和分配的地址在mfd.c文件中进行声明,最后添加设备。
本实施例中,控制执行单元23采用四轴飞行器2的ARDrone SDK,根据飞行控制模块4发出的控制指令控制ARDrone四轴飞行器飞行动作,同时由SDK提供的API接口控制ARDrone飞行器对视频进行采集。
ARDrone四轴飞行器提供了控制飞行器动作的API,包括控制飞行器的起降、紧急情况重置、方向控制,其中ardrone_tool_set_ui_pad_start为控制起降飞行器函数,ardrone_tool_set_ui_pad_select为控制紧急情况重置所有参数函数,ardrone_at_set_progress_cmd为方向控制函数。对ARDrone四轴飞行器的执行动作的控制就是根据采集的视频流对ardrone_at_set_progress_cmd函数的参数进行设置,从而使ARDrone四轴飞行器跟着目标1飞行。
如图10所示,本实施例中四轴飞行器的API接口,其中ARDrone库是基于数据流和AT指令,AT指令由ARDrone四轴飞行器的SDK规定,控制四轴飞行器在X轴和Y轴方向的加速度ax和ay,对飞行器的飞行动作进行控制。
如图11所示,本实施例中四轴飞行器硬件结构,包括基于ARM9芯片的飞行控制板、无刷电机、电调、640*480像素的前置数字摄像头、176*144像素的底部摄像头、超声波传感器和电压为11.1v的锂电池,由底部摄像头采集目标1的图像。ARM9芯片的飞行控制板对各个传感器信号进行采集、接收远程发来的AT指令并对电调进行相应的控制,由电调控制无刷电机,其中无刷电机为四轴飞行器2提供动力来源,电调用来驱动无刷电机的控制器。超声波传感器测量四轴飞行器2的离地高度,由电压为11.1v的锂电池给四轴飞行器2进行供电;176*144像素的底部摄像头拍摄四轴飞行器2底部的环境,640*480像素的前置数字摄像头拍摄四轴飞行器2前面的环境。
如图12所示,本发明具体实施例中基于四轴飞行器的便携式目标跟踪系统,由ARDrone四轴飞行器跟踪和检测遥控车,目标检测和跟踪模块3及飞行控制模块4通过Intel AtomE6x5c嵌入式平台实现,嵌入式操作系统为yocto系统,其中模板匹配单元33采用Intel AtomE6x5c嵌入式平台中的FPGA实现,Intel Atom E6x5cc嵌入式平台中Atom E640与FPGA之间通过PCIE总线进行通信,Intel Atom E6x5c嵌入式平台另一端连接一个SATA硬盘。
本实施例中,在嵌入式系统下利用QT C++图形用户界面应用程序框架对ARDrone四轴飞行器进行应用开发,ARDrone四轴飞行器和Intel Atom E6x5c嵌入式平台之间通过UDP和TCP形式进行通讯连接,通过ARDrone四轴飞行器实时采集遥控车的图片通过WIFI发送IntelAtom E6x5c嵌入式平台,由Intel Atom E6x5c嵌入式平台对遥控车的位置进行跟踪和检测,根据检测得出的目标位置对ARDrone四轴飞行器进行控制,最终实现ARDrone四轴飞行器跟着遥控车飞行。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。