SS shadow是 register                                            

四轴飞行器调pid

arduino 赵浮云 317℃ 0评论

计划:
1. 用PID控制单维度(如角度),达到较好的自动化效果
2. 自平衡小车(实际上就是1加上轮子)
3. 四轴飞行器

第一步昨天做通了,在PID参数上有些体会,先上视频,效果是让陀螺仪保持45度水平角

再上代码

接下来是体会,有这么几点:
1。  P参数越大,回复速度越快,但同时越容易调整过头出现震荡,因此适合同时调大D参数,预计惯性累加量来及时减小电机转动输出(接近要到达位置时)。故曰:大P配大D,小P配小D

2 。 卡尔曼滤波函数 updateKalman 其实没有完全调通,主要是卡尔曼增益一下子就趋近于0了,导致角度响应变得非常慢。不过,如果一直将卡尔曼增益固定在0.1 (见estima_cal函数),反而波形变得很平滑而且响应速度很好。

3。 自己做的融合算法简直就是狗P (见fusion_angle),暂时不报以希望。网上说通过三轴角速度得到的角度容易受运动影响,我保持一个角度拿着mpu6050,突然超某方向运动(但维持角度不变),在串口输出上看到影响不是那么大,可能是因为已经滤过波的吧。

4。 PID函数仍然不那么精确, 理论上说在平衡位置(这里设的是45度)时,PID控制的输出量为零,但我这里还有个十几,当然十几的pwm是带不动电机的,所以视频上面表现的还可以。

5。 autoCorrection函数是用来修正陀螺仪误差的,每次三轴加速度得到的角度为零时,也会将陀螺仪积分的角度归零,可囧的是,如果一直保持非水平位置的话,好像都没有修正的机会

希望各位为我做指点。

转载请注明:赵浮云的blog » 四轴飞行器调pid

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址