- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 PX4代码解析(6)
上一节介绍了PX4姿态估计调用函数的流程,这一节分享一下我对PX4姿态解算的解读.首先,要理解PX4姿态解算的程序,要先从传感器的特性入手,这里主要介绍的传感器有加速度计,磁力计,陀螺仪.
2022-11-30 22:24:27
4493
3
原创 四旋翼滑模控制
一、引言之前介绍了四旋翼建模与pid双环控制器设计,本次打算分享一下四旋翼滑模控制器的设计,参考文献(韩业壮,华容.四旋翼飞行器的RBF网络自适应滑模控制[J].电光与控制,2017,24(11):22-27.)二、控制器设计四旋翼的模型在我之前的博客(四旋翼无人机Matlab建模)已经介绍过,这里不再赘述,四旋翼的模型如下:{x¨=u1m(sψsϕ+cψcϕsθ)−k1mx˙+d1y¨=u1m(sψsθcϕ−cψsϕ)−k2my˙+d2z¨=u1mcθcϕ−g−k3mz˙+d3ϕ¨=θ˙ψ˙(Iyy
2022-04-11 16:43:11
11513
40
原创 PX4代码解析(5)
一、前言我所讨论的PX4代码是基于v1.11版本,该版本与之前的版本有不少不同,其中一个比较大的区别在于新版本大部分用到了C++中模板,使得代码没有以前那么容易理解,因此我在后面介绍PX4的姿态估计,控制等重要算法代码时会介绍一部分类与模板的知识,方便大家理解代码。接下来几章我将讨论我对PX4代码姿态估计的理解,主要的文件是PX4_Firmware/src/modules/attitude_estimator_q/attitude_estimator_q_main.cpp,我的理解不一定正确,一家之言,
2022-03-12 21:27:43
4705
9
原创 PX4代码解析(2)
前言在大致了解PX4代码架构后,我们需要了解PX4的通信机制。在PX4代码架构中,通信总线主要分为两个部分,一是内部通信总线uORB,二是外部通信总线Mavlink,
2021-11-01 10:39:01
6091
6
原创 PX4代码解析(1)
前言做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构一、代码整体结构既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V
2021-10-26 22:00:57
10479
原创 解决‘.../rqt_virtual_joy/plugin.xml‘ has no Root Element问题
问题描述在使用rqt组件时,在终端输入rqt,往往会报下面的错误Skipped loading plugin with error: XML Document ‘/opt/ros/melodic/share/rqt_virtual_joy/plugin.xml’ has no Root Element. This likely means the XML is malformed or missing…解决方案先进入‘/opt/ros/melodic/share/rqt_virtual_joy/文件
2021-09-11 10:51:51
1030
5
原创 matlab求负数分数幂问题
问题描述在使用matlab时,我们经常会求某一个数字的分数幂,例如求x的1/3次幂,一般在matlab写作x^(1/3)。当x大于等于0时,这个值没什么问题,但当x小于0时,往往会出现计算失误,例如求-1的1/3次方,我们需要的结果往往是-1,但在matlab结果如下图经过matlab计算后,会得到一个虚数结果,这个结果往往是我们不需要的。这是因为Matlab很多运算都是按照复数规则进行的,比如矩阵的转置等等,在我们需要实数根时,需要进行一些处理。解决方案1.使用nthroot()函数nthro
2021-08-27 15:42:42
6439
1
原创 四旋翼双环PID控制
在我上篇博客《四旋翼无人机Matlab建模》中,我建立了四旋翼的模型,并在simulink中搭建了仿真,但并没有设计控制器。本章便针对四旋翼设计最常见的串级PID控制器,本篇文章主要从两个部分讲述控制器设计,一是理论部分,二是实践部分,阅读本文需要了解PID算法,推荐阅读https://blog.youkuaiyun.com/nemol1990/article/details/45131603一、理论部分在四旋翼的控制中,最常见也是最方便使用的控制便是PID控制。主要是因为PID算法简单,适应性强,不依赖模型。
2021-08-01 11:16:58
14149
72
原创 四旋翼无人机Matlab建模
本文主要分享一下四旋翼无人机的建模过程,然后在Matlab的simulink模块搭建起四旋翼无人机的模型,下一章将结合这个模型设计双环PID控制器并调节参数。一、无人机建模过程
2021-07-19 16:03:21
35504
51
原创 ros基础知识(1)
之前在毕设时用到了ROS,但后来就没怎么使用了,现在回头整理资料的时候觉得这个技能不能荒废了,因此打算复习整理一下并写在博客里,方便和大家讨论学习,我打算从最基础的东西开始介绍。一、Linux与 Ubuntu在开始介绍ROS之前,我先来介绍一下Linux与Ubuntu。20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和macOS这几种。Unix价格昂贵,不能运行于PC;DOS显得简陋,且源代码被软件厂商严格保密;MacOS是一种专门用于
2021-07-13 22:31:04
469
原创 PX4环境git submodule update --init --recursive失败的解决办法
最近开始搭建PX4环境,搭建是需要从github下载工程,然后使用语句git submodule update --init --recursive更新工程子模块,但往往由于网络原因这一步需要很久,甚至会失败。因为github是外网,在上面下载代码会受到很大限制,往往会出现下面的问题:即无法连接到github,查阅了相关资料后,我发现了解决更新子模块失败的方法:1.打开你下载的PX4源码,即Firmware文件夹,找到其中的.gitmodules,如下图:2…gitmodules有以上格式,path
2021-04-24 15:34:00
9033
11
原创 VS2019C++代码出现cout不明确
最近在使用VS2019写c++代码时,出现了以下问题查了很多资料,我看网上大概出现的解决办法有以下几种:1.把using namespace std注释后保存,然后在取消注释,问题可以解决我本以为这个问题不过如此,就去试了试,很显然对我来说不怎么管用,如果上述方法没用的话,可以试试第二种方法2.检查代码是否有问题,有没有出现花括号{}不配对的情况,改
2021-04-18 09:35:52
5823
原创 终端滑模(Terminal滑模)理解
一、什么是终端滑模在前面所介绍的滑模控制中,我们是选取了一个线性的滑模面s,使系统达到滑模面后,误差逐渐收敛到0,收敛的速度可以通过调节滑模面的参数来实现。后来人们为了使滑模控制有更好的性能,便想到将滑模面设计成非线性函数,于是就产生终端滑模.二、终端滑模形式...
2021-04-05 15:11:05
31790
118
原创 通俗理解滑模变结构(2)
一、仿真接上一节的内容,用Matlab simulink模块搭建模块,搭建模型如下:前面control是控制器部分,model是我们上一节的对象。给定x1初始值为3,x2,x3的初始值为0,仿真时间为10s,仿真结果如下图所示x1x2x3从图中可以看出,x1,x2,x3都会收敛到0,说明上节设计的镇定控制器成功,simulink模型我放在文章结尾,自取,用的是matlab2018a。此时,我们用示波器观察u,会发现图如下:这个u出现了一个黄色的带,这就是滑模变结构控制中的抖振,这是
2021-01-26 21:54:05
7770
13
原创 通俗理解滑模变结构控制(1)
这里写自定义目录标题1.什么是滑模变结构控制1.什么是滑模变结构控制在开始介绍滑模变结构控制之前,最好先学习一些线性控制的基础,知道什么是李亚普诺夫函数,怎么判断系统稳定性,有一点相轨迹的基础。有了这些基础知识才可以理解这篇文章。好了,废话不多说了,让我们开始滑模变结构控制之旅吧。我们先从一个例子开始吧,假设有一个二阶系统如下:{x1˙=x2x2˙=2x2−x1+u\left\{\begin{matrix}\dot{x_{1}}=x_{2}\\\dot{x_{2}}=2x_{2}-x_{1}+u
2021-01-20 20:49:42
25410
27
原创 卡尔曼滤波原理(2)
三、卡尔曼五大公式推导相信大家已经看了我的上一篇文章吧,其实上一篇通过例子讲了卡尔曼滤波思想,卡尔曼滤波又称最优递归数字处理算法,他就是一处理数据的算法,目的是获取更为准确的数据。接下来,我要开始超级硬核的推导,推导非常详细,而且容易立即额,希望你们可以和我一起推导相信大家都了解过状态方程与观测器吧,现代控制理论比较基础的内容,我举一个简单的例子,就是控制中最常见的弹簧阻尼系统,如图1该系统的力平衡方程可以用以下式子表示(不明白的可以去https://wenku.baidu.com/view/f800
2020-10-27 10:05:53
450
原创 卡尔曼滤波原理理解(1)
一、什么是卡尔曼滤波简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优递归数据处理算法)”。在自然界中往往存在各种不确定性,不管是传感器测量的数据还是系统模型计算得到的数据,往往不是物体真实的值,存在各种各样的干扰,卡尔曼滤波就是从有干扰的数据中获取最优(最接近真实)的数据。二、卡尔曼滤波基础先来看一个简单的例子,我们用一把尺子来测一个硬币的直径,如图1,我们测量多组硬币的直径,用...
2020-10-25 22:24:00
713
2
原创 github下载慢的解决办法
github是对工科以及互联网比较有用的一个网站,但是其下载速度实在是顶不住网上真实下载速度解决办法:1.复制你要下载文件的下载链接,2.将链接复制到迅雷下载,开始体验飞一般的下载速度(相对于网站上下载)...
2020-02-25 16:15:21
383
原创 matelab中simulink报错改正方法
在进行电力电子simulink仿真时,如果出现“Error in embedded hardware settings on Hardware Implementation pane of Configuration Parameters dialog box: "native word size" specifies a value of 64, but it must match on...
2019-05-30 22:06:25
6899
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人