首页 > Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器

Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器

1.四轴飞行器运动学和动力学模型

在讨论四轴飞行器时,明确定义两个参考坐标系会很有帮助:一个固定的世界坐标系W{W}W和一个牢固地附着到四轴飞行器的质心(CoM)的运动坐标系B{B}B

假设运动坐标系B{B}B{B}B的x轴指向电动机编号1,y轴指向电动机编号2,并且当四轴飞行器电机静止在水平表面上时,z轴指向“上”。

在这里插入图片描述

FiF_iFi = 电动机iii的推力(N) 、 MiM_iMi = 螺旋桨iiiB{B}B的转矩(力矩)(N*m), 其中i ∈ [1, 2, 3, 4]。

我们可以通过使用三个欧拉角来描述运动框架B{B}B相对于W{W}W的方向。具体来说,让我们定义一下横滚(侧倾)角(ϕphiϕ),俯仰角(θ hetaθ)和偏航角(ψpsiψ)作为固有(ZXY)旋转序列,其中,

在这里插入图片描述换句话说,左乘一个向量p,由BWR{}^{W}_BRBWR表示的B{B}B将给出以W{W}W表示的p的坐标。

[pxpypz]W=BWR[pxpypz]Begin{bmatrix} p_x \ p_y \p_z end{bmatrix}_W = {}^{W}_{B}Regin{bmatrix} p_x \ p_y \p_z end{bmatrix}_BpxpypzW=BWRpxpypzB

轴飞行器飞机具有许多功能,使它们在动力学和控制方面变得有趣起来。如前所述,3D空间中的刚体具有六个自由度。但是,四轴飞行器只有四个电机作为控制输入,因此四轴飞行器是欠驱动系统的一个示例。这意味着四轴飞行器不能独立控制每个平移和旋转自由度。

四轴飞行器的欠驱动特性迫使某些旋转运动和平移运动之间发生运动学耦合。为了使四轴飞行器向前或向后移动,bxold {b_x}bx表示“前进”方向,四轴飞行器必须围绕byold{b_y}by轴有一个正的俯仰角。同样,为了“向右”移动,即朝-方向移动byold{b_y}by轴,四轴飞行器必须具有正侧倾角bxold {b_x}bx

从概念上讲,垂直方向的移动要简单得多。每个电机沿电机产生一个力bzold{b_z}bz与电机角速度平方成比例的轴,

Fi=kFωi2F_i = k_Fomega^{2}_iFi=kFωi2

其中, kFk_FkF是常数,并且iii ∈[1,2,3,4]。每个电机的力沿着bzold{b_z}bz。如果电动机的净推力大于重力,则四旋翼将“向上”加速。当然,反之亦然。

偏航(yaw)运动-关于 bzold{b_z}bz。电机位于bxold{b_x}bx 轴,电动机1和3顺时针旋转(关于bzold{b_z}bz 轴),而位于 byold{b_y}by轴2和4逆时针旋转。需要相反的旋转对来抵消来自四轴飞行器机体上的旋转叶片的感应扭矩。每个转子转矩的大小与电动机角速度的平方成正比,

Ti=kMωi2T_i = k_Momega^{2}_iTi=kMωi2

其中, kMk_MkM是常数,并且iii∈[1,2,3,4]。

根据牛顿第三定律,在四轴飞行器上产生的扭矩与螺旋桨的旋转方向相反。,对于Unity模拟器中的四轴飞行器(下图),电机1和3位于bxold{b_x}bx轴上,并顺时针旋转(从上图可见),而电机2和4位于byold{b_y}by轴上,并逆时针旋转。因此,来自电动机1和3的扭矩作用于+bzold {b_z}bz电机2和4的扭矩作用于-bzold {b_z}b

更多相关:

  • iOS开发UI篇—多控制器和导航控制器简单介绍 一、多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理...