飞控代码
- 格式:doc
- 大小:310.50 KB
- 文档页数:59
四元数转欧拉角代码解析本文的内容就是解析正点原子MPU6050的mpu_dmp_get_data()函数中,三个欧拉角的由来,即如何将MPU6050输出的四元数转化为姿态解算所需要的欧拉角。
*pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch*roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll*yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3; //yaw其实上述三个公式的核心就是将一次的姿态变换分别用四元数矩阵和欧拉角矩阵表示出来,由于这两个矩阵是等价的即对应元素都相等,通过简单的对比运算就可以得到上述的三个公式。
因此,我将从1.四元数矩阵的得到;2.欧拉角矩阵的得到;3.两个矩阵的等价运算三个部分进行说明。
1.四元数矩阵的得到三重矢量计算公式:AX(BXC)=B(A·C)-C(A·B)这个公式很好记,右边部分就是BACK-CAB(后面的出租车)2.欧拉角矩阵的得到q02+q12+q22+q32=1从9.2.33到9.2.34的化简,其实就是利用进行化简,把1去掉即可。
将右侧的矩阵乘开,可得到一个3x1矩阵,与左边3x1矩阵对应元素相等,这个相等的关系,就是上个框框中求出的三个等式。
各轴上的单位1,就是图1.2.2矩阵任意行与列各个元素的平方和为1。
到这里,用欧拉角表示描述一次旋转变换已经结束了。
然而,上述的姿态矩阵C n b仅仅是《惯性导航》这本书先Z,再X,最后Y旋转变换而形成的姿态矩阵,这样的旋转顺序其实是和很多大家实际使用的飞控代码不一样的(同样的,关于θφγ的实际意义其实也没有明确的规定)。
此文目的就是解析“正点原子”飞控代码中四元数转欧拉角部分,因此,接下来,我将采用此代码所使用的旋转顺序,先Z,再Y ,最后X 的旋转变换重新计算旋转矩阵C n b。
PixHawk下载与编译Bootloader文件购买现成的飞控都是已经烧录好程序的,所以只连接地面站更新固件调试参数就可以了。
但是自己根据官方开源方案设计的PCB就必须烧录引导程序芯片才可以正常工作。
本文以PixHawk(PixFmu2.4.5)为例讲解。
一、安装下载与编译软件PX4 Toolchain1.1、下载编译文件进入官网/dev/toolchain_installation_win下载最新安装程序,(这里是以windows操作系统为例,其它系统可以下载对应安装程序)如何下图:右击目标另存为安装文件。
1.2、安装编译文件双击安装文件,根据提示安装软件,安装成功后在电脑程序栏处找到PX4 Toolchain(本例安装版本:px4_toolchain_installer_v14_win),此软件包含以下分支应用,HTerm,PX4 Console,PX4 Eclipse,PX4 Software Download,TeraTerm,Uninstall PX4.二、下载与编译Bootloader文件2.1、打开下载软件PX4 Toolchain / PX4 Console软件2.2、根据提示输入命令(红色字体部分,进入下载网址并下载Bootloader文件,)Administrator@WIN-09210921 /d/px4$ git clone https:///PX4/Bootloader.git 回车完成后,将会在安装文件夹下新建Bootloader文件夹并下载官网相关文件到些文件夹。
2.3、根据提示输入命令(红色字体部分,选择文件夹)Administrator@WIN-09210921 /d/px4$ cd Bootloader 回车2.4、根据提示输入命令(红色字体部分,下载并生成bootloader文件)Administrator@WIN-09210921 /d/px4/Bootloader$ make 回车2.5、根据提示输入命令(红色字体部分,初始化文件)Administrator@WIN-09210921 /d/px4/Bootloader$ git submodule init 回车2.6、根据提示输入命令(红色字体部分,升级文件)Administrator@WIN-09210921 /d/px4/Bootloader$ git submodule update 回车2.7、根据提示输入命令(红色字体部分,下载stylefix文件)Administrator@WIN-09210921 /d/px4/Bootloader$ make 回车注意:以上步骤即可以生成PIX所需要的bootloader文件,官网上提供三个版本的文件可以供下载(master(最新版本),stylefix(合适版本),vetting(通过审核版本)),但是这里默认下载生成的是最新(master版本)的文件。
开源飞控知多少所谓开源飞控就是建立在开源思想基础上的飞行自主控制器项目(Open Source AutoPilot),同时包含开源软件和开源硬件,而软件则包含飞控硬件中的固件和地面站软件。
一开源飞控发展第一代开源飞控系统使用Arduino或其他类似开源电子平台为基础,扩展连接各种MEMS传感器,能够让无人机能平稳地飞起来。
主要特点是模块化和可扩展能力。
第二代开源飞控系统大多拥有自己的开源硬件、开发环境和社区,采用全集成的硬件架构。
主要特点是高度集成、高可靠,其功能已经接近商业自动驾驶仪第三代开源飞控系统将会在软件、人工智能以及云应用方面进行革新。
加入集群飞行、图像识别、自主避障、自动跟踪飞行等高级飞行功能,向机器视觉、集群化、开发过程平台化的方向发展。
二开源飞控介绍Arduino飞控Arduino 是最早的开源飞控,由Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis 和Nicholas Zambetti于2005年在意大利交互设计学院合作开发而成。
Arduino公司首先为电子开发爱好者搭建了一个灵活的开源硬件平台和开发环境,用户可以从Arduino官方网站取得硬件的设计文档,调整电路板及元件,以符合自己实际设计的需要。
Arduino可以通过与其配套的Arduino IDE软件查看源代码并上传自己编写的代码,Arduino IDE使用的是基于C语言和C++的Arduino语言,十分容易掌握,并且Arduino IDE可以在Windows、Macintosh OSX和Linux三大主流操作系统上运行。
随着该平台逐渐被爱好者所接受,各种功能的电子扩展模块层出不穷,其中最为复杂的便是集成了MEMS传感器的飞行控制器。
为了得到更好的飞控设计源代码,Arduino公司决定开放其飞控源代码,他们开启了开源飞控的发展道路。
飞控FTI系统状态监测与数据分析系统设计与实现张娟;吕鹏涛【摘要】在飞行试验工程中,机载测试系统完成对飞控数据的采集、封装和输出;为了实现基于USB的PCM数据解调及其与计算机之间的数据通信,实现实时的状态监测和数据事后分析处理,设计并实现了基于.NET框架的FCS FTI系统状态监测与数据分析系统;该系统包括数据实时捕获、状态监测、数据事后处理等模块;测试表明,系统各功能模块运行稳定,能对FCS-FTI进行状态监测并能进行数据事后分析处理,具有高效的实时性和良好的可靠性.【期刊名称】《计算机测量与控制》【年(卷),期】2015(023)009【总页数】4页(P3174-3177)【关键词】飞行试验;flight controller system;flight test instruments;状态监测;数据分析【作者】张娟;吕鹏涛【作者单位】中国飞行试验研究院,西安 710089;中国飞行试验研究院,西安710089【正文语种】中文【中图分类】TP31飞控是飞行控制系统(flight controller system,FCS)的简称,是现代电传飞机所具备的自动化飞行控制系统[1]。
机载测试(flight test instruments,FTI)系统实现对飞行控制总线数据的采集、封装、输出等。
在飞行试验工程中,实现FCSFTI测试系统的状态监测,方便试飞测试工程师对采集参数信息、数据完整性等信息进行在线分析;实现飞控数据实时与事后分析,对FCS-FTI系统进行整体行为研究、效能评估、故障诊断等具有很高的应用价值。
FCS-FTI是飞控机载测试系统的简称。
在飞行试验工程中,FCS-FTI系统从飞机数字飞控计算机系统采集飞控数据,同时接收外部时间信息,并将采集的FCS数据和外部时间数据封装成PCM(pulse code modulation)数据流输出。
FCS-FTI状态监测与数据分析系统总体方案如图1所示,系统通过基于USB接口的PCM解调卡实时解调PCM数据流,并将获取的数据进行实时记录与回访、实时分析与显示等实现FCS-FTI状态监测;从数据记录设备获取静态数据进行数据事后分析。
基于多次加载方案的嵌入式飞控软件在线升级方法黄彦勃;鲁兴举;郭鸿武【摘要】在以DSP为核心的飞行器控制系统使用和维护过程中,经常需要对其嵌入式软件进行在线升级。
通过JTAG接口进行软件升级的方式在飞控组件装机后变得非常不方便。
研究了通过串行接口进行飞控软件在线升级的方法,基于DSP多次加载方案和双重校验机制在TMS320C6713B DSP系统上实现了飞控代码远距离、可靠的烧录和自启动,验证了方法的有效性。
%The online upgrade is always needed for embedded control software in the process of using and maintaining a DSP⁃core flight control system.One way of software upgrade is realized by Joint Test Action Group( JTAG) interface,but this method has great inconvenience after flight equipment assembled. This paper studies an online upgrade method for flight control software through serial interface.Based on DSP’s multiple loading design and double checking mechanism,the code is burned and self⁃started remotely and reliably on TMS320C6713B DSP system,and the availability of this method is proved.【期刊名称】《无线电工程》【年(卷),期】2016(046)012【总页数】5页(P73-77)【关键词】DSP;飞控软件;串行接口;多次加载方案;在线升级【作者】黄彦勃;鲁兴举;郭鸿武【作者单位】国防科技大学机电工程与自动化学院,湖南长沙410073;国防科技大学机电工程与自动化学院,湖南长沙410073;国防科技大学机电工程与自动化学院,湖南长沙410073【正文语种】中文【中图分类】TN391.4现代飞行器所要完成的任务越来越复杂,其飞行控制方式由遥控飞行向自主飞行和智能飞行发展,对飞行控制系统也提出了多功能、低成本、高精度和小型化的设计要求。
APM飞控介绍范文APM(ArduPilot Mega)飞控是一款开源的无人机飞行控制器,使用Arduino Mega 2560开发板和ATmega2560微控制器进行控制。
它可以支持多种飞行器类型,包括多旋翼、固定翼、直升机、车辆和船只等,且适用于初学者和专业人士。
APM飞控的功能非常强大,具备多种传感器与功能模块的接口,包括陀螺仪、加速度计、罗盘、GPS、气压计、导航模块、通信模块等。
这些传感器和模块提供了飞行姿态稳定性、位置定位、导航、高度控制、避障等功能。
APM飞控使用可视化的图形用户界面(Ground Control Station,简称GCS)来进行配置和控制。
用户可以通过电脑、手机或平板等设备与APM飞控进行通信,实时获取飞行数据,在线调整参数和模式,进行飞行计划等。
1.多种飞行器类型支持:APM飞控可以支持各种飞行器类型的控制,包括四旋翼、六旋翼、八旋翼、固定翼、直升机等。
通过选择不同的飞行器类型,用户可以针对不同的应用场景进行配置和飞行。
2.多种飞行模式:APM飞控支持多种飞行模式,包括手动模式、稳定模式、姿态模式、定高模式、定点模式、跟随模式、航点模式等。
用户可以根据需求选择不同的飞行模式,以实现自由飞行、稳定飞行、自动飞行等功能。
3.导航和定位功能:APM飞控可以通过GPS进行导航和定位,实现自动驾驶功能。
用户可以设置航点和航线,飞行器能够自动按照设定的航线进行飞行,同时实时在GCS上显示当前位置和飞行状态。
4.传感器和稳定性:APM飞控配备了陀螺仪、加速度计和罗盘等传感器,能够实时获取飞行器的姿态信息。
通过PID控制算法和传感器反馈,可以实现飞行器的姿态稳定和控制。
5.遥控器和数据链路:APM飞控支持与遥控器和数据链路进行通信和控制。
用户可以通过遥控器操控飞行器的飞行,实现手动控制、姿态控制等功能。
同时,用户还可以通过数据链路将APM飞控与地面站进行通信,实时获取飞行数据和调整参数。
APM代码学习笔记1libraries⽬录传感器AP_InertialSensor 惯性导航传感器就是陀螺仪加速计AP_Baro ⽓压计居然⽀持BMP085 在我印象中APM⼀直⽤⾼端的MS5611AP_Compass 指南针AP_GPS GPS定位还有些飞⾏姿态的AP_ARHS 姿态解算输出Roll Yaw PitchAP_AttitudeControl 姿态控制 APM飞这么稳就靠它了硬件抽象层AP_HAL 头⽂件AP_HAL_AVR APM2.X时代的板⼦ ATMega2560处理器AP_HAL_FLYMAPLE 好⼏年前中国⼀个团队出的基于Maple(STM32版Arduino)飞控 从硬件规格上STM32RET6 ITG3205 ADXL345 HMC5883 BMP085 按理说挺有发展前景但不知怎么没了下⽂AP_HAL_Linux 基于嵌⼊式Linux的飞控有树莓派加扩展板 uavio+ 国内的raspilot BeagleBoard加扩展板Erle Brain 2 也有商品飞⾏器Parrot Bebop Drone 应该是⽬前最有发展前景的平台。
AP_HAL_PX4 Pixhawk ⽬前主推的平台⽤料⾜价格贵不亚于上⾯Linux的那种性价⽐不⾼AP_HAL_SITL 模拟器不⽤买硬件直接在电脑上模拟了解⽰例代码定义hal变量作为引⽤代码粗糙缺乏注释setup() loop()函数和arduino⼀样hal引⽤每⼀个⽤到HAL层的⽂件都需要hal变量它获得AP_HAL::HAL对象,提供所有硬件特性的调⽤,包括打印消息到控制台,睡眠,I2C和SPI总线实际的hal实现都在AP_HAL_XXX库中常⽤hal⽅法有(类似arduino)hal.console->printf() hal.console->printf_P() 打印消息到控制台(_P在avr上能节约内存)hal.scheduler->millis() hal.scheduler->micros() 启动时间hal.scheduler->delay() hal.scheduler->delay_microseconds() 延迟指定时间hal.gpio->pinMode() hal.gpio->read() hal.gpio->write() 设置读写gpiohal.i2c I2C访问hal.spi SPI访问AP_HAL_MAIN 宏做⼀些HAL层的初始化通常不⽤关⼼它的具体实现Hello World⽐上⾯的还简单建⽴⽬录\libraries\AP_HelloWorld\examples\HelloWorld_test 建⽴三个⽂件HelloWorld_test.cpp#include <AP_HAL/AP_HAL.h>const AP_HAL::HAL& hal = AP_HAL::get_HAL();void setup(){hal.console->println("Hello World");}void loop(){hal.scheduler->delay(10);//必须延时不然上⾯的println都不会执⾏}AP_HAL_MAIN();make.incLIBRARIES += AP_HelloWorld只编译当前库Makefileinclude ../../../../mk/apm.mk可以从GPS_AUTO_test复制开始编译make linux -j4运⾏sudo ./HelloWorld_test.elf。