自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 算法-卡尔曼滤波之多维卡尔曼滤波的状态外推方程

我们通过把多维复杂的外推方程使用状态转移矩阵来表示,把输入控制使用输入控制矩阵来表示,得到了简单美观的矩阵形式的状态外推方程;Y是输出向量,一个系统有输入也有输出,中间的是系统的状态,C是输出矩阵,D是直接传输(一般是没有的,必须经过系统变化)A是系统的动态矩阵,是最关键的,只和系统本身有关,B是输入矩阵,得到的系统方程(控制);一系列的微分方程组成的,输入是一项,所以是一维的,输出是Y,导数是中间过程;y和后面的N-1个一阶倒数,都是状态变量,引入新的Xn去替换,然后对其求导;矩阵,系统矩阵和控制矩阵;

2024-05-17 18:23:15 303

原创 算法-卡尔曼滤波之多维卡尔曼滤波的状态外推方程

假设飞机是以恒定加速度进行运动的,此时飞机的状态外推方程为如下9个方程,它们都是在时间点n时刻,飞机的系统状态,但是对于更多更复杂的模型,我们使用列方程将会很复杂,通常做法是使用矩阵来描述多维过程;例如如图所示,该飞机是一个全姿态的,我们考虑它的动态过程,例如三维空间下飞机xyz的位置,xyz的速度,xyz的加速度等, 它们满足的关系是,我们使用矩阵来表示;我们通过把多维复杂的外推方程使用状态转移矩阵来表示,把输入控制使用输入控制矩阵来表示,得到了简单美观的矩阵形式的状态外推方程;

2024-05-17 18:00:13 147

原创 算法-卡尔曼滤波之引入噪声

现在罐子内液体的温度在以每秒0.1℃进行加热,但是我们此时认为该模型仍然是静态的,即温度不会发送变化,此时认为假设是正确的,过程噪声方差q很小为0.0001,测量误差是0.1(标准差),使用这样的模型去预测动态温度,发现效果不是很准确;静态模型中我们引入了过程噪声,过程噪声是系统模型的误差,也就是一种不确定性,因为,我们修改了由不确定性组件的方程,协方差外推方程,我们加上了这个不确定性;此时我们有了协方差外推方程的结果(估计不确定性+误差),外推方程的结果(静态模型,前后两次状态保持一致);

2024-05-17 17:40:17 717

原创 算法-卡尔曼滤波之卡尔曼滤波的其他三个方程

分析第一个例子,其中测量值和真实值之间的误差属于测量误差(使用准确性来描述),由于测量误差是随机的,我们可以使用方差来描述(表示距离均值的偏移程度),测量方程通常有传感器的供应商提供也可以通过校准得到,测量误差的方程实际上就是测量的不确定性,使用R来表示;首先通过分析模型,状态外推方程,通过状态外推方程,推导出了协方差外推方程,令当前最优估计的方差最小,推导得到卡尔曼增益,再由卡尔曼增益球的协方差的更新方程;将状态更新方程化简得到,系统当前状态其实就是先验估计值和测量值的加权平均值;

2024-05-14 19:30:34 310

原创 算法-卡尔曼滤波之卡尔曼滤波的第二个方程:预测方程(状态外推方程)

在上一节中,使用了静态模型,我们推导出了卡尔曼滤波的状态更新方程,但是在实际情况下,系统都是动态,预测阶段,前后时刻的状态是改变的,此时我们引入预测方程,也叫状态外推方程;假设雷达的精度是20m,此时的误差更可能是由于飞行器速度发生了改变,那么此时我们更信任雷达的测试结果,所以我们将系数调高(当系数β=1时,估计值结果=测量值);具体流程:根据分析,我们设置权重因子,开始第0次迭代,首先依然是初始化,输入估计值,与上一个例子不同是,此时我们是动态模型,预测后,先验估计值与输入值是不同的;

2024-05-14 18:20:46 283 1

原创 算法-卡尔曼滤波之卡尔曼滤波的第一个方程:状态更新方程

第二步2:进行预测(状态外推方程),但是由于我们目前使用的是静态模型,所以预测前后结果保持不变,得到输出估计值为X(1,0)(表示先验估计值,第0次对第一次的估计,其值仍然等于X(0,0));1.预测重量的调整:表示测量值Zn和先验估计值(测出第N-1次后,对第N次的估计)之间的差异,称为残差或者创新,这个差异代表了当前的测量值和先前预测的偏差;更新后的估计位置:通过将加权的残值添加到预测重量,得到更新的后的估计重量,这意味着新的估计重量是预测重量和测量重量之间的加权平均,更加接近实际重量;

2024-05-14 17:48:36 696

原创 算法-卡尔曼滤波之基本数学的概念

均值是一组数据中所有数值的总和除以数据的数量。均值是数据的中心趋势的一种度量,通常用符号 xˉ 表示。:对于包含 n 个数据的数据集 {𝑥1,𝑥2,...,𝑥𝑛},均值 xˉ 计算公式为:

2024-05-14 17:12:35 833

原创 算法-卡尔曼滤波之为什么要使用卡尔曼滤波器

因为在过程中,测量是存在随机误差的,例如传感器的精度等,称为测量噪声,另外系统模型可能会受其他外部因素干扰,称为过程噪声;得到了系统模型,通常来说,我们根据系统模型,可以得到预测系统下一时刻的状态,但是事实上是不能的;得到了一维的运动方程,对应得到三维方程;假设使用雷达来预测飞行器的位置;x0-表示上一时刻的位置;v0-表示上一时刻的速度;▲t-表示时间间隔(5s)

2024-05-14 01:34:49 159

原创 C语言-预处理

如果在当前.c ifdef 上边定义过AAA ,就编译代码段一,否则编译代码段二 注意和if else语句的区别,if else 语句都会被编译,通过条件选择性执行代码而选择性编译,只有一块代码被编译;注意:include 经常用来包含头文件,可以包含 .c 文件,但是大家不要包含.c因为include包含的文件会在预编译被展开,如果一个.c 被包含多次,展开多次,会导致函数重复定义。带参函数,代码只有一份,存在代码段,调用的时候去代码段取指令,调用的时候要压栈弹栈。选择性编译都是在预编译阶段干的事情。

2024-05-01 01:18:38 408 3

原创 C语言—函数

当编写函数的时候,一开始不要想着函数如何传参和函数的返回值应该是什么 而是当在编写代码的途中,要使用某些值,但是当前函数中不存在,此时就需要进行传参,这时候考虑怎么传参就是合适的时机 当函数编写完毕后,考虑是否要将某些结果返回给其他函数去使用,此时需要考虑返回值 使用函数的好处?有些情况下,如果不对函数进行声明,编译器在编译的时候,可能不认识这个函数,因为编译器在编译c程序的时候,从上往下编译的。注:在定义函数的时候,函数的返回值类型,到底是什么类型的,取决于函数的功能。什么都不返回就可以了。

2024-04-28 23:59:36 824 1

原创 C语言——数组

/定义了一个名为a的数组,数组中每一个元素都是int类型,一共有10个元 素 //每一个元素都保存在一个变量中,每一个变量都是有数组名和数组下标组成 的 //并且是从0开始的,分别是a[0] a[1] a[2]... a[9]定义了一个整型的数组a,数组名是a,数组中有十个元素,每个元素的类型都是int类型的,而且在内存中是连续存储的;二维数组 int a[2][30];三维数组是由多个相同的二维数组构成的 int a[5][4][2][10];这十个元素分别的a[0],a[1]....,a[9];

2024-04-28 23:43:11 417 1

原创 STM32——USART

串口是一种应用十分广泛的通讯接口,串口按位bit发送和接收字节,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力;通用同步/异步收发器;*同步模式多加一个时钟输出,没有时钟输入,主要是为了兼容其他通信协议,不支持两个USART直接的同步;

2024-03-30 20:24:52 2724 1

原创 STM32——I2C

I2C是(Inter IC Bus)是由Philips公司开发的一种通用数据总线;有多根通信线;一根SDA(串行通信线);一根SCL(串行时钟线);共地GND;VCC电源线;同步半双工;支持总线挂载多设备(一主多从,多主多从);带数据应答(主机接收一个数据后,会返回应答位,告诉从机是否接收到了数据);I2C外设是STM32内部集成的硬件电路,可以自动执行时钟生成和数据时序的收发,减轻CPU的负担;

2024-01-30 13:15:14 1689 2

原创 STM32——DMA

最后OLED显示10.2API2AD扫描模式+DMA功能:实现将ADC采集后的数据通过硬件自动触发DMA转移到SRAM数组中,并用OLED显示;思路:1.RCC开启GPIO和ADC,DMA的时钟,这里DMA是挂载在AHB桥上的;2.初始化GPIO,配置为模拟输入,读取引脚连续变化的模拟信号;3.配置待测通道列表,配置通道号和通道次序;4.配置来自ADC预分频器的时钟;5.初始化ADC,配置ADC模式,连续模式和扫描模式,数据对齐方式和通道数,以及是否选择外部触发模式;6.开启DMA通道;

2024-01-29 15:57:30 3205

原创 STM32——ADC模数转换器

ADC模数转换器,将模拟信号转换为数字信号,STM32是数字电路,只有高低电平,ADC转换器可以通过读取引脚连续变化的模拟信号,转化为内存种存储的数字变量,通过对寄存器的读取,就可以获取模拟参量,建立了模拟电路到数字电路的桥梁;数字电路到模拟电路:1.PWM;2.DAC;

2024-01-28 17:53:47 1563

原创 STM32——中断系统和外部中断EXTI

经过AFIO选择后的信号输入至EXTI,通过APB总线配置边沿触发选择和软件触发选择器,配置触发方式(上升沿,下降沿,全边沿,软件), 触发后进入或门(有1则为1),分为两路,一路和事件屏蔽信号组成一个与门(有0则0)组成事件响应,另一路置中断标志位并和中断屏蔽信号组成中断触发至NVIC;外部信号通过GPIO输入至AFIO,AFIO选择配置外部中断引脚后,输出给EXTI,EXTI通过边沿选择和控制输出给NVIC或触发其他外设工作,NVIC配置优先级经过仲裁后,CPU响应中断;

2024-01-28 15:16:13 1037

原创 STM32-——SPI

SPI是(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线;有多根通信线:SCK(Serial Clock串行时钟线),MOSI(Master Output Slave Input主机输出从机输入),MISO(Master Output Slave Input从机输出主机输入),SS(Slave Select片选);不同的芯片有不同的名字规定:例如MOSI,很多芯片会写成DI,MISO写成DO;SS写成CS,具体参考数据手册;同步全双工单端;

2024-01-15 20:46:34 1198

原创 STM32-W25Q64

参考数据手册;存储介质:Nor Flash和(双重SPI和四重SPI,MOSI用于发送,MISO用于与接收,MOSI和MISO同时兼具发送和接收的功能,一个时钟下同时发送俩位数据,四重SPI即一个时钟同时发送四位,WP和HOLD不需要时,可以充当数据传输引脚,四个数据同时收发,类似并行模式(串行为一位一位的发送)

2024-01-15 01:55:58 1833

原创 STM32——看门狗WDG

看门狗全称:WatchDog,简称WDG,本质作用是是自动复位电路;键寄存器本质是控制寄存器,用于控制硬件电路,,一般来说通过写入控制寄存器的某一位来实现对硬件电路的控制,但是在可能存在干扰的情况下键寄存器通过写入特定的数据来代替控制寄存器中的某一位的功能,降低了硬件电路受到干扰的概率;什么是WDG看门狗;看门狗在STM32内执行什么功能;看门狗的本质是什么;WDDG和WDG区别是什么;WDG程序框图,WDG执行逻辑是什么;WDG的结构与定时中断的区别;

2024-01-13 23:11:12 1217 1

原创 STM32系统架构及总线及启动过程介绍

1.2.1ICode总线(指令总线)将内核的指令总线与闪存指令接口相连接,指令预取在此总线上完成;

2023-12-03 22:28:55 1186 1

原创 STM32通用输入输出端口GPIO(IO口)

IO口:通用输入输出端口,通过软件控制其输入输出,STM32芯片的GPIO引脚与外部设备连接起来,从而可以实现与外部的通信,控制以及数据采集的功能;输出模式下,可控制端口输出高低电平,用于驱动LED,蜂鸣器,模拟通信协议输出时序等;当控制功率较大的设备可以加入驱动电路;输入模式下,可读取端口的高低电平或电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集,模块通信协议接收数据等;

2023-12-03 19:54:14 3964 2

原创 C语言数组

C语言嵌入式基础数组基本内容;

2023-12-02 20:58:20 826 1

原创 STM32时钟系统

对于单片机来说,时钟是具有周期性的脉冲信号,最常用的是占空比为50%的方波;时钟相当于单片机的心脏,想要使用单片机的外设,必须开启相应的时钟,驱动外设的本质是操作寄存器,而寄存器是由D触发器构成的,而触发器需要时钟才能改写值,所以要想操作寄存器必须开启对应外设的时钟;对于cpu来说,假设 cpu在一个时钟周期内执行一条指令(二进制代码),若时钟频率越高,而时钟等于1/f为频率的倒数,则时钟周期更短,在相同的时间内CPU可以执行更多的指令,CPU运行速度更快;时钟的走向及关系很重要;

2023-12-02 02:06:44 1064

原创 STM32介绍

下面会分享一整套stm32的入门到实战的一些知识和心得,持续更新

2023-11-30 22:19:36 1468

原创 C语言基础

C语言的数据类型

2023-11-30 05:20:37 813

原创 linux基础命令

n]G:将光标定位到第n行开始处 5G 将光标移动第5行开始处 G: 将光标定位到文件结束处 gg:将光标定位到文件开始处。输入命令的一部分,然后按TAB键,就会自动补全命令,如果有多个开头相同的命令,多按以此TAB,就会将所有输入开头命令提示。vi 文件名 (在vi编辑器中打开或者创建一个文件,并将光标置于第一行行首,+n打开存在文件,将光标置于第n行行首)rwxrwx:文件权限,三个为一组,分别代表用户,用户组,其他用户对文件的操作权限;cp 目录1 目录2 -a(将目录1复制到目录2中),-r;

2023-11-29 02:22:59 792 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除