基于RK3399+STM32+PID的四轴飞行器跟踪与控制系统设计

news2024/11/28 2:38:17
系统硬件的总体方案设计
要设计一款具有跟踪功能且飞行稳定的四轴飞行器跟踪系统,首先要保证系
统硬件平台的功能稳定。系统各模块具有不同功能,所以需要根据各模块功能与
性能,进行芯片的选取与硬件电路设计,使系统在经济性、生产工艺、功能需求
等工程指标上得到优化,在一定程度上提高系统的稳定性和可靠性。
本文将四轴飞行器跟踪系统的硬件平台根据功能和设计需求不同分成三个
单元进行设计,在确保各个单元在独立运行的前提下,完成互相之间任务合作。
第一部分为四轴飞行器控制单元,该部分硬件主要完成对四轴飞行器机体的稳定
控制、遥控信号接收和执行追踪目标指令并执行的工作,是四轴飞行器跟踪功能
的执行部分。第二部分是遥控管理单元,该部分主要完成对四轴飞行器发来的信
息接收、跟踪目标选取和发送遥控信号的工作,是四轴飞行器跟踪功能的管理部
分。第三部分为目标跟踪单元,该部分硬件主要完成搭载目标跟踪算法和嵌入式
操作系统,并将图像信息实时回传给遥控管理单元,完成四轴飞行器跟踪功能的
算法处理。系统的整体硬件框图如图 2-1 所示。
从图 2-1 中可以看出,飞行控制单元和目标追踪系统之间采用有线传输方式,
而它们和飞行器管理系统之间采用无线通信方式。这符合一般四轴飞行器的操作
模式。其中飞行控制系统负责控制飞行器平稳飞行,在系统中相当于人类的小脑
功能。其在系统工作中会持续获取传感器信息,稳定飞行器自身姿态、保持与飞
行器管理系统的联系。是跟踪系统的执行机构,也是无人机保护自己的最后一道
屏障。目标跟踪系统负责完成对特定目标的跟踪功能,在系统中相当于人类大脑
的功能。其在接到管理系统指令后,会将人为选定的特定目标物信息带入跟踪算
法,以完成对目标物的实时跟踪,并在环境允许情况下,将图像实时回传给飞行
器管理系统。期间,如果出现目标丢失等特殊情况,系统会有一定的改错和保护
机制,确保自身安全和提高目标跟踪的稳定性。飞行器管理系统完成对跟踪目标
的选择及接收飞行器回传的图像和信息功能,其在整个系统中相当于家长的角
色。该系统实时对飞行器飞行状态进行掌控,用户可以根据飞行器的状态紧急恢
复手动控制功能。
2.2 四轴飞行器控制单元的硬件设计
为了确保四轴飞行器跟踪系统的稳定性,首要任务是确保飞行控制平台运行
的稳定性。四轴飞行器控制平台的设计主要是主控芯片及外围电路模块、飞行量
拾取模块,通信及飞行稳定控制模块组成。下面分别对以上模块进行详细介绍。
2.2.1 主控芯片的选取
飞行器控制芯片是飞行器控制系统最为重要的部分,大部分控制代码都要在
其内部完成,这其中包含许多浮点运算,而且为了让系统更加有序、高效的运行,
还要在主控芯片内部移植一款嵌入式实时操作系统,这种飞行器控制系统的设计
方法是现阶段被广泛采用的。目前, ST 公司推出的 STM32 系列微控制器在四轴
飞行器控制领域被广泛的应用,在很多公司的飞行控制系统中都取得了很好的表
现,所以本系统采用 STM32 系列作为系统的主控芯片。
其次从计算量和片内 ROM 空间考虑,需要一款内部带有 FPU 且片内存储空
间较大的 32 位微处理器,那么基于 M4 内核的 4 系列 STM32 芯片就是我们的首
要选择。
虽然本系统需要的外设及传感器有很多,但大多数接口都不复杂,而且没有
图像显示和外接存储芯片的需求,所以对待芯片的外部 I/O 数量没有硬性需求,
适量即可。所以从经济角度考虑选取 405 系列作为主控芯片就是很好的选择。
STM32F405 芯片内部是基于 ARM 公司的 CORTEX-M4 架构设计的,是一款
具有内部 FPU 单元的 32 位处理器。其内部具有 1M 字节的 FLASH 192kB
SRAM 存储器,可以满足带有一般的实时操作系统运行,并且可以最大外接
26MHz 的晶振,经过 PLL 倍频后可以使内部时钟具有很高的频率,可以加快代
码的运行速度。并且 STM32F405 接口资源丰富,有大量的外部通讯接口,可以
满足飞行器控制单元所需传感器的接口要求和控制单元的设计需求。
2.2.4 飞行姿态获取模块的硬件设计
陀螺仪作为四轴飞行器的核心传感部件,负责输出四轴飞行器运行时的角速
度和加速度,可以说近些年来四轴飞行器的兴起与发展,都得力于基于 MEMS
技术的陀螺仪的发展。它也成为了四轴飞行控制系统的重要组成部分之一。
飞行器控制单元在此处选用 MPU6500 作为四轴飞行器的角速度传感器。
MPU6500 系列采用 MEMS 工艺设计与制作,是世界上第一款集成了九轴传感器
的运动解决方案新芯片,常被用于游戏体验和运动感知等消费产品上。其内部具
有嵌入式 3 MEMS 陀螺仪、 3 轴微机电系统加速度计和数字运动处理器硬件加
速器引擎和一些外围通信接口。本文选用的 MPU6500 采取 SPI 总线通讯协议与
主控 MCU 进行通信。飞行姿态获取模块的硬件设计电路图如图 2-4 所示。
从图 2-4 中可以看出,飞行器姿态获取传感器 MPU6500 和主控芯片采用 SPI
通信协议传输数据,整个芯片只有四个数据引脚需要与主控芯片连接,并且通过
MOSI MISO 两个引脚传输数据与命令。虽然 MPU6500 系列速度传感器内部
结构很复杂,但现阶段 MEMES 技术以逐渐成熟,芯片集成化也越来越高,所以
其芯片的硬件电路设计并不复杂,只在一些引脚上加入滤波电容即可。
2.3 遥控管理单元的硬件设计
本文主要实现飞行器的自主跟踪功能,但是要真正实现完全无人控制的自主
跟踪较为困难,在移动物体较多的场景,必须人为选取跟踪目标,而且,在遇到
位置错误或意外情况时需要对飞行器的控制进行人为干预,保证飞行器自身和周
围事物的安全。所以本系统设计了实现上述功能的遥控管理单元。本单元除了完
成对无人机传输的图像进行转发和处理外,还拥有对无人机的最高控制权限,可
以在任何情况下人为接触飞行器自主跟踪飞行功能。
2.3.1 遥控管理单元主控模块的硬件设计
因为此部分要实现的功能、需要的芯片资源和对芯片处理能力的要求与飞行
器控制系统相似,除了需要外接 LCD 接口和用于数据存储的 SRAM 芯片外,无
太大区别,所以在此部分还是选用 STM32F4 系列 IO 口数目较多的 STM43F407
系列芯片做为系统的主控芯片。此部分的电路设计和飞行控制单元的主控模块的
硬件设计相似,在这里就不做过多赘述。遥控管理单元主控模块的原理图如图 2-8
所示。
主控单元模块主要负责接收四轴飞行的姿态、位置、以及其它飞行相关信息,
同时还要完成对目标跟踪单元通过 WiFi 模块传来的图像进行处理。在工作方式
上,该模块具有两种模式,一种是配合计算机,完成图像信息和飞行器信息的显
示和传输工作,另一种是独立自主的工作方式,将图像和飞行器信息实时显示在
模块自身 LCD 中,同时可以完成对飞行器的控制工作。
在手动操作模式下,用户可以通过遥控旋钮,实现对飞行器的人为控制。并
可以从主控单元外接的 LCD 上,读取飞行相关的姿态信息与状态,方便用户对
飞行器的管理。
即使 STM32F407 IO 口数目众多,也无法满足遥控管理单元的全部外围模
块的需求,所以在进行此模块的硬件设计时,将同样通信接口的传感器采用模块
化的设计方式,可以共用部分接口,节约了系统资源,提高了效率。

 

 

 

2.4 目标跟踪单元的硬件设计
本单元是跟踪算法的运行平台,同时还需要完成对目标信息的采集和数据传
输工作,对硬件的图像处理性能有较高的要求。一般的带有实时操作系统的嵌入
式平台很难适应该部分的需求,所以本文采用了搭载嵌入式 Ubuntu 的大型嵌入
式系统,通过移植 OpenCV 实现的目标跟踪算法,完成系统功能。
2.4.1 系统主控芯片的选择
通过上述描述,常规的智能芯片都已无法满足设计需求,而常用的 ARM9
ARM11 系列处理器过于陈旧且部分已停产也无法满足设计需求,选用性能更
好的处理器才是正确选择,例如以 ARM 公司的 CORTEX-A 系列为内核的微处理
器。此部分处理器通常是智能设备、个人 PDA 设备和手机的主控芯片。通常这
类芯片都被国外芯片厂商垄断,恰逢在本人毕业期间,某些中国企业购买国外芯
片的渠道被破坏,这让从事这一领域工作的工程师感觉,选取一款国内自主设计
的只能芯片就很有必要了。
目前,国内在这一领域比较突出的产品有,华为的海思系列、瑞芯的 RK3399
全志系列和联发科的一些型号芯片。其中华为的海思直接面向企业级用户,个人
开发难度较大。珠海全志科技 A64 系列资料较少,只有零星文档可以参考,也主
要面向企业级用户。而瑞芯的 RK3399 对待个人开发者较为友好,有自己的开源
社区,个人开发者可以在上面获取相应的芯片资料、 bootloader 资料、片内外设
驱动以及操作系统移植的相关资料。对高校的个人开发人员是一个很好的选择。
RK3399 内部采用 -Big.Little 架构,其内部包含双核 Cortex-A72 和四核
Cortex-A53 架构,是一款高性能低能耗的高性能 64 位处理器。通常被应用于电
脑、个人移动设备和数字媒体处理设备上。
RK3399 和许多具有高性能的嵌入式设备一样,内部集成了 H.264/H.265/VP9
4K 高清视频单元、高性能的 JPEG 编码器和特殊图像处理单元。其内部还集
成了完全匹配 OpenCL DirectX 11.1 3D 高性能 GPU 处理器。同时在外接芯
片内存和存储芯片部分, RK3399 配有高性能双通道的外部存储器接口,包括
DDR3/DDR3L/LPDDR3/LPDDR4 类型的内存芯片,能够保证外接大容量存储芯
片。并且其外围接口资源丰富,可以为应用提供灵活的支持。其芯片内部的资源
相当的丰富。通过查阅福州瑞芯公司的官方 Design_Guide 手册,可以得到不同应
用场景的芯片设计结构图,其中根据本文描述系统的特性与技术需求,选用手册
中的 Tablet Apllication Block Diagtam 作为系统基础设计范例,在其中进行相应的
改进与扩展。
在目标跟踪单元中用到的主要有 DDR3\EMMC\WIFI\USB\display panel\MIPI
CAMERA 等模块的硬件设计。 RK3399 采用 BGA 封装,芯片底部共有 828 个引
脚,所以不可能一一介绍,所以,在本文对该部分硬件系统的描述上,选取重要
部分单独描述。下面就按以上模块分别对该系统进行简单介绍。
5.1 系统总体软件设计描述
本文将四轴飞行器跟踪与控制系统的软件设计分成三个单元,即飞行控制单
元的软件设计、目标跟踪单元的软件设计和飞行器遥控管理单元的软件设计。三
个部分各司其职,互相配合的完成对目标物体的跟踪与四轴飞行器控制工作。其
中飞行控制单元的软件设计选用 keil 编译器和 FreeRTOS 嵌入式实时操作系统为
基础,控制代码采用 C 语言编写,主要完成飞行器姿态控制的工作。目标跟踪单
元的软件设计选用 arm-linux-gcc 编译器和搭载 OpenCV Ubuntu 操作系统为基
础,采用 C++ 语言和一些脚本语言对目标跟踪算法和进程进行编写,完成对跟踪
目标运动方向和距离的识别。遥控管理单元从功能上将其分为两部分进行软件设
计,一部分为下位机遥控通讯模块,该部分选用 Keil 编译器和 FreeRTOS 嵌入式
实时操作系统为基础,信息传输和遥控代码采用 C 语言编写,完成接收跟踪模块
发来的图像数据和与上位机通讯任务。另一部分为上位机显示和管理模块,该部
分选用 VS2013 Windows 操作系统为基础,显示与控制代码采用 MFC 下的 C++
语言编写,主要完成跟踪目标的选择以及飞行器飞行相关信息的显示工作。
5.2 飞行控制单元的软件设计
飞行控制单元的软件设计主要集中在完成姿态解算和控制算法的工作,为了
建立算法运行平台和保证算法运行的稳定,还需要在该部分系统的硬件设计的基
础上,通过移植嵌入式实时操作系统 FreeRTOS 和编写相关硬件外设的驱动函数,
保证整个飞行控制单元的稳定运行。
5.2.1 飞行控制单元算法运行环境搭建
由于四轴飞行器自身传感器众多,而且需要处理的遥控数据也较多,所以一
般的裸机程序就无法满足飞行控制单元对稳定性的需求,移植实时嵌入式系统
FreeRTOS ,将飞行控制单元要完成的功能以 task() 函数方式编写,通过系统内部
任务调度器按优先级或时间片调度方式控制,保证整体单元的所有任务平稳运
行。 FreeRTOS 系统移植流程图如图 5-1 所示。

 

 

 

 

5.5.2 四轴飞行器跟踪系统的测试
本文最后针对四轴飞行器的整体跟踪性能进行了测试,待追踪目标选为颜色
较实验室背景色差别较大的绿色写字板,通过旋转板面,将写字板绿色一面朝上
放置,通过拉动下方轮子使其移动,观察写字板上空飞行器的跟踪状况。四轴飞
行器跟踪性能测试过程如图 5-9 所示。
从图 5-9 所示试验中得出,随着人为缓缓拉动写字板,四轴飞行器也伴随着
向写字板运动方向缓缓移动,由实验结果可知,本文设计的系统对特征简单物体
的跟踪性能较好。依据相同原理,在实验室中对复杂目标进行跟踪实验,分对速
度为 0.8m/s 1.5m/s 的待跟踪目标进行跟踪,获得表 5-2 和表 5-3 的实验结果。

信迈提供RK3399+STM32软硬一体化方案。 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优维低代码:Legacy Templates 构件模板

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 连载…

镜像恒流源电路分析

在改进型差动放大器中,用恒流源取代射极电阻RE,既为差动放大电路设置了合适的静态工作电流,又大大增强了共模负反馈作用,使电路具有了更强的抑制共模信号的能力,且不需要很高的电源电压,所以,恒…

Chatgpt取代客服?取代客服的其实另有其人

近来,一款聊天机器人ChatGPT刷爆全网,这也让不少人发出疑问:人工智能真的能大规模取代人类吗?其实,人工智能在很多行业比如电商、金融、医疗教育和制造业等领域已经有许多尝试和应用,最常见的就是大家在生活…

研报精选230214

目录 【行业230214艾瑞股份】中国增强现实(AR)行业研究报告【行业230214国信证券】信息安全深度剖析5:密评和信创双催化,密码产业开启从1到N【行业230214民生证券】磁性元器件深度报告:乘新能源之风,磁性元…

【数据结构】基础:图的遍历实现(附C++源代码)

【数据结构】基础:图的遍历实现(附C源代码) 摘要:将会在数据结构专题中开展关于图论的内容介绍,其中包括四部分,分别为图的概念与实现、图的遍历、图的最小生成树以及图的最短路径问题。本文将介绍图的遍历…

Python实现视频自动打码功能,避免看到羞羞的画面

前言 嗨呀嗨呀,最近重温了一档综艺节目 至于叫什么 这里就不细说了 老是看着看着就会看到一堆马赛克,由于太好奇了就找了一下原因,结果是因为某艺人塌房了…虽然但是 看综艺的时候满影响美观的 咳咳,这里我可不是来教你们如何解…

卡诺图化简

1.相关概念 最小项:函数的某个乘积项包含了函数的全部变量(原变量或反变量的形式),且每个变量仅出现一次,则这个乘积项为该函数的一个标准积项。 最小项中的原变量记为1,反变量记为0,当变量顺序…

C++STL剖析(九)—— unordered_map和unordered_multimap的概念和使用

文章目录1. unordered_map的介绍和使用🍑 unordered_map的构造🍑 unordered_map的使用🍅 insert🍅 operator[ ]🍅 find🍅 erase🍅 size🍅 empty🍅 clear🍅 sw…

程序环境和预处理详解

文章目录一、程序环境1.1 - 翻译环境1.1.1 - 编译1.1.1.1 - 预编译(预处理)1.1.1.2 - 编译1.1.1.3 - 汇编1.1.2 - 链接1.2 - 执行环境二、预处理详解2.1 - 预定义符号2.2 - #define2.2.1 - #define 定义标识符2.2.1.1 - 语法2.2.1.2 - 建议2.2.2 - #defi…

AI极大地改变了知识创造与分发的逻辑

AI改变了~知识创造、分发的逻辑 细想一下这是恐怖的 已经传导出给教育的压力 趣讲大白话:AI机器人成了随身专家 *********** 1.以前靠秀才创造、分发知识 2.后来是教育体系为主 3.再后,互联网平台聚合和分发 4.将来可能大部分是机器人创造、分…

Xshell和Xftp的下载和在linux虚拟机中的使用

Xshell和Xftp的下载和在linux虚拟机中的使用一、Xshell和Xftp简介XshellXftp二、 Xshell和Xftp下载三、Xshell和Xftp安装Xshell安装Xftp安装四、 Xshell和Xftp使用找到linux虚拟机的ip地址Xshell的使用Xftp的使用一、Xshell和Xftp简介 Xshell Xshell 是一个强大的安全终端模拟…

对灵敏度分析技术进行建模(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

9、MyBatis框架——使用注解开发实现数据库增删改查操作、一级缓存、二级缓存、MyBatis实现分页

目录 一、使用注解开发实现数据库增删改查操作 1、搭建项目 2、使用注解开发操作数据库 二、一级缓存 1、一级缓存失效的情况 三、二级缓存 1、手动开启二级缓存cacheEnabled 2、二级缓存机制 四、MyBatis实现分页 1、配置环境 2、startPage()开启分页 3、PageInfo…

charles+夜神模拟器抓包

1.资料地址: 链接:https://pan.baidu.com/s/1w9qYfFPJcduN4If50ICccw 提取码:a7xa2.安装charles 和夜神模拟器并配置参考地址: https://www.beierblog.com/archives/%E4%BA%B2%E6%B5%8B%E5%AE%8C%E5%85%A8%E5%8F%AF%E8%A1%8Ccharles%E6%8A%93%E5%8C%85%E…

两道链表经典算法题---链表有无环(基础+进阶)

生活就像一盒巧克力,你永远不知道你会得到什么。——《阿甘正传》目前自己粗略的学完数据结构,正在开始刷算法题目。个人觉得算法是一个积累,循序渐进的的过程,需要不断加量,进而达到所谓的质。链表作为数据结构一个重…

全网详解MyBatis-Plus LambdaQueryWrapper的使用说明以及LambdaQueryWrapper和QueryWapper的区别

文章目录1. 文章引言2. 代码演示3. 分析LambdaQueryWrapper3.1 引入LambdaQueryWrapper的原因3.2 LambdaQueryWrapper和QueryWapper的区别4. 重要总结1. 文章引言 今天在公司写代码时,发现同事使用LambdaQueryWrapper来查询数据,而我一直习惯使用QueryW…

没对比没伤害,浙江男不买包包被女友拖拽,深圳男收三个女孩红包

又是一年一度的情人节,虽然这只是一个西方的节日,却被中国的商人们充分利用,也造成了不小的社会矛盾。在今年的情人节里,浙江就发生了一件奇葩的事情,一位女子因不满其男友 不给自己买两万元包包,就在商场里…

Onvif协议如何判断摄像机支持 —— 筑梦之路

有人就问什么是Onvif协议呢? 全称为:Open Network Video Interface Forum.缩写成Onvif。 翻译过来是:开放型网络视频接口论坛,目的是确保不同安防厂商的视频产品能够具有互通性,这样对整体安防行业才是良性发展。 现…

【C语言编译器】01程序-编译器-IDE

目录一、程序的几个基本概念二、什么是编译器三、集成开发环境3.1 IDE简介3.2 windows 下的C语言IDE一、程序的几个基本概念 计算机程序(Computer Program);港、台译做电脑程式。计算机程序是一组计算机能识别和执行的指令,运行于…

5 款最好的免费 SSD 数据恢复软件

SSD(固态硬盘)提供比传统硬盘更快的读/写速度,使启动、软件加载和游戏启动更快。因此,在我们选择存储设备时,它是一个极好的选择。但是,它仍然存在数据丢失的风险。假设您是受害者之一,正在寻找…