- 博客(10)
- 资源 (2)
- 收藏
- 关注
原创 【从零开始的两轮自平衡车程序设计】04——控制算法之PID
姿态环只有PD,控制律中其实使用PD是最好的,因为不会导致系统升阶,但是D通常会有问题,因为如果通过俯仰角做差分,会把噪声放大,加滤波又带来延时,好在我们有陀螺仪。线性化后的状态方程可以这么写,如果不看转向环,即最后两个变量,那么这个状态方程的控制率设计为全状态反馈,通过配置好系数K,使得A-BKI的行列式全为负实数根,那么就收敛,这其实就是LQR是基础。除此之外,有个反直觉的事,速度环是正反馈,而不是负反馈,这也是由于单输入多输出系统的影响,速度的方程中,通过姿态产生抑制项,从而保证稳定。
2025-07-05 14:10:44
451
原创 【从零开始的两轮自平衡车程序设计】03——KEIL程序编写
c.卡尔曼滤波:这是从互补滤波的进一步,两个信息来源要组合,到底该多少系数合适,卡尔曼就是解决了这个问题,按照信息的方差的反比来设计比例,方差小的系数大,但是方差的多少是要由你来设定的,Q和R矩阵的大小。b.互补滤波:在a的基础上加上对陀螺数据的应用,俯仰角的变化速率是Gx,那么k时刻的俯仰角可以认为是k-1时刻的俯仰角加上Gx*T,但是陀螺也有缺陷,它的数据长期会漂移,就是它数据有零偏,这个零偏是随机游走的,而且积分后,这个零偏不像白噪声可以变成0,它会一直增大,所以不能完全使用陀螺数据。
2025-07-05 13:19:30
500
原创 【从零开始的两轮自平衡车程序设计】01
如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。如图的两轮小车,由硬件、软件、算法构成,硬件很多开源的,自己画也行,我是买的淘宝的,这样只需要写程序就行。无图无真相,第一步先传源码,后续再展开具体怎么实现,ch1就到这。6.直立环、速度环、转向环。8.PID/LQR/其他。1.STM32基础架构。5.MPU6050配置。9.TIM编码器功能。
2025-06-13 07:41:39
219
原创 关于温度滤波
采用18B20进行温度采样,最小分辨率1/16℃,然后计算温变速率用以进行数据补偿。 尝试了以下三种方法:温度取一分钟均值后,计算温变速率;利用TD计算;先差分求速率,然后低通滤波 结论:对速率进行低通滤波效果最好,代码最简单。 分析:真的很遗憾,第一次感受到了理论和工程实际的差距,TD的滤波效果是有限的,特别是输入的误差方差太大的时候,不如一个大的低通滤波来的平滑。其次,微分后应该滤波,因为微分导致高频信号赋值增大。
2023-03-03 17:16:30
859
原创 stm32cubeMX+HAL库+串口DMA+iap跳转+DCache
1.串口dma中断接收hal_uart_receive_it只能接收一次,要把他放在中断函数里才能连续接收,且while前要使用一次。dma的fifo能减少进入dma中断的时间,但是并不大。DCache会与dma冲突,导致数据在缓存里,dma读不到数,这是数据一致性的问题,可以解决,但是麻烦2.iap跳转通过串口接受到数据,数据写入内部flash,再执行跳转函数。注意bootloader程序的dma只能normal模式,否则跳转后卡死在dma中断程序里。通过右键文件属性可以看到生成的bin文件字
2021-10-26 11:10:16
803
1
原创 stm32cube,hal库来实现PS2手柄数据发送
stm32cube,hal库来实现PS2手柄数据发送很久前买了个PS2的手柄,如下,之前以前不会使用cube来配置工程,导致写程序很麻烦,对我这样的新手很不友好,看卖家提供的程序也很麻烦,拉高拉低的。现在接触了cube,决定用cube库来实现下,这样添加或者更改配置也方便。1.cube配置我使用的是STM32F103C8芯片,需要配置SPI,引脚随意,默认或者自己改都行,spi配置如下8位数据,LSB低位在前,分频依据时钟定,主要是波特率250k bits/s,时钟极性高,就是说平时是高,时钟相
2021-01-24 10:28:11
4094
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅