本文主要总结了飞控研发过中一些比较重要的知识点,部分为本人的实际经验,部分为知乎转载。
飞控姿态控制算法比较固定,基本上都是角度环和角速度环组成的串级PID算法,外加前馈提高响应速度。
因此就目前的算法而言,影响飞控性能的因素主要有以下几点:
1、环路延迟
环路延迟对控制比较致命,引起延迟的因素很多,概括来说有以下几个方面:
1)IMU采样更新率和滤波器截止频率
由于受振动等因素影响,IMU输出需要经过低通滤波,而过低的截止频率会严重引起相位滞后,引起控制的不稳定性,制约控制性能提高;
2)控制频率
受限于控制器计算速度,控制频率低也是引起延迟的因素;
3)电调刷新速率、电机响应速度、螺旋桨惯性。
2、机架振动
机架刚性不足,会导致共振,制约了控制带宽的提升;这是影响控制性能的另一方面重要因素,就目前的PID控制而言,高的控制性能都是通过高的伺服带宽实现的,机械结构的模态频率是限制带宽的重要因素。其次过大的振动又会引起IMU测量数据异常,需要设置更低的滤波器参数,反过来又会导致相位滞后。
如果机体有共振频率,通常的解决方法是在控制器的输出加陷波滤波器,这样可以大幅减少机体本身的共振,也可考虑在传感器数据输出上加陷波;两个地方都加也行,这是比较通常的做法, 因为高频的共振大多是执行器引起的。
红外和超声波技术,因为都需要主动发射光线、声波,所以对于反射的物体有要求,比如:红外线会被黑色物体吸收,会穿透透明物体,还会被其他红外线干扰;而超声波会被海绵等物体吸收,也容易被桨叶气流干扰。
视觉里程计简单来说,就是通过左右双目的图像,反推出视野中物体的三维位置,所以相比光流+超声波技术只能简单的测出速度和高度,视觉里程计还能构建地面的三维模型,并通过连续的图像,跟踪自身与环境的相对移动,估计出自身的运动。准确测出自身与地面的相对位置。
Mahony互补滤波算法中使用加速度计来修正陀螺,前提是加速度计输出为重力加速的测量值,这一点在低速运动下是近似成立的,但是当机体有较大的运动加速度时,IMU的姿态输出将会有较大偏差,解决这一问题的方法是:
1.加速度大的时候减小重力修正结果的比重;
2.使用GPS通过数据融合得到运动加速度的估计值来补偿加速度计,使姿态估计更准确。
如果离散控制器的频率和系统带宽频率比起来足够高的话,可以直接用,顶多微调一下;
但是绝大多数时候不可以直接用,可能因为:
1.MATLAB里仿真模型和实际不符;
2.仿真用的状态量和实际得到的状态量的时滞、误差、噪音不一样;
3.PID实现不一样或实现有问题。
Smith Predictor 史密斯预测器
1.传感器必须仔细地校正;
2.进行数据可靠度判断,比如EKF中协方差过大可能意味着滤波器不收敛,得到的状态估计值不可靠;
3.多套传感器系统冗余配置,实现相互备份;
4.多套算法同时运算,并相互比较,当某套算法出现异常时,及时切换到其他算法。
以加速度为例,装在机身不同位置的加速度计测得的加速度在发生旋转时是不同的。关于质心对称时,简单相加平均可以抵消。如果安装方向有偏差,则需要单独做标定和数据旋转。严格地说,IMU和质心不重合的时候都需要做修正;这个在实际飞行中没仔细考虑过,因为发现IMU放质心和放旁边结果差别不大,这个误差并没有各种传感器本身的误差大。
这是一个数据对齐的问题,在PX4中是将所有的传感器数据先存入一个先入先出的数据缓存区,使用数据时直接读取该缓存区即可;我自己在代码中是使用了全局的结构变量,传感器数据更新后对应的全局变量也随之更新,使用数据时直接获取全局变量即可,不用等待慢的传感器更新。
1.matlab coder工具箱,可以将目标函数转换成C代码,这可以用来生成EKF的代码,避免了手写代码出错,非常实用;
2.curve fitting工具箱,曲线拟合,可以根据采样数据自动进行最小二乘拟合;我曾用来做升力值和PWM脉宽值拟合、电流和升力值拟合,非常方便和实用;
3.fdatool非常强大的滤波器设计工具箱,IIR、FIR、低通、高通、带通、带阻滤波器都有包含,只需通过简单的设置一些关键参数便可给出bode图以及滤波器的差分实现;
4.signal analysis工具箱,从工作区导入mat文件,可以方便地设置滤波器并观察波形变化;可以配合fft函数进行频谱分析(signal analysis自带的频谱分析工具不是很好用)。
起飞重量较低时( 1.5 k g − 2 k g 1.5kg-2kg 1.5kg−2kg以下);常见的是配转速高扭矩小的电机,这类电机的KV值一般很高,定子高,电机呈细长型;与之对应的多旋翼的轴距和螺旋桨也较小;
起飞重量较大时;配转速低扭矩大的电机,这类电机的KV值一般较低,定子低,电机呈圆盘型;与之对应的多旋翼的轴距和螺旋桨也较大;
如果加大多旋翼的轴距便要换与之匹配的大桨,飞控大概率也是要重新调的,而且越大的桨惯性越大,响应慢是必然。时滞高之后控制算法也会比较难调,可能单纯PID效果会比较糟。不过动力提升会远大于风阻、重量提升,抗风和负重能力肯定会变好的。
振动大考虑低通滤波和陷波器;
时延大考虑史密斯预估器(对模型精度要求较高);
模型改变考虑使用观测器(通常参数合适的PID控制器对模型的变化有一定的鲁棒性);
常见的有一阶惯性滤波、巴特沃斯滤波器、切比雪夫滤波器(细分为两种型别)等等;
这几种滤波器的特点如下:
一阶惯性滤波:
阻带和通带平坦,过渡带幅值下降缓慢;
巴特沃斯低通滤波:
阻带和通带平坦,过渡带幅值下降较快;
切比雪夫一型:
通带带波纹,阻带平坦,过渡带幅值下降最快;
切比雪夫二型:
通带平坦,阻带带波纹,过渡带幅值下降最快;
巴特沃斯低通滤波器和切比雪夫低通滤波器的阶数越高,过渡带的幅值下降越快,但是相角滞后越严重;因此实际中不宜设置过高。
再谈IMU数据处理(滤波器)
控制界有哪些经典的开疆扩土的发现
飞控IMU数据进阶处理