移动机器人(四)四轴飞行器
四轴飞行控制原理
四轴飞行器在空间上有6个自由度,分别是沿3个坐标轴进行平动和转动,通过对四个旋翼的转速控制来实现,6个自由度方向的运动姿态分别为:垂直升降、俯仰角度、前后飞行、横滚角度、左右侧向飞行。
四轴飞行器机体结构有“X”型和“+”型两种,我们通过“X”型进行飞行控制的讲解:
类似麦克纳姆轮,螺旋桨转动产生的力除了垂直向上的升力,还有一个切向的空气的反作用力(如图红色箭头),通过组合每一个螺旋桨的切向力,我们可以实现飞行器在空间中的运动。M1 和 M3 的螺旋桨物理结构上是相同的,M2 和 M4 相同(和前者是手性对称的,如果都相同机体不出意外也会跟着旋转),它们的旋转方向也是相反的。
(1)垂直升降:当四个电机输出平衡时飞行器垂直运动,这点我们通过设置相同的 PWM 值可能无法实现,因为电机的物理状况有所差异。为此我们引入 PID 闭环控制,并通过姿态传感器进行姿态的观测。
(2)俯仰/前后运动:M1 和 M2 电机输出更大,机体会出现如图的翻转,并且向后运动。
(3)横滚/左右运动类同(2),M1 和 M4 获得更大输出。
(4)偏航角度:M1 和 M3 获得更大输出,此时航向逆时针偏转。
动力分配
可以发现,机体的运动和机体姿态密切相关,机体向哪边倾斜,也会同时向哪边运动。因此,飞四轴时我们很大程度是通过控制姿态来控制它怎么飞。结合 code ,电机除了 thr_temp(throttle) 的一个基本动力分配外,还有结合姿态输出分配的控制量,约定输出为正时,绕相应坐标轴逆时针旋转。(代码和上面图片对电机的编号有出入)
int16_t thr_temp;thr_temp = Remote.thr - 1000; // 从遥控处接收油门值if (Remote.thr < 1020) // 油门过低{MOTOR1 = MOTOR2 = MOTOR3 = MOTOR4 = 0;break;}MOTOR1 = MOTOR2 = MOTOR3 = MOTOR4 = LIMIT(thr_temp, 0, 900); // 基本动力分配(垂直运动)MOTOR1 += +pidRateX.out - pidRateY.out - pidRateZ.out; // 结合姿态输出分配各个电机的控制量MOTOR2 += +pidRateX.out + pidRateY.out + pidRateZ.out;MOTOR3 += -pidRateX.out + pidRateY.out - pidRateZ.out;MOTOR4 += -pidRateX.out - pidRateY.out + pidRateZ.out;
IIC
I2C 属于两线式串行总线,由飞利浦公司开发用于 MCU 和外围设备进行通信的一种总线,属于一从多主的总线结构。总线上的每个设备都有一个特定的设备地址,以区分同一 I2C 总线上的其它设备。I2C 接口有串行时钟线(SCL)和串行数据线(SDA)组成,可用于发送和接收数据。通信均由主设备发起,从设备被动响应。
串级PID
PID 控制器属于无模型控制(十分神奇)。(仿真实验比较难模拟物理世界的“反馈”)
串级 PID是由两个 PID 模型“串联”而成,角度环(又称外环)的输出作为角速度环(又称内环)的输入。角速度由陀螺仪直接测出,不易受到干扰,相比角度通过多重传感器融合计算得到,反应更加迅速,解决飞行器失衡和跟随滞后问题。
参考
https://zhuanlan.zhihu.com/p/503219395 IIC通信(软硬件实现)
移动机器人(四)四轴飞行器相关推荐
- Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器
1.四轴飞行器运动学和动力学模型 在讨论四轴飞行器时,明确定义两个参考坐标系会很有帮助:一个固定的世界坐标系W{W}W和一个牢固地附着到四轴飞行器的质心(CoM)的运动坐标系B{B}B. 假设运动坐标 ...
- 四旋翼飞行器基本知识(四旋翼飞行器结构和原理+四轴飞行diy全套入门教程)
转载两篇日志: 第一篇<四旋翼飞行器结构和原理> 第二篇<四旋翼飞行diy全套入门教程> =========================================== ...
- 如何控制四轴飞行器四个方向飞行
四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置.四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统. ...
- 四轴飞行器实践教程(内部资料)
四轴飞行器实践教程(内部资料) 试读文档下载 下载地址:http://pan.baidu.com/s/1o6wlyum 四旋翼飞行器,也即四轴飞行器,曾经被作为初期飞机的模型开发,但由于体积.重量和控 ...
- 四轴飞行器1.4 姿态解算和Matlab实时姿态显示
四轴飞行器1.4 姿态解算和Matlab实时姿态显示 MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了. 1:完成matlab的串口,并且实时通过波 ...
- 四轴飞行器1.1 Matlab 姿态显示
四轴飞行器1.1 Matlab 姿态显示 开始做四轴了,一步一步来,东西实在很多,比较杂.先做matlab上位机,主要用来做数据分析,等板子到了可以写飞控的程序了,从底层一层一层开始写..希望能好好的 ...
- 《DIY四轴飞行器》读书笔记1
内容整理于黄和悦的<DIY四轴飞行器>. 一.四轴飞行器概述 1.四轴飞行器的现状 (1)研究内容 多级协作,自主飞行倾斜: 最优控制理论,飞行器自主飞行和避障: 主要是飞控部分. (2) ...
- 四旋翼飞行器5——各类方案设计及参考
下面几篇文章及资料是这两天看到的比较好的资源,可以多看看,对于新手来说,是个不错的提升自己的一些资料.可以分析每一种方案的特点,主控啊,传感器啊,不过到最后肯定要自己实践,才能得到最好的控制效果. 文 ...
- 3D打印Arduino 四轴飞行器
3D打印Arduino 四轴飞行器 查看原文 简介:3D打印Arduino Quadricopter 概述: 在网上搜索了构建四轴飞行器的廉价方法并且没有找到可行的解决方案之后,我们决定最好自己制造一 ...
最新文章
- 图灵十一月书讯 ——爱在深秋
- 前端:JS中JSON对象和String转换
- nacos enablediscoveryclient_Nacos入门指南03 服务发现实践
- python 查看已经安装的模块_教你用Python查看模块的帮助文档,方法和帮助信息...
- 1 Zookeeper安装
- Normal Vector Using WorldInverseTranspose
- 如何查看文件夹里有几张图片_如何把几张图片合成一个pdf?图片合并为pdf的操作教程...
- 通过HttpModule实现IP地址屏蔽功能
- snprintf与sprintf的区别
- Shiro 详细教程(集各教程内容为一体)
- 产品读书《终结拖延症》
- 红米开发版刷机教程_红米Note3开发版怎么刷机 红米Note3开发版刷机教程
- 厨神之路五--粥汤类
- 又是一年冬至,最喜欢吃冬至茧了
- 电力设备事故演练仿真培训_电力事故VR培训_广州华锐互动
- 恒生电子实习记录-2
- Docker 理论以及隔离
- 【ALM】POLARION ALM之需求管理解决方案介绍
- RedHat6 挂载FC存储创建LVM
- Ijk播放器无法播放带空格或者中文的网络视频的解决方法
热门文章
- 燕东微在科创板上市:市值263亿元,北京电控、亦庄国投等为股东
- 抖音上的python课程_如何用Python抓抖音上的小姐姐
- 实验三:CART回归决策树python实现(两个测试集)(二)|机器学习
- 安装SSL证书的网站被谷歌提升排名权重
- c语言求椭圆的切线方程,如何快速求椭圆的切线方程
- 严重: Allocate exception for servlet CustomerServlet java.lang.ClassNotFoundException: cn.itcast.cstm.
- jqfactor_analyzer源代码解读02
- [渝粤教育] 西南科技大学 数控技术基础 在线考试复习资料
- Blizzard的MPQ文件格式搜索算法---来自Gameres bbs
- 浅析Trafodion体系结构