初学四旋翼之光流定点

本项目使用px4flow模块测速,与飞控的通讯方式为I2C。

安装时因注意光流模块与飞控的方向。

(一)   为什么使用光流模块?

        在悬停时,若采用开环控制,由于一些不可控的外界因素,四旋翼会晃动,稳定性不能满足要求。此时可采用速度闭环控制,将x和y方向的速度返回,形成一个位置闭环,保证x和y方向的速度为0,便能消除晃动,增强稳定性。

        也可采用位置闭环控制,将x和y的位置变换返回,形成一个位置闭环,保证x和y方向的位置变化为0。

 

(二)   光流测速,测距,定点原理

        当目标物体在摄像机前运动或者摄像机在环境中移动时,目标图像是在发生变化的,图像灰度模式的表面运动就称为光流。简单理解,光流就是通过检测图像中光点和暗点的移动,来判断图像中像素点相对于飞行器的移动速度。

        举个例子,当我们做火车时,可以看到窗外的树在不断地向后“流动”,通过树向后流动的速度,我们可以估计当前火车的速度。光流模块就是基于这个原理,检测两帧图像中“树”的相对位置,由于拍摄两帧图片的时间差是固定的,便可以计算出像素点的移动速度。若我们知道“树”和相机的距离,便可以计算当前的实际速度。

        测距:对速度进行积分就可以得到位移。

        定点:利用光流模块返回的位置信息或者速度信息,形成一个闭环控制,即可实现定点。

 

(三)   Px4flow模块调试步骤

1.      现在并安装Q GroundControl;

2.      用usb线连接电脑和光流模块,QGC会自动检测PX4flow;

3.      烧写固件,一般可以自动在线更新。也可以根据需求烧写自定义的固件;

初学四旋翼之光流定点_第1张图片

4.      打开analyze,查看光流模块数据是否正常(水平匀速移动光流模块,看输出值是否稳定);

初学四旋翼之光流定点_第2张图片

5.      若上述步骤完成,即可将光流模块连接到飞控板。

 

(四)   飞控定位思路

1.      分别计算x和y方向的速度误差(目标速度为0)

2.      累计误差(用于积分),累计误差需要限幅(误差无限累计后会造成溢出,导致积分环节出错。比如有符号数溢出,输出突变)

3.      计算PID

output= p* error+ i* error_sum+d*( error- error_old);

4.      输出限幅(防止输出超过pwm的调节范围)

5.      保存当前误差

error_old =error

 

(五)   代码

 初学四旋翼之光流定点_第3张图片初学四旋翼之光流定点_第4张图片

你可能感兴趣的:(四旋翼)