飞行控制
坐标系介绍
飞行器运动的描述取决于坐标系(或参考系)的坐标轴的位置和方向。 存在许多坐标系,但Mobile SDK中使用的两个坐标系是相对于飞行器机身和相对于地面的坐标系。
Body坐标系
Body坐标系是相对于飞行器本身的。定义了三个垂直轴,将重心作为原点,并且X轴指向飞行器的前部,Y轴穿过飞行器的右部。 使用右手法则,然后Z轴穿过飞行器的底部。

因此,在Body坐标系中将飞行器在X,Y和Z上的正向平移分别定义为向前,向右和向下平移。
还可以使用右手法则来描述飞行器旋转。描述旋转运动时,X轴
对应横滚轴(Roll)
,Y轴
对应 俯仰轴(Pitch)
,Z轴
对应偏航轴(Yaw)
,飞行器以对应轴为中心轴旋转,分别形成横滚角,俯仰角,偏航角,顺时针方向为正。

横滚,俯仰和偏航的定义与飞行器body坐标系一致,但是对于初次看到它的开发人员有时可能不直观。例如,如果飞行器沿俯仰轴(Y轴)顺时针旋转,俯仰角为正,飞行器移动方向为机头后方,即横滚轴(X轴)负方向。如果飞行器沿俯仰轴(Y轴)逆时针旋转,俯仰角为负,则飞行器移动方向为机头前方,即横滚轴(X轴)正方向。因此,在使用横滚,俯仰和偏航来移动飞行器时必须格外小心,注意理解。
地面(Ground) 坐标系
用于飞行器的一种流行的地面(Ground)坐标系统,将 X正轴对应北方向,Y正轴对应东方向,Z正轴对应下方向。此约定称为 北-东-地 或 NED。
Z正轴对应下方向可能需要一些时间来适应,但是这很方便,因为X轴和Y轴与右手法则和法线导航航向角保持一致。 航向角为0度,将指向北方,+ 90° 指向东方。NED坐标系的原点通常是现实世界中的一个点(例如起飞位置)。

姿态和飞行
飞行器和云台的方向称为姿态,由Body坐标系中俯仰,横滚和偏航的旋转定义。
与油门组合使用时,飞行器可以按照俯仰,横滚和偏航方向进行旋转,从而使飞行器移动。
俯仰
上图从侧面显示了飞行器。俯仰衡量了飞行器围绕横向(Y,俯仰)轴的旋转程度。 调整俯仰将使飞行器向前或向后倾斜。
为了向前倾斜,后螺旋桨比前螺旋桨旋转得更快,推力更大。飞行控制器会自动平衡每个螺旋桨的推力,Mobile SDK提供了API调整俯仰角和油门。
横滚
上图从背面显示了飞行器。 横滚衡量了飞行器绕纵向(X,滚动)轴的旋转程度。 调整横滚角会使飞行器向左或向右倾斜。
向左滚动时,右螺旋桨比左螺旋桨旋转得更快,并且推力更大。 Mobile SDK提供了用于调整横滚角度和速度以实现移动的API。
偏航
上图从上方显示了飞行器。 偏航衡量了飞行器绕垂直(Z,偏航)轴的旋转。 调整偏航角将改变飞行器的航向。
飞行器的桨叶有一半是顺时针旋转的,而另一半是逆时针旋转的。当所有飞行器桨叶均以相同速度旋转时,飞行器的航向将保持恒定。 如果一半旋转速度快于另一半旋转速度,则飞行器将绕偏航轴旋转。 飞行控制器可以平衡每个螺旋桨的速度,DJI SDK提供了API设置航向角。
油门
油门通过控制飞行器的动力系统来推动飞行器运动。 当飞行器处于水平状态时,由于所有推力都在垂直方向上,因此调节油门将使飞行器上下移动。 但是,当飞行器不水平(俯仰或倾角不为零)时,推力将具有水平分量,因此飞行器将水平移动。 较大的俯仰角或侧倾角将导致更大的水平推力,从而导致更快的水平运动。
IOC(智能方向控制)
IOC(在Mobile SDK中称为飞行方向模式)定义了飞行器如何理解水平飞行命令(向前,向后,向左和向右)。
默认情况下,飞行器将相对于自身飞行,因此发送向左命令会导致飞行器向左飞行, 如果正在从第一人称视角驾驶飞行器,这是合理的。 但是当远距离控制飞行器时,可能会造成混乱或不便。
当飞手无法确定飞行器的航向时,则很难预测飞行器相对于飞手的运动方式。 如果飞行器面向飞手,当发出向左飞行的命令时,飞行器将向右移动。
因此,我们提供了航向锁定和返航点锁定两种模式,它们可以相对于飞手而不是飞行器进行移动。 这些模式只在带有"F"和"P"的遥控器上支持。
航向锁定
航向锁定模式使飞行器相对于固定航向移动。 如果航向为0度,则为正北方,那么无论飞行器的偏航方向如何,只要发出向左飞行命令,飞行器就会向西移动。
下图说明了飞行器,其机头方向与航向锁定航向相反,并显示当发出向前或向右命令时,飞行器将相对于其自身分别向后或向左移动。
返航点锁定
返航点锁定模式使飞行器相对于返航点径向移动。 向前和向后的命令将分别使飞行器远离或靠近原点。 左右命令将使飞行器在当前半径处绕返航点进行圆周运动。