四轴飞行器的运动原理

四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置。四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统。
以四轴,X 形状为例:
这里写图片描述
1.飞行器保持悬停, 4个电机的转速保持一致,来使飞行器保持水平。
四个电机的转速=悬停油门。
2.当我们希望飞行器向右飞的时候,我们设定在第一种情况的基础上,增加左边两个电机(3,11)的转速,减小右边两个电机(9,10)的转速。
9号电机=悬停油门 - 右倾的量
10号电机= 悬停油门 - 右倾的量
11号电机 = 悬停油门 + 右倾的量
3号电机= 悬停油门 + 右倾的量

3.当我们希望飞行器向左飞的时候,上面的公式依然成立,只不过右倾的量是负数了。

4.当我们希望飞行器向前飞的时候,那么我们要增加后面一组电机(11,9)的转速,减小前面一组电机(3,10)的转速

9号电机=悬停油门 + 前飞的量
10号电机= 悬停油门 - 前飞的量
11号电机 = 悬停油门 + 前飞的量
3号电机= 悬停油门 - 前飞的量

5.飞行器向后飞的情况,上面公式依然成立,前飞的量为负数。

6.当我们希望飞行器顺时针旋转, 我们增加10号,11号 对角线两个电机的转速,减小3号,9号这条对角线电机的转速。

9号电机=悬停油门 - 旋转的量
10号电机= 悬停油门 + 旋转的量
11号电机 = 悬停油门 + 旋转的量
3号电机= 悬停油门 - 旋转的量

7.当我们希望飞行器逆时针旋转, 我们减小10号,11号对角线两个电机的转速,增加3号,9号这条对角线电机的转速。继续使用上面的公式。

最后,针对一个电机,它同时要负责前后左右和旋转的情况, 那它就叠加了4种情况下的值:
9号电机 = 悬停油门 - 右倾的量 + 前飞的量 - 旋转的量
10号电机 = 悬停油门 - 右倾的量 - 前飞的量 + 旋转的量
11号电机 = 悬停油门 + 右倾的量 + 前飞的量 + 旋转的量
3号电机 = 悬停油门 + 右倾的量 - 前飞的量 - 旋转的量

所以实现代码如下:

#define PIDMIX(X,Y,Z) rcCommand[THROTTLE] + axisPID[ROLL]*X + axisPID[PITCH]*Y + YAW_DIRECTION * axisPID[YAW]*Z

#ifdef QUADX
motor[0] = PIDMIX(-1,+1,-1); //REAR_R
motor[1] = PIDMIX(-1,-1,+1); //FRONT_R
motor[2] = PIDMIX(+1,+1,+1); //REAR_L
motor[3] = PIDMIX(+1,-1,-1); //FRONT_L
#endif
1
2
3
4
5
6
7
8
一切对称,不对称的多旋翼布局都基于此理论,如果有爱的童鞋,可以补充解释 Y3,Y6 ,V尾的公式。甚至可以创造自己发明的布局,有创意的话就晒出来吧。
四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置。四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统。
以四轴,X 形状为例:
这里写图片描述
1.飞行器保持悬停, 4个电机的转速保持一致,来使飞行器保持水平。
四个电机的转速=悬停油门。
2.当我们希望飞行器向右飞的时候,我们设定在第一种情况的基础上,增加左边两个电机(3,11)的转速,减小右边两个电机(9,10)的转速。
9号电机=悬停油门 - 右倾的量
10号电机= 悬停油门 - 右倾的量
11号电机 = 悬停油门 + 右倾的量
3号电机= 悬停油门 + 右倾的量

3.当我们希望飞行器向左飞的时候,上面的公式依然成立,只不过右倾的量是负数了。

4.当我们希望飞行器向前飞的时候,那么我们要增加后面一组电机(11,9)的转速,减小前面一组电机(3,10)的转速

9号电机=悬停油门 + 前飞的量
10号电机= 悬停油门 - 前飞的量
11号电机 = 悬停油门 + 前飞的量
3号电机= 悬停油门 - 前飞的量

5.飞行器向后飞的情况,上面公式依然成立,前飞的量为负数。

6.当我们希望飞行器顺时针旋转, 我们增加10号,11号 对角线两个电机的转速,减小3号,9号这条对角线电机的转速。

9号电机=悬停油门 - 旋转的量
10号电机= 悬停油门 + 旋转的量
11号电机 = 悬停油门 + 旋转的量
3号电机= 悬停油门 - 旋转的量

7.当我们希望飞行器逆时针旋转, 我们减小10号,11号对角线两个电机的转速,增加3号,9号这条对角线电机的转速。继续使用上面的公式。

最后,针对一个电机,它同时要负责前后左右和旋转的情况, 那它就叠加了4种情况下的值:
9号电机 = 悬停油门 - 右倾的量 + 前飞的量 - 旋转的量
10号电机 = 悬停油门 - 右倾的量 - 前飞的量 + 旋转的量
11号电机 = 悬停油门 + 右倾的量 + 前飞的量 + 旋转的量
3号电机 = 悬停油门 + 右倾的量 - 前飞的量 - 旋转的量

所以实现代码如下:

#define PIDMIX(X,Y,Z) rcCommand[THROTTLE] + axisPID[ROLL]*X + axisPID[PITCH]*Y + YAW_DIRECTION * axisPID[YAW]*Z

#ifdef QUADX
motor[0] = PIDMIX(-1,+1,-1); //REAR_R
motor[1] = PIDMIX(-1,-1,+1); //FRONT_R
motor[2] = PIDMIX(+1,+1,+1); //REAR_L
motor[3] = PIDMIX(+1,-1,-1); //FRONT_L
#endif
1
2
3
4
5
6
7
8
一切对称,不对称的多旋翼布局都基于此理论,如果有爱的童鞋,可以补充解释 Y3,Y6 ,V尾的公式。甚至可以创造自己发明的布局,有创意的话就晒出来吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值