
无人机飞控算法
LVGRAPE
有空的玩玩游戏、搞搞机
展开
-
inavFilter 惯导融合算法
typedef struct estimatorStruct { float pos[3]; float vel[3]; float acc[3]; }estimator_s;/** * @brief: 根据位置加速度来计算位置和速度 Inertial filter, implementation taken from PX4 implementation by Anton Babushkin <rk3dov@gmai...原创 2021-09-23 23:09:20 · 558 阅读 · 6 评论 -
飞控所有PID参数都无法消除振荡问题
原因:陀螺的数据滞后了。自己写飞控PID控制时发现,只要加一点点P时都会加速振荡,怎么修改P都无法达到稳定状态。首先怀疑的是电机的方向弄反了,把电机反向后,增加P能减少一点点的振荡次数,但也无法达到稳定状。同时也发现D的运算结果会有0交替出现。微分出现0,说明运算时,数据没有变化还时上次的数据,也就是说数据没有跟上。但是芯片手册上说这个陀螺仪是有200Hz输出的。然后去找原始数据。原始数据是根据状态寄存器的状态来判断,然而状态来的频率远没有达到200Hz,去掉状态判断直接拿...原创 2021-02-23 18:32:34 · 3441 阅读 · 1 评论 -
数字低通滤波算法及截止频率计算,pt1Filter,lpf
参考模电RC滤波计算公式来计算截止频率#define M_PI_FLOAT 3.14159265358979323846ftypedef struct LpfFilter{ float RC;//模电RC滤波的电阻和电容值的积 float dT;//数据更新时间隔(秒) float k;//滤波系数 float state;//滤波结果}LpfFilter_t;/**设置滤波的截止频率* *filter:* f_cut:截止频率* dt: 数据更原创 2021-02-21 21:16:30 · 9114 阅读 · 2 评论 -
无人机定高算法
高度控制:高于目标值时应该减速,要输出负值,所以高度差=目标高度-当前高度速度控制:向上时(速度为正)应该减速,要输出负值,所以速度差=高度差的速度-当前速度如果只有高度控制时:出现高度变化时,高度差要么是正数要么是负数。即使高度差会慢慢变小,但是高度差在没有有到达目标高度时,高度差的符号是不会变的,符号不变就一直加速,尽管加速度在变小,有加速就一定会越过目标值。越过目标值才会开始减速。在减速开始的瞬间,就意味着已经过越过目标点。高度差又出现了,再次重复上面的过程。所以不管怎么调PID参数,都不可能原创 2020-05-20 12:11:29 · 8666 阅读 · 8 评论