四轴飞行器的运动原理

news/2024/11/8 2:33:53/

四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置。四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统。
以四轴,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尾的公式。甚至可以创造自己发明的布局,有创意的话就晒出来吧。


http://www.ppmy.cn/news/233136.html

相关文章

椭圆 / 椭圆的画法

原文链接: https://www.lfhacks.com/t/draw-ellipse 在现实生活中如何画 椭圆 ?椭圆并不是由圆压扁而来,而是要符合一定的规则才能称为椭圆。现实生活中如果有画椭圆的需求,应该按照固定的方法作图。本文介绍一些绘制椭圆的方法。…

误差椭圆

原文链接:https://blog.csdn.net/u010182633/article/details/45924061 介绍 在这篇文章中,我将展示如何绘制二维正态分布数据的误差椭圆,又名置信椭圆。误差椭圆代表高斯分布的等值轮廓线,并允许可视化一个2D置信区间。下图显示了…

Ellipse(椭圆)

原滋原味的英文介绍,挺有意思! http://mathworld.wolfram.com/Ellipse.html An ellipse is a curve that is the locus of all points in the plane the sum of whose distances and from two fixed points and (the foci) separated by a distance…

圆及椭圆拟合

在opencv学习中,圆和椭圆的拟合是必不可少的,下面我就用一个简单的例子介绍一下我们如何用opencv来拟合。 实验描述: 输入:图像文件seal1.jpg、seal2.jpg、coin1.jpg 任务: 尝试将上述三个图像中圆或椭圆信息提取出来…

python 绘制椭圆

第一种方法调用matplotlib的包函数 代码 from matplotlib.patches import Ellipse import matplotlib.pyplot as plt fig plt.figure() ax fig.add_subplot(111) ell1 Ellipse(xy (0.0, 0.0), width 4, height 8, angle 90.0, facecolor yellow, alpha0.3) ax.add_pat…

椭圆球

//使用半个椭圆 创建椭球体Standard_Real major 6;Standard_Real minor 4;gp_Ax2d axis gp::OX2d();gp_Elips2d EE(axis, major, minor);;Handle(Geom2d_TrimmedCurve) arc GCE2d_MakeArcOfEllipse(EE, 0.0, M_PI);//Handle(Geom_CylindricalSurface) aCylinder new Geom_…

椭圆曲线算法

一、从平行线谈起 平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设(大家想想初中学习的平行公…

椭圆曲线:椭圆曲线是怎么来的?

目录 发展说明小结 发展 下边概括性地说明下,椭圆曲线的诞生,和历史也许有些出入,但问题不大,完全可以帮助大家理解,椭圆曲线如何诞生! 1、事情要从一个古老问题“勾股弦”说起,在明白勾与股…