Arduino兼容之Stm32单片机四翼飞行器设计
发布时间:2014-09-04 11:02
第一章绪论
1.1选题背景
多旋翼飞行器最早出现于百年前的欧洲,由于其控制算法的复杂性,超过了当时的科技水平,早期的多旋翼飞行器因性能较差和体积庞大而无法实用化,仅仅停留于科研阶段⑴。近年来由于新材料(碳纤维等)、新型微机电(MEMS)传感器、微型惯性导航控制器(MIMU)以及计算机自动控制算法的不断发展和进步,以四旋翼飞行器为代表的多旋翼飞行器得以在控制技术上取得巨大飞跃,开始迅速实用化产业化。并呈现小型化微型化的趋势,逐步在许多行业薪露头角,进入了人们的生活中。四轴飞行器作为一种有代表性的多旋翼飞行器[3],具有体积小,重量轻,结构简单、性能可靠、控制灵活、飞行稳定的特点。因为四轴飞行器比起传统直升机更为稳定和简便可靠,几乎不会出现机械结构上的问题,它能够成为非常好的无人机平台,以执行一些目前需要小型飞行器来执行的任务,可以进入一些不易进入的环境之中进行勘察和拍摄等任务,如火山、地震、洪水灾区等。
1.2国内外研究现状
国内外目前也致力于新传感器技术的发展和运用。出现了通用的整合一体的传感器模块,以及这些模块小型化微型化,精度也越来越高,使得多轴飞行器的体积大大缩小。新的材料如碳纤维也运用于机架,使得目前机体重量进一步降低,载重和续航能力进一步提高。
……………
第二章四轴飞行器飞行原理、飞行姿态及滤波算法
2.1四轴飞行器的飞行原理
升降运动——在图2-1中,升降运动实际上就是飞行器在Z轴方向的上下运动。我们假设四轴飞行器处于平稳状态,此时四个旋翼转速完全一样。此时同时使四个旋翼转速增加,可以让升力克服机体重量,使得机体垂直向上运动。反之,同时减小四个旋翼的转速,可使机体垂直下降。当四个旋翼的处于某一个转速时,升力和机体重力相等,此时飞行器处于平稳悬停的状态。
2.2四轴飞行器姿态的表示和运算
四轴飞行器的关键在于其空间姿态的检测、控制和保持。要表征飞行器在空间中的姿态,必须建立一个空间的直角坐标系来为其姿态作出参照,这个坐标系称为地理坐标系。因为四轴活动范围比较小,因此可以将地面视作是水平的平面。在本课题中,我们采用“东北天”地理坐标系来作为参照系⑴]:Z轴的正方向指向天顶,负方向指向地理地面;X轴的正方向指向地理上的正东,负方向指向地理上的正西;Y轴的正方向指向北面,负方向指向南面。同时四轴飞行器本身作为刚体也存在着一个坐标系,称为机体坐标系(如下图所示)。四轴飞行器处于平衡状态下,飞行器本身的坐标系和地理坐标系重合,机体坐标系的Z轴与地理坐标系的Z轴重合。四个电机及中心控制部分都分布在XY平面上。根据刚体的欧拉旋转定理,四轴飞行器的在空间里飞行姿态可用欧拉角来表示。欧拉角就是地理坐标系与机体坐标系的旋转关系。坐标系统如图2-7所示:
飞行器的姿态,是指在飞行器的正方向的上,用三个姿态角即通常所说的欧拉角表示,包括偏航角(yaw)、俯仰角(pitch)和滚转角(roll),如图2-8。飞行姿态是一个旋转变换,表示机体坐标系与地理坐标系的旋转转换关系,我们定义飞行姿态为机体坐标系向地理坐标系的转换。旋转变换有多种表达和转换的方式,包括方向余弦、欧拉角、四元数法等。飞行器的姿态是旋转上的某种变换。由欧拉旋转定理可知,一种姿态经过相互串联的一系列旋转可以变为另一个姿态。如果我们用矩阵表示旋转,旋转的串联就由矩阵乘法来实现。
………
第三章四轴飞行器的软硬件系统架构........... 31
3.1 硬件结构框图........... 31
3.2 硬件电路设计 ..........32
第四章飞行姿态控制算法实现 ..........45
4. 1 软件初始化过程 ............45
第五章总结与展望...... 65
第四章飞行姿态控制算法实现
4.1软件初始化过程
1、CPU的初始化CPU的初始化主要进行MCU本身的设置和操作,设定MCU的一些功能处于正确的状态或工作模式,主要完成如下几点:(1)关闭全局中断在STM32 maple mini上电后,因为默认全局中断是幵启的,可能会影响后续初始化,所以在程序的最开头先要先将全局中断关闭,必要时再打开。(2)波特率设为115200,启动串口 1因为使用了蓝牙串口模块,蓝牙模块BC04的串口 RX、TX端分别和系统板的串口 TX、RX (D26D25)端连接。所以,将串口通信波特率设置在115200,以方便和蓝牙模块进行通信,实现数据回传上位机以及遥控功能。(3)初始化IIC总线。IIC总线是沟通MCU和各个传感器模块的主要数据通道。根据STM32 maplemini的数据手册,该系统板上2对IIC总线接口 SCL、SDA两线分别为1脚和0脚,还有15脚和16脚。我们选择15脚和16脚作为IIC总线的接口。(4)初始化PWM输出状态我们利用Maple系统板输出PWM波,用来控制四个电机的转速。在arduino标准中,PWM频率固定在490Hz,但在Maple中,PWM频率是可调的,默认频率为550Hz。如连接图所示,我们设置D3、D4、D5、D8为输出PWM信号的四个引脚分别输出到四路PWM控制信号信号电机的四个MOS驱动管。
4.2四元数法及其姿态解算的算法实现
在主程序中,通过多次调用四元数子程序,将三轴加速度计和三轴陀螺仪计算得出初步的角度数据。这些角度数据为平面角度,现在我们需要将角度数据转化成为欧拉角,以实现姿态的结算。在这里,我们通过四元数法,先对角度数据进行四元数计算,并将四元数转换计算得到欧拉角。
............
第五章总结与展望
本课题主要的任务是在MCU上完成四轴飞行器飞行姿态控制系统的实现。我们通过对于姿态传感器测得的加速度和角速度读取,通过使用四元数法将加速度和角速度运算得出四轴飞行器的姿态角即欧拉角,再通过卡尔曼滤波将得出的欧拉角与原先的角速度进行融合和滤波,以消除干扰和累积误差,最终得出了正确的飞行器姿态角,并最终成功达到了使四轴飞行器在室内平稳飞行的目的。3、研究了四旋翼飞行器的测试飞行数据的方法和调试方法测试平台上,我们采用了自制平衡木平台来对四轴飞行器进行参数测试和调整,主要用以调试飞行器的PID参数。软件上,我们使用了上位机软件,和机载蓝牙模块进行通信,以获取飞行器的事实飞行姿态数据。以方便方便进行分析和计算。本课题探索出了一条四轴飞行器低成本小型化通用化的设计思路,研究并讨论了数据滤波融合的两种种算法,实现了四元数和卡尔曼滤波算法,测定了相关的数据。成功实现了四轴飞行器姿态的自主稳定。为今后多轴飞行器的设计和研究创新提供了思路。由于时间紧迫,并未做到四旋翼飞行器的无需人工遥控的自主飞行控制以及定高定点等功能,这些也是今后努力的方向。
本文编号:8653
1.1选题背景
多旋翼飞行器最早出现于百年前的欧洲,由于其控制算法的复杂性,超过了当时的科技水平,早期的多旋翼飞行器因性能较差和体积庞大而无法实用化,仅仅停留于科研阶段⑴。近年来由于新材料(碳纤维等)、新型微机电(MEMS)传感器、微型惯性导航控制器(MIMU)以及计算机自动控制算法的不断发展和进步,以四旋翼飞行器为代表的多旋翼飞行器得以在控制技术上取得巨大飞跃,开始迅速实用化产业化。并呈现小型化微型化的趋势,逐步在许多行业薪露头角,进入了人们的生活中。四轴飞行器作为一种有代表性的多旋翼飞行器[3],具有体积小,重量轻,结构简单、性能可靠、控制灵活、飞行稳定的特点。因为四轴飞行器比起传统直升机更为稳定和简便可靠,几乎不会出现机械结构上的问题,它能够成为非常好的无人机平台,以执行一些目前需要小型飞行器来执行的任务,可以进入一些不易进入的环境之中进行勘察和拍摄等任务,如火山、地震、洪水灾区等。
1.2国内外研究现状
国内外目前也致力于新传感器技术的发展和运用。出现了通用的整合一体的传感器模块,以及这些模块小型化微型化,精度也越来越高,使得多轴飞行器的体积大大缩小。新的材料如碳纤维也运用于机架,使得目前机体重量进一步降低,载重和续航能力进一步提高。
……………
第二章四轴飞行器飞行原理、飞行姿态及滤波算法
2.1四轴飞行器的飞行原理
升降运动——在图2-1中,升降运动实际上就是飞行器在Z轴方向的上下运动。我们假设四轴飞行器处于平稳状态,此时四个旋翼转速完全一样。此时同时使四个旋翼转速增加,可以让升力克服机体重量,使得机体垂直向上运动。反之,同时减小四个旋翼的转速,可使机体垂直下降。当四个旋翼的处于某一个转速时,升力和机体重力相等,此时飞行器处于平稳悬停的状态。
2.2四轴飞行器姿态的表示和运算
四轴飞行器的关键在于其空间姿态的检测、控制和保持。要表征飞行器在空间中的姿态,必须建立一个空间的直角坐标系来为其姿态作出参照,这个坐标系称为地理坐标系。因为四轴活动范围比较小,因此可以将地面视作是水平的平面。在本课题中,我们采用“东北天”地理坐标系来作为参照系⑴]:Z轴的正方向指向天顶,负方向指向地理地面;X轴的正方向指向地理上的正东,负方向指向地理上的正西;Y轴的正方向指向北面,负方向指向南面。同时四轴飞行器本身作为刚体也存在着一个坐标系,称为机体坐标系(如下图所示)。四轴飞行器处于平衡状态下,飞行器本身的坐标系和地理坐标系重合,机体坐标系的Z轴与地理坐标系的Z轴重合。四个电机及中心控制部分都分布在XY平面上。根据刚体的欧拉旋转定理,四轴飞行器的在空间里飞行姿态可用欧拉角来表示。欧拉角就是地理坐标系与机体坐标系的旋转关系。坐标系统如图2-7所示:
飞行器的姿态,是指在飞行器的正方向的上,用三个姿态角即通常所说的欧拉角表示,包括偏航角(yaw)、俯仰角(pitch)和滚转角(roll),如图2-8。飞行姿态是一个旋转变换,表示机体坐标系与地理坐标系的旋转转换关系,我们定义飞行姿态为机体坐标系向地理坐标系的转换。旋转变换有多种表达和转换的方式,包括方向余弦、欧拉角、四元数法等。飞行器的姿态是旋转上的某种变换。由欧拉旋转定理可知,一种姿态经过相互串联的一系列旋转可以变为另一个姿态。如果我们用矩阵表示旋转,旋转的串联就由矩阵乘法来实现。
………
第三章四轴飞行器的软硬件系统架构........... 31
3.1 硬件结构框图........... 31
3.2 硬件电路设计 ..........32
第四章飞行姿态控制算法实现 ..........45
4. 1 软件初始化过程 ............45
第五章总结与展望...... 65
第四章飞行姿态控制算法实现
4.1软件初始化过程
1、CPU的初始化CPU的初始化主要进行MCU本身的设置和操作,设定MCU的一些功能处于正确的状态或工作模式,主要完成如下几点:(1)关闭全局中断在STM32 maple mini上电后,因为默认全局中断是幵启的,可能会影响后续初始化,所以在程序的最开头先要先将全局中断关闭,必要时再打开。(2)波特率设为115200,启动串口 1因为使用了蓝牙串口模块,蓝牙模块BC04的串口 RX、TX端分别和系统板的串口 TX、RX (D26D25)端连接。所以,将串口通信波特率设置在115200,以方便和蓝牙模块进行通信,实现数据回传上位机以及遥控功能。(3)初始化IIC总线。IIC总线是沟通MCU和各个传感器模块的主要数据通道。根据STM32 maplemini的数据手册,该系统板上2对IIC总线接口 SCL、SDA两线分别为1脚和0脚,还有15脚和16脚。我们选择15脚和16脚作为IIC总线的接口。(4)初始化PWM输出状态我们利用Maple系统板输出PWM波,用来控制四个电机的转速。在arduino标准中,PWM频率固定在490Hz,但在Maple中,PWM频率是可调的,默认频率为550Hz。如连接图所示,我们设置D3、D4、D5、D8为输出PWM信号的四个引脚分别输出到四路PWM控制信号信号电机的四个MOS驱动管。
4.2四元数法及其姿态解算的算法实现
在主程序中,通过多次调用四元数子程序,将三轴加速度计和三轴陀螺仪计算得出初步的角度数据。这些角度数据为平面角度,现在我们需要将角度数据转化成为欧拉角,以实现姿态的结算。在这里,我们通过四元数法,先对角度数据进行四元数计算,并将四元数转换计算得到欧拉角。
............
第五章总结与展望
本课题主要的任务是在MCU上完成四轴飞行器飞行姿态控制系统的实现。我们通过对于姿态传感器测得的加速度和角速度读取,通过使用四元数法将加速度和角速度运算得出四轴飞行器的姿态角即欧拉角,再通过卡尔曼滤波将得出的欧拉角与原先的角速度进行融合和滤波,以消除干扰和累积误差,最终得出了正确的飞行器姿态角,并最终成功达到了使四轴飞行器在室内平稳飞行的目的。3、研究了四旋翼飞行器的测试飞行数据的方法和调试方法测试平台上,我们采用了自制平衡木平台来对四轴飞行器进行参数测试和调整,主要用以调试飞行器的PID参数。软件上,我们使用了上位机软件,和机载蓝牙模块进行通信,以获取飞行器的事实飞行姿态数据。以方便方便进行分析和计算。本课题探索出了一条四轴飞行器低成本小型化通用化的设计思路,研究并讨论了数据滤波融合的两种种算法,实现了四元数和卡尔曼滤波算法,测定了相关的数据。成功实现了四轴飞行器姿态的自主稳定。为今后多轴飞行器的设计和研究创新提供了思路。由于时间紧迫,并未做到四旋翼飞行器的无需人工遥控的自主飞行控制以及定高定点等功能,这些也是今后努力的方向。
..........
参考文献(略)
本文编号:8653
本文链接:https://www.wllwen.com/kejilunwen/zidonghuakongzhilunwen/8653.html