基于STM32和计算机视觉的四轴无人机遥控系统毕业论文
2020-02-17 23:21:04
摘 要
本文提出了一种使用STM32芯片构建的四轴无人机遥控模块,能够与PC进行双向无线通信。通过PC端上位机程序控制,无人机可以完成起飞、平动飞行、转向等飞行任务。结合本文设计的基于OpenCV的图像处理算法,上位机可遥控无人机完成自动降落任务。相较于传统无人机人为操作遥控器的控制方式,本文提出的遥控系统不仅可以兼容传统操作方式,还能够切换至程控飞行方式,使得无人机操作更加精准安全,为同时控制多架无人机提供了可能。论文研究所得结果对于无人机操控方式的改进、应用领域的拓展具有重要的指导意义。论文主要研究了无人机无线遥控模块的设计、相应嵌入式程序和指令集的开发、图像处理算法的设计。
研究结果表明:使用无线遥控模块可以完成无人机和PC端上位机软件间的数据、指令传输;图像处理算法则能为无人机控制软件提供降落坐标,引导无人机自动降落。
关键词:四轴无人机;STM32;图像处理;自动着陆
Abstract
This thesis proposes a four-axis UAV remote control module built using STM32 microcontroller, which can communicate wirelessly with PC. Through the PC host computer program control, the drone can complete the take-off, translation flight, steering and other flight missions. Combined with the OpenCV-based image processing algorithm, the host computer can remotely control the drone to complete the automatic landing task. Compared with the traditional remote control system of the UAV, the remote control system proposed in this paper can not only be compatible with the traditional operation mode, but also can be switched to the program-controlled flight mode, making the drone operation more precise and safe, and controlling multiple UAVs at the same time possible. The results obtained in the thesis have important guiding significance for the improvement of the drone control mode and the development of the application field. The thesis mainly studies the design of the wireless remote control module of the drone, the development of the corresponding embedded program and instruction set, and the design of the image processing algorithm.
The research results show that the data and command transmission between the UAV and the PC-side PC software can be completed by using the wireless remote control module. The image processing algorithm can provide the landing coordinates for the UAV control software and guide the UAV to automatically land.
Key Words: four-axis unmanned aerial vehicle; STM32; image processing; automatic landing
目 录
第1章 绪论 1
1.1研究背景 1
1.2研究意义 2
1.3国内外研究现状 2
第2章 系统配置 4
2.1硬件配置 4
2.1.1无人机 4
2.1.2着陆标志 5
2.2开发环境 5
第3章 基于STM32的无线遥控模块 7
3.1硬件设计 7
3.2嵌入式程序设计 9
3.2.1控制信号发生器与响应函数 9
3.2.2通信协议设计与解析 12
3.2.3上位机界面设计 12
第4章 基于OpenCV的图像处理算法 14
4.1图像采集与预处理 14
4.1.1相机标定与畸变矫正 14
4.1.2图像预处理 15
4.2轮廓检测与目标识别 16
4.3算法移植与整合 17
第5章 总结与展望 19
5.1基本飞行指令 19
5.2视觉引导降落 19
5.3 结论 20
参考文献 21
附录A 遥控板原理图 23
附录B 遥控板PCB 24
附录C 遥控器程序代码 25
附录D 图像识别代码 28
致 谢 31
第1章 绪论
1.1研究背景
四轴飞行器,也称为四旋翼飞行器,由以“X”型分布的四个高速电机带动螺旋桨转动提供升力和进行运动。四轴飞行器通常使用两对相同、转动方向相反的固定螺旋桨,以抵消传统单桨转动所产生的反桨矩。飞行控制单元(以下简称“飞控”)通过特定算法调整每个电机的转速可以改变对应螺旋桨提供的升力,进而对整个飞行器的动作姿态进行控制[1]。这些姿态调整包括升降、前后左右飞行以及自旋。四轴飞行器自1907年Louis Breguet成功设计并试飞以来,经历了近百年的更新迭代。小型四轴无人飞行器(以下简称无人机)因其具有体积小、灵活性高、操控方便的特点,如今已被广泛应用在科研、军事、航拍、物流、农业等领域。
目前,以世界一流民用无人机制造商大疆科技(DJI)为首的多数的民用无人机的飞行控制系统可以实现自主起降和巡航。但由于在实际飞行的过程中仍然存在人为因素和不可控的环境因素,无人机的“炸机”(无人机失控坠地后损坏)事件仍屡见不鲜。尤其是在返航阶段、无人机在接近地面时,GPS在靠近地面因建筑物等阻挡导致信号质量不佳、气压计于地面和水面附近采集数据有较大失真、磁罗盘在金属附近易受干扰等因素会使得炸机事故容易发生。为了提高无人机的机动性和自主着陆成功率性,需要提高无人机自主导航和降落的能力[2]。此外,传统的无人机操作仍采用“点对点”的控制方式,即一部遥控器只能同时控制一架无人机。随着无人机应用领域的拓展,在同一任务中使用多架无人机的情景越来越多,传统的控制方式逐渐表现出其局限性。为了解决多无人机协同作业的问题,需要增加遥控系统的自动化程度,使得无人机控制能够程序化、自主化。
随着嵌入式技术、计算机视觉和图像处理算法以及计算机硬件的不断进步与完善,利用图像处理算法处理无人机捕获的视频画面并应用在导航系统中成为可能。逐渐完善的嵌入式技术使得体积小、重量轻的嵌入式硬件可以直接搭载在无人机机体上而不会对无人机的飞行造成干扰。由于无人机在天空飞行时采集到的图像具有一定的特征[3](包括但不限于存在广角畸变、画面元素复杂、易因受到干扰出现雪花屏等),图像处理需要能够将降落标志准确地从画面中与背景分离并提供坐标。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,其中丰富的函数为处理各种图像问题提供了解决方案[4]。
1.2研究意义
通过机载遥控板、PC端上位机软件结合,无人机可以摆脱传统遥控器,实现一些更加精确的程控飞行任务,例如匀速起降、路径规划飞行。同时,上位机软件也保留了传统的操作按钮,使得人为操控方式的自由与灵活性得以保留。同时,系统允许自定义通信协议以支持上位机同时操控多台无人机,使多机作业、编队飞行等任务成为可能。
基于OpenCV的图像处理算法能够在降落过程中处理机载摄像头捕获并回传到上位机的视频流:对其进行画面矫正、二值化、轮廓识别与筛选等操作。程序最后会输出着陆标志(以下简称陆标)在画面中的相对位置,并反馈给飞行控制程序,引导无人机降落在陆标上。利用视觉辅助实现无人机降落过程的自动化,可以在一定程度上解决近地面时其他传感器易受干扰的问题,使得无人机降落时更加精准、安全,减少了降落时发生事故的概率。
无人机的自主飞行与着陆,具有很好的军民应用前景,在军事上,它可以在海上进行自动巡航、实时监测,保卫国家领土完整和国家主权不受侵犯;在民用上,可作为快递、刑侦、救援等领域的一大助手。计算机视觉在无人机导航中的应用减少了因为着陆精度问题引起的一系列不必要损失,完成了在低成本下的精准着陆。
1.3国内外研究现状
早在2003年,南加州大学(University of Southern California)就完成了利用视觉系统辅助的无人机自主着陆任务。Srikanth·S等人设计了“H”型陆标并利用卡尔曼滤波把惯性导航信息和视觉导航信息融合,来估计无人机的位姿[5]。南加州大学的机器人学与嵌入式系统实验室采用了无人直升机而非四轴飞行器来完成降落实验。他们实验使用的无人机及陆标如图1.1所示。
图1.1 南加州大学实验用无人机与着陆标志
在后来的研究中,“H”型着陆标志被Tsai·A·C等人替换为“T”型着陆标志。同时他们使用霍夫变换来检测直线并得到交点信息。这样做的好处是可以获取无人机的姿态,但是比较消耗计算资源,以至于耗时较长。后来为了提高对无人机姿态估计的精度,Tsai·A·C等人采用了卡尔曼滤波。具体思想是:融合视觉辅助导航信息和传统的惯性导航信息,并在此基础上使用卡尔曼滤波来估算无人机的姿态。加州大学伯克利分校(University of California, Berkeley)的 Sharp·C·S等人设计了自主着陆系统,通过提取特殊陆标图像的角点信息,利用图像矩进行目标识别,同时利用差分GPS获取的高度信息,用来估计无人机的姿态。但是该方法在GPS失效或者复杂的环境下很难工作[6]。
对于在无人机上使用的视觉算法,其他国内外知名大学也进行了研究。使用视觉算法搭配着陆标志引导无人机进行降落,本质上是利用特殊的算法来探测画面中目标的运动检测。对于检测目标运动并跟踪的算法,卡耐基梅隆大学(Carnegie Mellon University)提出了改进型帧间逐差法[7];麻省理工学院(Massachusetts Institute of Technology)则主要对自适应背景下的目标检测进行了研究[8]。
第2章 系统配置
2.1硬件配置
2.1.1无人机
系统所使用的四轴无人机采用了大疆科技(DJI)设计的F450机架,其良好的拓展性允许安装多种复杂的传感器与外设。动力系统部分采用朗宇科技X2216KV1100直流无刷电机,搭配大疆科技9450桨叶能够提供单颗电机最大650g的升力。电池采用4200mAh锂电池,充满电后能输出12.6V电压,为满载飞行器提供20分钟左右的续航时间。飞控使用了匿名科创(Ano Tech)设计的拓空者飞控,该飞控核心为一块STM32F407VGT6处理器,提供了强大的性能冗余[9]。同时飞控上集成了多种传感器,包括高性能气压计SPL06、高性能惯性传感器ICM20602、高精度磁罗盘AK8975;这些传感器全部采用SPI通信方式,数据读取波特率达到10Mbit/s,大幅提升了飞控性能。并且由于这些IMU传感器精度的提升,四轴无人机在惯性导航方式下的零点漂移得到了抑制,能够实现良好的惯性定点、气压定高效果,但仍然不可避免的存在因为传感器校准问题而带来的飞行器漂移。同时,飞控板上预留了多组串口,可以用于连接UBLOX M8N GPS模块实现几乎没有漂移的精确的定点和悬停;也可以连接无线通信模块实现无人机飞行状态信息的读取、飞行任务命令的发送等功能。基于模块化的思想,搭载于公版架构机架上的硬件全部可以单独进行更换,保证了系统良好的移植性与可维护性。由于核心飞控源码开源,基于飞控的二次开发得以实现,可以在安全飞行的基础上定制不同的功能;同时源码会定期升级更新,保证了飞行的安全,减少因为代码漏洞而引起事故的可能。无人机开发平台整体如图2.1所示。
图2.1 无人机开发平台
该系统在拓空者飞控的基础上,增加了一块基于STM32F103C8T6微处理器的遥控板用于收发控制信号、解析飞控数据、定制飞行任务。由于遥控板输出的控制信号为与传统航模遥控器相同的PWM波,所以当飞控更换或是要将遥控板移植至无人车、无人船上时,只需对遥控板程序做出微较小幅度地修改即可。同时遥控板上还集成了降压模块,预留了5V输出接口以解决外设供电问题,进一步增强了无人机的拓展性。
无人机机载一台SJ4000运动相机来捕获画面,并以TV模式通过TS832 5.8GHz图传发送画面。接收端使用FUAV小黑鹰5.8GHz接收机,以摄像头方式连接至PC完成视频流的传输。
2.1.2着陆标志
着陆标志的作用在于指明无人机降落位置。对于陆标要求有以下几点:具有较高的辨识度;形状不能过于复杂,否则会对图像处理算法造成较大的计算压力;具有一定的特点,可以帮助无人机确定相对于其的位置[10]。
图2.2 着陆标志
如图2.2所示,针对以上几个要求,陆标采用了黑色的圆圈嵌套直角三角形的组合。实际拍摄画面中干扰元素(例如阴影、地砖纹理等)一般为多边形,在外层使用圆形作为识别目标可以较为有效地与干扰元素区别开;并且圆作为一种基本形状,在OpenCV中可以方便地进行检测。但是单独使用圆作为陆标的局限有:圆为中心对称图形,其不能够为无人机辨别某些特殊方向参数(例如机头朝向)提供依据;实际拍摄画面中仍可能存在光斑与阴影等类似于圆形的干扰元素。
基于以上两条考虑,陆标在圆圈内部增加了一个黑色直角三角形。与圆相同,三角形也是基础图形,能够方便地进行检测。同时,三角形的直角朝向能够作为“方向零点”帮助无人机计算初机头朝向。使用圆和三角形的组合加强了图案判定与筛选条件,进一步降低了被干扰的可能性。
2.2开发环境
飞控与遥控板代码的编译与调试均为Keil MDK环境下的C语言开发,采用库函数方式进行嵌入式开发,代码简洁易读,易于维护。飞控代码采用匿名拓空者代码(已开源),直接编译下载至飞控上使用即可。为了保证飞行的稳定与安全,飞控代码并未进行修改,并且保证定期更新。
图像处理算法使用C 在Visual Studio 2017与OpenCV 3.4.3环境下进行编译与调试。调试通过后,算法会被移植到Qt环境下的上位机软件(已开源)中。上位机部分使用C 在Qt环境下进行开发,包含可视化用户界面(GUI),展示了包含电量、坐标、高度、摄像头画面等在内的无人机飞行状态相关信息;同时也提供了操作按钮,可以控制无人机进行解锁起飞、前进后退等动作。GUI上放置有一键降落按钮,用以实现无人机自动降落的任务。
第3章 基于STM32的无线遥控模块
3.1硬件设计
传统的四轴无人机操控方式均为遥控器控制,遥控器上有两个操纵杆分别对四个通道进行控制。油门通道(THR)控制无人机升降;航向角通道(RAW)调整机头朝向;俯仰角通道(PIT)控制无人机前进后退;横滚角通道(ROL)控制无人机左右平动[11]。以富斯(Fly Sky)FS-i6遥控器为例,四个通道信号通过2.4GHz频段以PWM波的形式从遥控器发射至接收机,被与发射器相连的飞控采集并解析后控制四个电机响应。想要实现无人机的程控,就必须设计一套系统作为“遥控器”。无人机硬件结构如图3.2所示。
图3.1 系统硬件框图
得益于嵌入式技术的发展,使用微处理器及最小系统电路即可实现要求的绝大多数要求功能。STM32F103是意法半导体公司(STMicroelectronics)所设计的基于ARM Cortex-M3内核的增强型微处理器。芯片集成定时器、CAN、ADC、SPI、I2C、UART等多种功能,又因其具有体积小、功耗低、易于开发的优点,适合于无人机机载情景。
遥控板需要能输出至少四路PWM波、一个USART用于和飞控通信、一个USART用于和上位机软件通信,所以遥控板在外设方面至少需要这些引脚。结合此次设计目标的外设需求引脚数量与程序大小,系统使用了一块STM32F103C8T6微处理器[12]。该芯片采用48脚LQFP封装形式,基于Cortex-M3内核,具有64KB的FLASH程序存储器和20KB的片上RAM供程序存储和运行。STM32F103C8T6微处理器的三个通用同步/异步串行收发器(USART)与较强的运算能力能够连接飞控与外设,并按照一定的通信协议筛选、发送数据。考虑到小体积、低成本,系统采用了一对基于nRF24L01的2.4GHz无线收发模块来完成无人机和上位机的通信[13]。由于无人机供电使用的是12V锂电池,所以遥控板同时也应集成降压电路,并预留多组3.3V和5V供电接口,以支持STM32芯片和外设正常工作。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: