PX4混控矩阵的移植

首先感谢各位提供帮助的大神们,我也只是把人的心得总结一下,加上自己的一点感悟:

混控步骤:

一、忽略偏航进行融合处理

1根据混控矩阵计算得到out,这一步已经包含油门,同时记录下最大输出和最小输出,outputs保存四个电机的输出值。

2第一种情况,min小于0,max大于0,min,max之差小于1,可以通过偏移解决。加油油门增加幅度大于|min|,可以通过增加油门的方式解决,boost = -min_out;如果油门增加幅度太小,需要把roll和pitch的缩小后再计算。代码如下如图。

举个例子,当前thrust为0.2,计算得到新的输出值之后,min为-0.2,max为0.6,roll和pitch带来转速上的变化是0.4,由于只计算了Roll和Pitch,所以在旋翼里面,min和max到thrust的距离一定是一样的。这种情况就是第一种情况,并且油门增大幅度为0.2*0.5=0.1,不足以平衡min的大小。需要对Roll和Pitch进行缩放。计算得到boost=0.1,roll_pitch_scale=0.75,然后再计算下面的代码。可以知道min=0,max=0.6,没有饱和。

二、添加偏航后进行处理

首先分析out<0的情况,通过第一步的处理可知out在0到1范围内,假设此时out=0.2;当加上偏航后,out=-0.1,因此偏航就占用了-0.3,但是出现了下溢出,为了防止溢出yaw只能占用-out也即是-0.2,因此对-out进行除以_rotors[i].yaw_scale处理,得到处理后的yaw值,从而有效抑制下溢出;

然后是out>1的情况,通过第一步的处理可知out在0到1范围内,假设此时out=0.8;当加上偏航后,out=1.1,因此偏航就占用了0.3,但是出现了上溢出,为了防止溢出yaw只能占用1-out也即是1-0.8=0.2,因此对1-out进行除以_rotors[i].yaw_scale处理,得到处理后的yaw值,从而有效抑制上溢出;yaw处理也到此结束战斗。

三、融合怠速处理

这个相对比较容易理解就不说了,一般会把_idle_speed赋0;

四、对整体输出的处理(专业说法叫slew rate limiting)

其实这个地方感觉有点像滤波处理,当当前时刻比上一时刻的变化大与最大阈值时,就要省掉当前的值,用上一刻的值加上最大阈值进行代替,当当前时刻比上一时刻的变化小于最小阈值时,就要省掉当前的值,用上一刻的值加上最小阈值进行代替,我感觉就是为了是控制更平稳,增加一定的抗干扰能力,但响应有可能会变慢。

 

接下来就是细节分析了

 

在文件Firmware-master\ROMFS\px4fmu_common\mixers中预定机身的类型,打开quad_+.main如下:

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值