资源描述
(2014届)本科毕业设计(论文)资料题 目 名 称:四旋翼飞行器PID控制器的设计 湖南工业大学教务处 2014届本科毕业设计(论文)资料第一部分 毕业论文(2014届)本科毕业设计(论文)2014年5月 33摘 要近年来,随着新材料的涌现及新传感技术的发展,四旋翼飞行器迅速发展起来。四旋翼飞行器是一种具有四个对称旋翼的直升机,结构简单,机动性强,飞行灵活,可垂直起降,悬停甚至完成一些高难度飞行动作。它所具备的优越性能,使其应用前景十分广阔。本设计主要介绍一种四旋翼飞行器的实现方案,以意法半导体公司生产的基于AMR Cortex-M3内核的STM32F103C8T6微型控制器作为计算控制单元,以Invensense公司生产的MPU6050作为惯性测量单元,整合飞行器姿态,以NRF24L01无线通信模块作为通信渠道,实现了上位机与下位机各项数据的实时传输,使用WFLY07遥控器实现了对四旋翼飞行器的无线遥控。本文详细介绍了四旋翼飞行器的飞行原理、硬件构造和软件设计,设计了一种PID控制器,实现了四轴飞行器的各项动作控制。关键词: 四旋翼飞行器,STM32F103,MPU6050,姿态解算,PID控制器ABSTRACTIn recent years, with the new material and new MEMS technology, the quad-rotor obtains a rapid development .And that made it become a popular flight model among many model aircraft enthusiasts. Quad-rotor is a kind of symmetry with the advantages of simple structure, strong flexibility, It can take off and land vertically, In addition, it can also hover in the air and even do some difficult maneuver. Its superior performance has the very broad application prospects.This design will introduce a scheme to make a quad-rotor. The design used STM32F103C8T6 which worked with the new-fashioned ARM Cortex-M3 micro processer as the control unit. In addition, a chip named MPU6050 was used to measure the attitude data of the quad-rotor, and the wireless communication module named NRF24L01 to make the PC and the quad-rotor communicate well. Besides, a WFLY07 remote was used to control the quad-rotor. We stated the flight theory, and the structure of the hardware and software in detail importantly, a PID controller was designed to control the attitude and made it really worked.Keywords:Quad-rotor,STM32F103,MPU6050,Attitude calculation,PID controller 目 录摘 要IABSTRACTII第一章 四旋翼飞行器概述11.1引言11.2四旋翼飞行器的国内外研究现状11.2.1 国外研究现状11.2.2 国内研究现状21.3设计意义及应用前景3第二章 四旋翼飞行器飞行原理4第三章 四旋翼飞行器常用部件及安装63.1四旋翼飞行器部件介绍63.1.1 风火轮450机架63.1.2 新西达2212 930kv无刷电机63.1.3 新西达30A电子调速器73.1.4 1045正反浆83.1.5 2200mAh 11.1V 30C 充电锂电池93.1.6 飞行主控stm32f103c8t693.1.7 惯性器件MPU6050103.1.8 天地飞7遥控器113.1.9 天地飞7无线接收机123.1.10 5V稳压电路133.2 四旋翼飞行器的安装143.2.1 飞行器硬件连接图143.2.2 x模式和+模式的区别143.2.2 安装事项15第四章 四旋翼上位机及下位机164.1匿名上位机软件平台164.1.1 匿名上位机功能164.1.2 匿名上位机通信协议164.2下位机程序模块174.2.1 DMP使用方法174.2.2 NRF24L01无线通信184.2.3 无线接收机解码程序184.2.4 电调驱动程序194.2.5 姿态解算程序194.2.6 PID控制器程序20第五章 四旋翼飞行器姿态解算215.1 捷联式惯性导航系统介绍215.2 姿态解算22第六章 四旋翼飞行器PID控制器设计236.1 PID控制器介绍236.2 PID控制思想246.3 PID控制器程序实现246.4 PID控制器参数整定25第七章 结论及存在的问题27第八章 心得体会28参考文献29致谢30附录31湖南工业大学本科毕业设计(论文)第一章 四旋翼飞行器概述1.1引言目前国内外对飞行器的研究主要包括三种:固定翼、旋翼及扑翼式,四旋翼飞行器在布局形式上属于旋翼式的一种。国外早在上世纪初期就开始研究四旋翼飞行器。这种飞行器由军方率先研发并制造用于情报侦查等领域。很多科技企业、大学及研究所也研发并实现了自己的四旋翼飞行器。2012年2月,由美国种子基金会(The Sapling Foundation)运营的非盈利组织TED大会请出了美国宾夕法尼亚大学(University Of Pennsylvania)动力科学院(School of Engineering and Applied Science)的一位教授和他所带领的一个四旋翼飞行器研发团队,他们陈述了目前一些无人机的不足之处和四旋翼飞行器的优越性,并多元化展示了他们研发的四旋翼飞行器在军事,勘探等多种行业的多种用途。事实上,很多无人机都需要专业的飞行控制团队进行远程操控,包括几个专业的飞行员,远程雷达感应操作员和团队协调员。除此之外,这些无人机在自身结构、体积、重量及成本等方面都有缺点。而四旋翼飞行器结构简单,体积小巧,重量轻便,机动性强,飞行灵活,可垂直起降,悬停甚至完成一些高难度飞行动作。这些优势使四旋翼飞行器迅速成为无人机领域冉冉升起的新星,也让人看到了它的研发价值和应用前景。很多行业如军事打击、公安追捕、灾害搜救、农林业调查、输电线巡查、航拍等都成为四旋翼飞行器体现其优越性的平台。1.2四旋翼飞行器的国内外研究现状1.2.1 国外研究现状目前,国内外对四旋翼飞行器的研究主要集中在3个方面:基于惯性导行系统的自主飞行控制、基于视觉功能的自主飞行控制和自主飞行器系统方案,典型代表有:瑞士洛桑联邦理工大学(EPFL)的OS4、宾夕法尼亚大学的HMX4。OS4是EPFL自动化系统实验室开发的一种电动小型四旋翼飞行器,研究的重点是机构设计和自主导航算法,目标是实现室内和室外完全自主飞行。OS4I最大长度约73cm,质量为235g;它使用了Draganflyer的旋翼和机架,4个Faulhaber1724电机,以及一个Xsense的MT9-B微惯性器件。通过万向节将飞行器固定在飞行测试平台上,使其在三个方向都可以灵活运动,便于调试。飞行器的能源供给、数据处理、电机驱动以及飞行控制都由外部提供。OS4已经基于PID、LQ、Backstepping及Sliding-mode等多种控制算法实现了飞行器姿态控制。OS4第二代OS4II的机身最大长度72cm,重520g。机载230g的锂电池,可以自主飞行30min。它与OS4I的区别主要是:旋翼的桨叶面积更大,无刷电机更轻、功率更大,不用电机减速箱而改用皮带减速装置,主控器、惯性器件、电池和电机驱动模块等直接装在机体上。最终在室内实现了OS4II基于惯性导行系统的自主悬停。宾夕法尼亚大学的HMX4最大长度76cm,重700g,机体底部有5个彩色标记。地面摄像头会实时跟踪并飞行器底部标记的位置与面积,从而计算出飞行器 的3个姿态角和位置。研究人员将整个系统安装在一个实验平台上,使飞行器实现了自主悬停,使用的控制算法是Backstepping。之后HMX4的研究人员又研发出一种基于机载与地面双摄像头的视觉定位与定姿系统,进一步提高了测量精度。这种基于视觉的四旋翼飞行器控制可以很好地被用于执行一些特殊任务,如,在固定平台自主起飞、降落,又如,与地面可移动机器人协同工作等。 宾夕法尼亚大学的四旋翼飞行器研究已经从对单个飞行器的控制上升到对多个飞行器的控制。研究重点是多个飞行器之间协调实现队形排列,运动计算等算法设计,完成对飞行器机群的控制。比如宾法尼亚大学实现的四旋翼飞行器群可以分别演奏一种乐器,并可以实现相互之间的协调,完成一首交响乐的演奏。目前国外四旋翼飞行器的研究发展迅速,美国、日本、韩国、澳大利亚和德国等在此项目上经验丰富,技术较为成熟。部分国外研发的飞控算法及制作的飞控板很多都已经进入我国并受到航模爱好者青睐,比如MWC飞控、KK飞控,MK飞控,因其开源,使用得较多。1.2.2 国内研究现状国内对四旋翼飞行器的研究也比较多。清华大学、北京航空航天大学、上海交通大学、浙江大学等都有对此项目有很大的研发投入并获取了一定研究成果。深圳市大疆创新科技有限公司(DJI-Innovations,简称DJI),成立于2006年。是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商。凭借对创新的高度投入,大疆研发并推出了多个具有业界最顶尖水平的产品系列,包括Ace系列工业无人直升机智能飞行控制系统和地面站控制系统,WooKong-M系列多旋翼控制系统级地面站系统,Spreading Wings筋斗云系列多旋翼专业影视航拍飞行器,包含了高清数字图传的Ruling如来系列多功能手持地面控制终端。此外,大疆还推出了专门针对模型和玩具市场的WooKong-H遥控直升机飞控系统,Naza系列飞控系统,Flame Wheel 风火轮系列轻型多轴飞行器等产品。目前,国内有很多致力于开源四旋翼飞行器研发的科技企业及技术团队,最受欢迎的有匿名科创开发的匿名四轴,圆点博士小四轴等。匿名四轴的控制方法主要是对姿态欧拉角进行控制,圆点博士小四轴主要是对姿态四元数进行控制,控制效果都很好。这给很多电子技术爱好者提供了丰富的学习资料。国内有很多针对多旋翼飞行器的技术论坛,也有很多技术论坛专门开设了四旋翼飞行器讨论版块,汇聚了众多四旋翼飞行器的爱好者,提供了飞行器技术学习和提升的平台。 1.3设计意义及应用前景四旋翼飞行器的控制有很多难点。首先,对四旋翼飞行器很难建立准确的动力学模型。因为飞行过程中,影响因素较多,且具有不确定性。其次,现代控制理论的控制器都要基于对被控对象的精确建模上,如果建模不准确,控制器的性能就会不理想。第三,利用惯性器件测算四旋翼飞行器姿态信息的准确度也是实现稳定控制的关键。毋庸置疑,对此飞行器的研究将会推进这三个问题的解决,是得人类对于复杂环境下的运动控制更进一步。所以,其研究价值非同一般。四旋翼飞行器所具备的优越性能,应用前景十分广阔。可应用于军事侦察、监视、巡逻、获取情报等。可用于自然灾害之后的救援、搜索。可用于人难以到达的高压线、水坝、桥墩和地震后路段的检查,航拍和成图。还可用于各类勘探工作等。所以,从工程和理论的角度来讲,四旋翼飞行器的研究具有重要意义。本设计做的飞行器就从小方面来讲,可以为我院的同学做一个引子。第一,可以引起大家对四旋翼飞行器的兴趣和热情。第二,对四旋翼飞行器的飞行原理和基础知识有详细认知,为后续同学打好基础。第三,在技术上进行一些先导性的尝试,总结相关的经验和教训,以供借鉴。四旋翼飞行器集成了惯性导航技术、软硬件设计技术、自动控制技术、是一个多学科的综合平台,也是提高能力的平台。第二章 四旋翼飞行器飞行原理四旋翼飞行器机架呈十字状,有四个螺旋桨分别位于十字架的端点处,如下图:图1 四旋翼飞行器原理示意图在任何一种模式下,四个螺旋桨顺时针编号为1、2、3、4号,其中1、3号为A组,2、4号为B组,其中,A组螺旋桨顺时针旋转,为正桨;B组螺旋桨逆时针旋转,为反桨。四旋翼飞行器可分为两种模式,即模式和模式。上图展示的是模式。首先,以模式介绍飞行器的姿态角:Roll,Pitch,Yaw。这三个角反应了飞行器的对地姿态。Roll角为横滚角,如图,设螺旋桨1为飞行器机头。机体绕X轴旋转产生与水平面的夹角,即为横滚角,角度正负与惯性器件的安装有关。Pitch角为俯仰角,如图,机体绕Y轴旋转产生与水平面的夹角,为俯仰角,角度正负与惯性器件安装有关。Yaw角为偏航角,如图,机体绕Z轴旋转产生原来XOZ面的夹角,为偏航角。在模式下,A组螺旋桨与B组螺旋桨基本没有关系。实现基本的飞行动作只需调节一组螺旋桨的转速。当四个螺旋桨转速相同时,螺旋桨间的扭力矩相互抵消,实现飞行器姿态水平,如果增加螺旋桨的转速,可实现飞行器上升,下降等动作。当1、3号螺旋桨转速增加,而2、4号螺旋桨转速不变时,飞行器可以实现偏航。当1、3号螺旋桨转速不变,2号螺旋桨转速增加,4号螺旋桨转速减小,飞行器可实现横滚运动,即飞行器向左飞。当2、4号螺旋桨转速不变,1号螺旋桨转速增加,3号螺旋桨转速减小,飞行器可实现俯仰运动,即飞行器向前后飞。由此,可以想像飞行器在不同螺旋桨转速下的飞行动作。X模式与模式不太相同。在X模式下,飞行器的四个螺旋桨都要参与到飞行动作的调节中,将图1中机体坐标绕Z轴顺时针旋转45,就是X模式下的机体坐标。此时,飞行器要实现飞行动作就要靠螺旋桨两两协调完成。当2、3好螺旋桨转速增加,1、4号螺旋桨转速减小,飞行器实现Roll方向的运动。当1、2号螺旋桨转速增加,3、4号螺旋桨转速减小,飞行器是实现Pitch运动。当1、3号螺旋桨转速增加,2、4号螺旋桨转速不变,飞行器实现Yaw运动。第三章 四旋翼飞行器常用部件及安装3.1四旋翼飞行器部件介绍3.1.1 风火轮450机架风火轮450机架是深圳市大疆创新科技公司设计的多旋翼飞行器套装。其电机轴距450mm,使用尼龙+纤材料,硬度高,耐摔。其自身重量非常轻便,加上螺旋桨大约在285g左右。图3.1.1 风火轮450机架3.1.2 新西达2212 930kv无刷电机无刷电机运用于航模,优越性非常明显:无刷电机工作效率很高,一般的有刷电机摩擦大,损耗大,发热多,寿命短,效率低,输出功率小。而无刷电机无电刷,低干扰,噪音低,运转顺畅,效率高,可达到80%以上,寿命长,基本不需要维护。无刷电机通常适用于控制要求比较高,转速比较高的设备。航模无疑是一个理想平台。电机参数解释:2212前两位是指无刷电机转子的直径为22mm,后两位是指无刷电机转子高度为12mm。kv值是指外加1v电压对应的每分钟空转转速。所以930kv就说明电机供电电压增加1v,电机每分钟空转转速提升930转。因为输入的是直流电,而无刷电机需要三相交流电才能驱动,所以,无刷电子调速器对无刷电机的使用至关重要。图3.1.2 XXD2212 930KV无刷电机3.1.3 新西达30A电子调速器新西达电子调速器是航模无刷电子调速器的一种。因为无刷电机运行起来之后,其需要很大的电流,这个电流是微控制器无法承受的,而电子调速器的作用就是将控制信号转化为控制所需的三相电流,输出到无刷电机可以直接驱动。电子调速器有三根输出线。红色和黑色线分别接入到电源正负极,白色线用于接收无线接收机的PWM信号。四旋翼飞行器就是通过控制电子调速器达到控制无刷电机的转速从而使飞行器做出相关动作的。新西达30A电子调速器参数解释:30A是指其最大能够提供的电流不能超过30A。电子调速器的使用:电子调速器只接收舵机信号。所谓舵机信号就是指频率为50Hz,高电平为1-2ms的PWM信号。第一次使用电子调速器要对电子调速器初始化,初始化就是对电子调速器设置油门行程,确定电子调速器输出最小和最大电流,还有其他一些保护模式,详细的操作设置,可以参考新西达电子调速器说明书。图3.1.3 XXD30A电子调速器3.1.4 1045正反浆为了抵消螺旋桨的自旋,需要正反桨使得相隔的桨旋转方向不同,正反桨的风都是向下吹,顺时针旋转的桨为正桨,逆时针旋转的桨为反桨。正反桨是四旋翼飞行器常用的螺旋桨,一般选用碳纤和尼龙复合材料制成,硬度强。正反桨参数解释:1045是指桨的直径为10英寸(1英寸=254mm),桨的角度是45。图3.1.4 1045正反桨3.1.5 2200mAh 11.1V 30C 充电锂电池同样容量的电池中,锂电池的质量最轻,所以本设计选择锂电池。电池参数解释:2200 mAh表示电池的容量,如果电池以2200mA放电的话可以放电一小时。11.1V表示电池的额定电输出压。C是普通锂电池与动力锂电池的最大不同,动力锂电池的容量与C值的乘积即为锂电池的最大放电强度。本设计中的电池放电强度为2200*30=66000mA。随着电池容量的增加,电池的质量就会增加。这个必须考虑到设计中,因为选定电机,螺旋桨,飞行器的升力就大致确定了。所以,如果飞行器自身过重就会飞不起来,所以电池的容量要选择合适。图3.1.5 2200mAh 11.1V 30C 充电锂电池3.1.6 飞行主控stm32f103c8t6STM32系列是意法半导体公司基于ARM公司专为要求高性能、低成本、低功耗的嵌入式应用专门设计内核而设计的32位高性能,低功耗高级微控制器。本设计采用STM32系列的增强型F103系列。STM32F103C8T6是STM32系列中增强型中的中等容量微型控制器。其具有非常丰富的内部资源。1、带有128KB字节闪存的。2、最高主频达到72MHz3、具有时钟、复位、电源管理、低功耗功能。4、2个12位内置模式转换器,多大16个转换通道,转化之间仅1us。5、7通道DMA控制器,支持定时器、ADC、SPI、I2C和USART等外设。5、多达8个定时器,其中2个高级定时器,4个普通定时器,2个基本定时器。6、2个I2C接口,2个SPI接口,3个USART接口,1个CAN接口,1个USB2.0全速接口。7、具有调试模式,包括串行单线调试SWD,和JTAG接口。8、芯片内置了一个温度传感器。9、具有CRC计算单元。10、96位芯片唯一代码。操作STM32微型控制器目前有两种主流方式,即:寄存器操作法和库函数操作法。意法半导体公司为所有STM32系列的控制器撰写了完整的固件库,目前已经更新到v3.5版本。固件库中包含了STM32所有内部资源的操作源文件,使得用户在对STM32编程时变得相当简洁方便,尤其是在对控制器的配置中显得尤为突出。作为初学者,建议使用库函数操作法,其操作一目了然,如同阅读一篇英文文章一样,简单易懂,省去了查询寄存器的繁琐工作。但是,这种操作方法对硬件本身的了解程度不如操作寄存器的方法。因为寄存器的操作具体到了寄存器的每一位配置。这对使用数据手册的能力和编程能力要求较高。这两种方法各有所长,依个人喜好和能力选择。在线调试器和编程器方面,建议使用意法半导体的STLink。STLink是意法半导体为STM8和STM32系列专门设计制造的,其易于安装,使用方便。此外,J-Link也可以,效果相同。图3.1.6 主控stm32f103c8t63.1.7 惯性器件MPU6050MPU6050是美国InvenSense公司研发的全球首例9轴运动处理传感器。它集成了3轴MEMS陀螺仪,3轴MEMS加速度传感器。预留出了XDA,XCL两个管脚,可以扩展其他的IIC设备,比如电子罗盘。主控器可以通过XDA,XCL直接访问扩展设备的寄存器,使其输出9轴的运动数据。MPU-6050的陀螺仪和加速度传感器的测量范围都是可以编程的,陀螺仪的量程有250,500,1000,2000/秒(dps),加速度计可测范围为2,4,8,16g。MPU6050与所有设备寄存器之间的通信采用I2C接口。其片内集成了一个精度很高的振荡器,可用来为MPU6050提供工作时钟。MPU-6050可支持的电源范围可以是2.5V、3.0V也可以到3.3V。要特别说明的是,MPU6050的内部集成了一个可以扩展的数字运动处理器DMP(Digital Motion Processor),可谓功能强大,用户可以通过对其编程,实现MPU6050内部自动对ACC,GRYO数据进行滤波,校准,并融合ACC、GRYO数据,计算直接输出姿态四元数,非常方便,省去了姿态融合的算法,减小了主控器的计算负担。DMP寄存器有专门配置的操作文件库,最初是针对MSP430单片机写的,用户可以在此基础上稍加修改,便可以移植到STM32上来,这样读出姿态数据经过本人测试,非常准确。但有个问题需要注意,在开机或者复位8秒之内,MPU6050的DMP寄存器要进行自身稳定,所以这段时间输出的数据都是假数据,8秒之后输出的数据就会很准确。很多网友对DMP寄存器的评价也非常高。MPU6050集成度高,相比单个的电子陀螺仪和加速度传感器成本低,精度高,性价比非常好,堪称运动传感器的典范。图3.1.7 mpu60503.1.8 天地飞7遥控器天地飞遥控器是深圳天地飞科技开发有限公司开发设计并制造的专用航模遥控器,可用在固定翼、直升机及多旋翼等飞行器上。目前天地飞遥控器已经发布到天地飞9版本。本设计使用天地飞7,如下图。可以看到,天地飞7遥控有超大图形点阵LCD,中文、图形显示,人机交互界面设计人性化。该遥控器采用原生2.4G技术,采用总线数据传输,极大提升了操控敏捷度。具有超强的抗干扰能力,使用了高端扩频(DSSS)+ 跳频技术,可以60台遥控器同时开机工作而不互相影响。航模遥控器分美国手和日本手两种,区分这两种遥控器的依据是遥控器油门在左边还是右边。油门在左手边的是美国手,在右手边的是日本手。本设计中采用美国手,即左边摇杆上下围油门,左右为方向舵。右边摇杆上下为升降舵,左右为副翼。这种模式是可以通过遥控设置菜单中进行设置的。一般常用的设置就是这些。详细的设置说明可以参考WFT07中文说明书V1.3遥控器油门是控制四旋翼飞行器的螺旋桨转速,油门大,则无刷电机转速加快,螺旋桨转速加快。方向舵是控制飞行器的飞行方向,副翼是控制飞行器的横滚角,升降舵是控制飞行器的俯仰角的。图3-1-8 天地飞7遥控器3.1.9 天地飞7无线接收机天地飞7无线接收机是配套天地飞7遥控器一起使用的。工作电压为4.8V6V。工作电流30mA。第一次使用接收机要将无线接收机与天地飞7遥控器进行对码。一旦实现对码之后,以后的使用将无需进行对码,只要双方都接通了电源,遥控器会自动与接收机对接。具体对码操作可以参考WFT07中文说明书V1.3天地飞7遥控器有7个接收通道,按照通道号分别为:第一通道-AIL副翼第二通道-ELE升降舵第三通道-THR油门第四通道-RUD方向舵第五通道-GRY起落架第六通道-PIT螺距第七通道-辅助通道图3.1.9 天地飞7无线接收器3.1.10 5V稳压电路由于电池输出的电压有11V以上,而STM32的供电电压只有5V,天地飞7无线接收机的工作电压为4.8V6.0V,所以需要一个5V的稳压电路,专门对主控器和无线接收机供电。这样可以解决电调BEC供电使电调发热的问题采用常规5V稳压电路即可,对电池输出电压滤波,稳压,然后输出即可。原理图如下图3.1.10 5V稳压电源电路图3.2 四旋翼飞行器的安装3.2.1 飞行器硬件连接图 STM32F103C8T6 电机电调MPU5060电机电调电机电调电调电机5V稳压电路电池遥控器STM32F103C8T6NRF24L01NRF24L01NRF24L01接收机图3.2.1 飞行器硬件连接关系图 3.2.2 x模式和+模式的区别在上文四旋翼飞行器原理中已经介绍过四旋翼飞行器的两种模式。X模式与模式在硬件安装和软件设计编写都有区别。硬件上的区别在于惯性器件的安装位置:模式的四旋翼飞行器的惯性器件X轴与一条机臂平行,Y轴与另外一条机臂平行。X模式的四旋翼飞行器的惯性器件安装位置是把模式的惯性器件顺时针或者逆时针旋转45就得到X模式的四旋翼飞行器。3.2.2安装事项安装四旋翼飞行器要注意以下事项:1、由于,四旋翼飞行器螺旋桨旋转起来,产生的力矩很大,机体旋转会产生非常大的离心力,如果机架没有安装好,就会在离心力的作用下散架,发生螺旋桨打到人的危险事故。所以在安装风火轮机架时,一定要确保螺丝都拧紧了。2、电机的安装要注意,每个电机都与机架所在的水平面呈90度角。3、螺旋桨的安装也要注意螺旋桨的翼面要与机架所在水平面保持平行。同时,四个螺旋桨的翼面也要在一个平面内。当然有一点误差也没有太大关系。4、由于调试需要,要将主控器安装在可以拆卸,容易插拔线的地方。5、将电池放在容易更换的地方。将飞行器安装好之后,需要检验是否安装正确,检验方法为:在有保护措施的情况下打开电机,遥控油门不要推太大,来检查飞行器的螺旋桨的旋转方向,是否正确。如果飞行器比较平稳,没有很大幅度的震荡就说明安装正确。建议最好是把自己的飞控程序下载到主控器,在检验飞行器安装正确与否的同时也可以检验自己PID程序中ROLL,PITCH,YAW输出量的符号问题。安装好如下图:图3.2.2 安装效果图第四章 四旋翼上位机及下位机4.1匿名上位机软件平台4.1.1 匿名上位机功能 匿名科创开发的上位机软件平台目前最新的版本具有地面站功能,可以下载飞控程序。本设计中使用的上位机版本较低,但是功能方面已经足够使用。该上位机具有以下功能:(1)基本功能。可以当做普通的串口收发数据,可以选择串口,选择波特率范围1200-500000,有数据校验功能,具备两种收发码格式:CHR、HEX。(2)高级收码。可以将下位机发送至上位机的每帧数据显示出来,可以分别显示数据校验位,数据和功能帧。共有10中帧格式可选,可以就一种功能的数据进行筛选显示。(3)波形显示。可以实时显示出惯性器件测出的ACC的XYZ三轴波形,GRYO的XYZ三轴波形,3个姿态角的波形等。波形可以放大可以缩小,可以保存至PC机。(4)飞控状态。可以实时显示飞行器的3D状态,实时显示出3个姿态角,加速度计3轴数据,陀螺仪3轴数据,地磁计3轴数据。同时还可以实时显示四个电机状态,7个遥控通道数据,及电池的电量使用情况。(5)飞控设置。可以通过无线向飞控写入PID参数,也可以读取飞控的PID参数。这对整定PID控制器的参数有很大的帮助,使得参数调节方便高效。4.1.2 匿名上位机通信协议下位机发送数据格式为:0x88+FUN+LEN+DATA+SUM。FUN可以是0xA1到0xAA,共10个;LEN为DATA的长度。SUM是0x88一直到DATA最后一字节的和,uint8格式。FUN表示下位机的功能帧头。以下介绍几个常用到的功能帧:飞控姿态显示对应的功能帧为0xAF,帧格式为:0x88+0xAF+0x1C+ACC DATA+GYRO DATA+MAG DATA+ANGLE DATA+ 0x00 + 0x00+ 0x00+SUM,共32字节。遥控,电机pwm,电压显示对应的帧FUN为0xAE,帧格式为:0x88+0xAE+0x12+THROT YAW ROLL PITCH +AUX1 2 3 4 5 + PWM:1 2 3 4 + VOTAGE + SUM,共28字节。下位机发送PID数据给上位机的数据帧格式为:0X88 0XAC 0X1C 0XAD + PID数据 + 无用数据 + SUM上位机发送PID数据给下位机的格式为:0X8A 0X8B 0X1C 0XAE +PID数据+ 无用数据 + SUM就四旋翼飞行器本身来讲,上位机软件平台是可要可不要。因为上位机的功能就是提供一个四旋翼飞行器与人交互的平台,使人可以看到飞行器实时的内部数据和状态。如果不要上位机,只要下位机做的好,飞行器也可以很好的起飞,可以完成所有动作。4.2下位机程序模块本章将详细介绍下位机的任务,模块功能及实现方法。总体来说,下位机的任务就是测量四旋翼飞行器的实时姿态并返回主控,主控根据返回的姿态进行PID控制,计算出能够使飞行器达到目标姿态的各个电机输出的PWM量。同时,下位机将四旋翼飞行器的姿态数据,电机动作量,遥控器数据通过无线模块发送至上位机。4.2.1 DMP使用方法MPU6050有官方的DMP寄存器操作库。该操作库下包含了DMP操作的源文件。原本是基于MSP430单片机写的,经过一些修改就可以移植到STM32F103微控制器上。所有对DMP寄存器的操作都必须通过这个库才能打开DMP引擎,进行加速度传感器和陀螺仪数据的滤波,融合,输出姿态数据。由于MPU6050的要通过IIC通信协议才能对寄存器操作,所以必须确保程序中的IIC程序正确。对于DMP寄存器的操作,主要是用到了以下操作函数:mpu_init();对MPU进行初始化mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL);设置加速度传感器和陀螺仪的最大量程mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);配置FIFO通道mpu_set_sample_rate(DEFAULT_MPU_HZ);设置MPU采样频率。dmp_load_motion_driver_firmware();这个函数非常重要,它的作用是使能DMP寄存器的。如果这个函数执行失败,将无法使用DMP寄存器的功能。dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation);与DMP计算输出四元数有关。dmp_enable_feature(hal.dmp_features);dmp_set_fifo_rate(DEFAULT_MPU_HZ);设置FIFO通道的频率 run_self_test();这个是MPU的自检程序。自检程序可以消除MPU测得数据的漂移。自检结束后,传感器才有输出。mpu_set_dmp_state(1);在一切设置完成之后,DMP就被成功使能,要得到实时姿态数据,只需要在程序主函数的while(1)循环中调用dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);这个函数,就可以读取飞行器的陀螺仪,加速度传感器数据,可以读取姿态四元数。4.2.2 NRF24L01无线通信NRF24L01无线模块与主控器之间通过SPI协议进行通信。STM32F103C8T6主控器中含有两个SPI模块。所以我们的SPI程序就有两种选择,即:A、使用GPIO口进行SPI模拟,B、直接使用SPI模块进行编程。这两种方法都有一定的好处当然也有缺点。A方法的好处是不用局限于特定的GPIO口,但缺点是可能通信的质量不如SPI模块。而B方法刚好与A相反。总体来讲,主控器自身的SPI模块还是相对好用一些,我们只需要对其特定寄存器进行配置就可以完成通信,使得代码量大大减少。我们需要两块NRF24L01通信模块实现飞控与PC机的通信。同时要将其配置为双线全双工模式,实现两个无线模块间的相互通信。程序的关键在于SPI模块的初始化和NRF24L01的初始化。程序流程图如下:图4.2.2 无线通信程序流程图4.2.3 无线接收机解码程序天地飞7无线接收机向主控输入的信号为PWM信号,该信号也为舵机信号,即:周期为20ms,高电平为1-2ms。遥控器发出的命令的不同就在于PWM信号的高电平时间的长短,所以我们解码的关键问题就是捕捉无线接收机输入到主控中的PWM信号高电平的时间。本设计使用了无线接收机的四个通道即:副翼通道、升降舵通道、油门通道、方向舵通道。所以要将这四个通道的PWM高电平时间采集出来并保存至主控的寄存器中。STM32F103支持一个普通定时器的四个通道捕捉外部PWM。支持上升沿触发中断或者下降沿触发中断。我们将此捕获中断设置为优先级最高。而且这个设置是必须的,只有让捕获中断的优先级最高,主控器才能实时接收到遥控器的命令而不被其他中断打断。捕获PWM高电平时间的思路是这样的:首先,定义两个全局变量,一个用于标记捕获状态status(8bits),我们读bit0为第1位。一个用于记录捕获到一次下降沿时的TIM_CNT的值value。捕获状态变量的后6位用于记录捕获高电平后定时器溢出的次数,第7位用于表示捕获到高电平标志,第8位是捕获完成标志。我们在TIMER的初始化中将每个通道设为上升沿中断的,当上升沿到来时,程序进入捕获中断的服务函数中,判断status的第7位是否为0,如果为0,则说明还未捕获到新的上升沿,那么就把status、value和TIM_CNT置零。再将status第7位置1,表示捕获到高电平,之后就把该通道设置为下降沿中断,如果在等待下降沿的过程中发生率定时器溢出,那么status就对溢出次数计数。如果达到了最大溢出次数,即使还没有捕获到下降沿,也强制标记捕获完成。当下降沿到来的时候,先将status第8位置1,表示成功捕获到一次高电平,然后读取TIM_CNT至value,再设置该通道为上升沿捕获。只要status 的第8 位一直为 1,那么第二次捕获就不会进行,在处理完捕获数据后,将 status清0,就可以开启第二次捕获。4.2.4 电调驱动程序该程序模块中也是使用了STM32F103另一个普通定时器,设置其功能为PWM输出功能。主控器可以支持四个通道同时输出四路PWM,对于四旋翼飞行器的电机驱动刚好适合。这个程序模块主要就是对定时器进行配置,但是有一点必须注意,那就是主控器输出的PWM频率必须能够被电子调速器识别,一般要求其输出为舵机信号。这就必须配置好定时器每个通道TIM_Prescale和TIM_Period。计算方法为:Frequency = 72 000 000/TIM_Prescaler/TIM_Period.4.2.5 姿态解算程序姿态解算程序已经在本章第一节中介绍过了,利用MPU6050的DMP寄存器直接输出姿态数据,然后主控对姿态四元数进行变换,得到姿态欧拉角。下文将详细介绍姿态解算原理。4.2.6 PID控制器程序PID控制器的主要任务就是处理惯性器件返回的姿态数据。将姿态数据输入PID控制器,主控器使用PID控制器计算得到使飞行器达到目标姿态的四个电机的PWM值。使得四旋翼飞行器姿态可控。对四旋翼飞行器的控制属于是3维运动控制,即,对ROLL,PITCH,YAW这三个量的控制。而这三个量分属三个平面,基本上没有相互制约相互影响的关系。所以,PID控制器分三个部分分别对这三个量进行PID控制。需要说明的是,由于MPU6050的测出的偏航角在静止时漂移很小,但是在运动的过程中会产生较大的漂移,所以,很多网友基本放弃MPU6050测出的YAW,而改用HMC5883L这种地磁传感器来测YAW。其实,只要有对ROLL和PITCH的控制,飞行器就可以成功起飞,但是起飞时飞行器会自转,这种现象就是说明飞行器没有了YAW,也就没有了方向感。本设计采用了位置式的PID控制。程序简单,容易理解。详细程序见附录。第五章 四旋翼飞行器姿态解算四旋翼飞行器能不能成功起飞的根本因素在于其姿态解算的结果是否正确有效。姿态解算一旦错误,后续工作做的再好也是没有用的。姿态解算的工作至关重要。本章主要介绍本设计在实践过程中使用到的姿态解算知识。5.1 捷联式惯性导航系统介绍根据不同的导航坐标系的建立方法,惯性导航系统可以分为两大类:平台式惯性导航系统和捷联式惯性导航系统。前者是以物理平台模拟导航坐标系,而后者则是采用数学算法计算导航坐标系。四旋翼飞行器属于捷联式惯性导航系统。捷联式惯性导航系统是指将惯性测量器件(陀螺仪和加速度传感器)直接安装在飞行器、舰艇、导弹等需要姿态、速度、航向等导航信息的主体上,用计算机把测量到的信号变换为导航参数的一种导航系统。使用经过校准的惯性测量传感器测出惯性数据,通过数据融合算法就可以计算出飞行器的姿态。为了描述飞行器姿态信息,我们需要引入两个三维坐标系,一个用来表示飞行器的机体坐标F,一个用于表示参考坐标系R。假设初始时刻,两坐标系重合。参考坐标系在飞行器飞行过程中保持不变,而机体坐标系相对于参考坐标系要经过一次或多次旋转。由于惯性器件安装在飞行器上,所以测得的各项惯性数据都是基于机体坐标的,所以在姿态解算之前要先将机体坐标通过旋转变换至参考坐标。由此可见,旋转变换对于姿态解算至关重要。一般旋转有4种表示方式:矩阵表示、欧拉角表示、轴角表示和四元数表示。由于欧拉角表示姿态非常直观易懂,而四元数在组合旋转方面非常方便,所以使用最多。四元数可以理解为一个实数和一个向量的组合,也可以理解为四维的向量。四元数表示方法有:q = w + xi + yi +zi;或者Q(w ,x, y, z)。规范化四元数可以表示一次旋转。欧拉角是由欧拉首先提出的用来确定定点转动刚体位置的3个一组独立角参量,由章动角、旋进角(即进动角)和自转角j组成。在惯性导航系统中,欧拉角即我们上文提到的横滚角ROLL,俯仰角PITCH,偏航角YAW。本设计中MPU6050的DMP寄存器直接输出了姿态四元数,要将姿态四元数转换为欧拉角,转换数学关系如下:5.2姿态解算首先,惯性器件必须校正。惯性测量器件的校正对姿态结算提供重要基础,如果未经校正就进行测量,后续输出的姿态数据很可能就是错误的,导致整个飞行器系统根本无法正常运行。MPU6050一般采用软件校正。第二,加速度计和陀螺仪的数据融合。由于加速度计是对比力的测量(作用在单位质量上的非引力外力叫做比力,根据加速度计的工作原理,我们把加速度计又称为比力计),其很容易受到运动的影响。所以其动态性能较差。一旦飞行器的电机启动,机架就会有很大震动。这对加速度计有很大负面影响。但是陀螺仪受外部影响弱,稳定性高,动态性能好,但其只输出角速度,需要对角速度积分才能得到姿态,这样就无法避免积分造成的误差产生累积。所以,需要对各传感器的数据取长补短,才能得到近实时且稳定的姿态。利用上文介绍的方法操作MPU6050的DMP寄存器,可得到姿态四元数。由姿态四元数与欧拉角间的转化公式将姿态四元数转化为欧拉角。由于上一节介绍的姿态四元数与欧拉角之间的转换结果中欧拉角单位为弧度,而我们实际使用要将其转化为度,所以再进行如下变换(以ROLL角为例):即实际变换如下:至此,姿态解算完成。 第六章 四旋翼飞行器PID控制器设计正确解算四旋翼飞行器的姿态就为姿态控制提供了关键依据。四旋翼飞行器的姿态控制方法一般分两种:四元数控制和欧拉角控制。本章将介绍PID控制器及四旋翼飞行器姿态控制的方法。6.1 PID控制器介绍PID控制器又称比例-积分-微分控制器,由比例单元 P、积分单元 I 和微分单元 D 组成。PID控制器以其结构简单,稳定性高,可靠性强的特点受到青睐,成为世界工业控制使用率最高的控制器。PID控制器是一个闭环控制系统,其输入值为被控变量的实际值与目标值的偏差,经过比例、积分和微分计算,得到一个调节量输出至执行机构。然后再对执行效果进行采集并反馈回来再次与目标值比较,如此往复计算执行,直至消除偏差。在模拟系统中,PID算法表达式为:其中,P(t)-表示PID控制器的调节输出量。e(t)-表示被控量的实际值与目标值的差值。-表示控制器比例系数。-表示控制器积分时间-表示控制器微分时间基本原理如下图所示:图6.1 PID控制器原理图不同类型的控制器,原理、结构都各不相同,但对于PID控制器而言,基本控制规律只有三个:比例(P)控制、积分(I)控制和微分(D)控制。这三种基本控制规律可以单独使用,但更多是组合使用。如比例微分(PD)控制、比例-积分(PI)控制、比例-积分-微分(PID)控制等。6.2 PID控制思想对于四旋翼飞行器姿态的控制有两种方式:姿态四元数控制和欧拉角控制。两种方法的基本思想相同:设定一个目标姿态,计算当前姿态与目标姿态的偏差,输入至PID控制器,使其输出相应的调节量至电子调速器,调整螺旋桨转速,达到目标姿态。不同点是控制的姿态数据不同,使得两者带给主控器的计算量不同。由于欧拉角要通过四元数反三角函数计算得来,所以,欧拉角控制的方法计算量较大。但这对于主频为72M的STM32主控器来说还是可以承受的。欧拉角控制易于理解,程序实现也较简单,所以采用欧拉角控制。6.3 PID控制器程序实现本设计采用位置式的PID算法控制。设u(k)为PID控制器在第K次采样时刻的输出值。可以得到离散化的PID表达式如下:其中,令= 即为积分系数。= 即为微分系数。 将此PID表达式转化为程序语言。PID程序中定义单个float型变量: error_rol,error_pit,error_yaw分别接收实际ROLL,PITCH,YAW角与目标值的差值。定义PID结构体:struct PID float P,pout,I,iout,D,dout,IMAX,OUT;PID; 定义PID型变量PID_ROL,PID_PIT,PID_YAW,分成三组PID,分别调节三个方向的欧拉角偏差。这里要对微分项说明一点,由于微分项为,而的差值为角度,对角度的微分即为角速度。由于陀螺仪输出的直接就是角速度,因此,可以将微分项改为微分系数与陀螺仪相应轴的输出量。这里一定要注意,由于D是阻尼作用,所以,陀螺仪输出的数据符号必须为负,否则就变成增益而不是阻尼了。以对横滚角ROLL的控制为例,程序流程图如下:图6.3 PID控制程序流程图6.4 PID控制器参数整定四旋翼飞行器的PID参数整定是一个比较复杂的过程,在调参的过程中,总会有这样那样的问题出现,这样更加使人对四旋翼飞行器的理解深刻。使人对问题的分析解决能力得到提升。这里介绍一种用绳子绑住飞行器整定参数的方法。要注意绑绳子的方式跟飞行器是模式还是X模式有关。一般来讲,模式的飞行器相对好调一些,因为ROLL、PITCH方向只分别涉及到两个电机,容易调些。本设计中的四旋翼飞行器设计为模式,在该模式下,当要调节ROLL方向时,只需用绳子绑住PITCH方向的两条机臂,必须保证ROLL方向机臂与水平面平行并可以灵活转动。调PITCH方向同理。要了解PID控制中P、I、D三个参数的具体含义。P可以表示为回复力大小,它的目标是使飞行器回到水平面。D可以表示为阻尼力,它抑制P的作用但回不回得到水平面不是它关心的问题。I的作用是消除稳态误差,使飞行器最终稳定在水平面。首先,令积分系数和微分系数都为0,从比例系数为很小的值调起。令P=1时,发现飞行器往一边偏,偏离水平面的角度较大。只有把油门推大一些,偏离角度才会稍微减小,这说明回复力不够,即P的值小了。把P的值加大到1.5,飞行器依然向一边偏,但是偏离水平面的角度较之前变小了。继续将P值加大到3.5,发现飞行器开始左右震荡,幅度越震越大,说明P过大了。所以P值应该在1.53.5之间。经过一次次尝试,发现P的值为3.1的时候,飞行器左右等幅震荡,至此,认为P已经调好了。接下来调D。D是具有阻尼作用的,希望D的加入能够消除P引起的震荡。同样的,从一个很小的值调起。令D值为0.001,发现基本没有什么效果。增加D的值至0.05,效果不太明显,说明还小了。当D增加到0.15时,发现飞行器的震荡更加剧烈了,说明D 的值过大了,经过耐心的试参数,最终确定,D=0.096。根据自己的实际情况,由于存在稳态误差,需要加入滞后校正环节I。飞行器PID参数整定经验如下:1、首先要做的工作是确保电子调速器的油门行程一致,即初始化电调成功。2、确保电机和螺旋桨已经拧紧,否则将威胁到人身安全。3、调节PID参数首先要了解P、I、D三个参数的意义及作用。明白P的作用是回复到水平面的回复力。D的作用是阻尼力,起抑制作用。4、调PID的步骤是先要找到等幅震荡时候的P值,然后再加入D值进行调节。5、要根据自己的真实情况来调节参数。6、调PID参数是一个很耗时间、很考验耐心的事情,同时也是件很危险的事情。做好安全措施,不要急躁,多试一些数,发现问题冷静思考,相信一定会成功的。第七章 结论及存在的问题目前,四旋翼飞行器已经可以平稳飞行,可以将实时数据发送至上位机,遥控器控制正常,基本功能均已实现。但同时还存在以下问题:1、没有为加入一些LED灯来作为指示2、使用MPU6050发送的姿态数据计算出ROLL,PITCH及YAW。但YAW的值由于漂移较大,没有进行PID控制。所以飞行器会自身旋转。后续工作可以加入HMC5883L地磁传感器,使其
展开阅读全文