TuringUi系列(六)
TuringUi系列(六) **CzrTuringB:**记录一下TuringUi框架搭建过程中的学习心得和体会。 第一部分 C语言理解 第一章 代码规范 变量、结构体属性、函数形参采用首字母小写的驼峰命名; 函数、常量、枚举、结构体名称、文件名称、采用首字母大写的驼峰命名; C文件模板: 1234567891011121314151617/** *@ FileName: *@ Author: CzrTuringB *@ Brief: *@ Time: ${date} *@ Requirement: *@ Notes: *//* Includes" "------------------------------------------------------------------*//* Includes< >------------------------------------------------------------------*//*...
TuringUi系列(四)
TuringUi系列(四) **CzrTuringB:**在前几篇博客中,我们已经实现了基本元素的绘制和动画函数的编写,接下来我将着重讲解ui框架的实现构想和思路。 第一部分 TuringUi架构 第一章 文件目录 flowchart...
TuringUi系列(四)
TuringUi系列(四) **CzrTuringB:**在前几篇博客中,我们已经实现了基本元素的绘制和动画函数的编写,接下来我将着重讲解ui框架的实现构想和思路。 第一部分 TuringUi架构 第一章 文件目录 flowchart...
TuringUi系列(三)
TuringUi系列(三) **CzrTuringB:**在前一个博客我们实现了相关二维图像的绘制,在本博客我实现了三维空间的运动变换,并引入了半边数据结构实现了对圆柱、圆锥、六面体的绘制及其消隐算法,其理论上可以拓展至其他多面体。之后介绍了基于贝塞尔缓动动画的实现方法,并设计了几款动画在博客尾部进行展示。 第一部分 运动变换 第一章 坐标系定义 二维坐标系: 原点为屏幕左下角第一个像素 x轴横向 y轴纵向 三维坐标系: x轴与二维坐标系x轴平行 y轴与二维坐标系y轴平行 z轴垂直屏幕向外 原点任意 三维点数据结构: 12345//三维坐标点typedef struct{ float x, y, z;}Point3D; 第二章 正交投影 直接忽略深度信息,将三维坐标转换为二维坐标。 {x′=xc+x⋅scaley′=yc+y⋅scale\left\{ \begin{array}{l} x'=x_c+x\cdot scale\\ y'=y_c+y\cdot scale\\ \end{array}...
TuringUi系列(二)
TuringUi系列(二) 第一部分 前提 OLED像素屏幕是128×64的,因此创建了一个8×128的二维数组,数组中每个字节表示SSD1306一页中的某一列。 OLED显示可以配置为数据1有效和数据0有效,因此在绘制图形时需要考虑有效数据类型。 坐标系定义:坐标系原点为Oled左下角像素,向上为y轴,向右为x轴。 第二部分 相关元素的绘制 第一章 模拟灰度[1] 灰度阶(Gray Level)...
TuringUi系列(一)
TuringUi系列(一) **CzrturingB:**想要做一套OledUi框架,这个系列的部分内容是对大学学习期间笔记的整理,所以内容不是很完整。 主控为STM32F4系列 Oled驱动芯片为SSD1306 通信方式为IIC 嵌入式系统为FreeRTOS 项目路径:ChenZR0509/TuringUi: 自己搭建OledUi框架 **注意:**整个项目的函数都是我自己+ChatGpt写的,所以可能会存在未知bug,谨慎移植。 第一部分 IIC通信简述[1] 第一章 相关定义 IIC[Inter...
无感FOC电机驱动
无感FOC电机驱动 相关仿真模型地址:ChenZR0509/FOC-: 存放FOC驱动学习过程中用到的资料以及笔记 第一部分 扩展卡尔曼滤波算法 第一章 扩展卡尔曼滤波算法方程组 状态预测方程:x^n+1∣n=x^n∣n+f~nx^n∣n+B~nun状态预测方程:\hat{x}_{n+1|n}=\hat{x}_{n|n}+\widetilde{f}_n\hat{x}_{n|n}+\widetilde{B}_nu_n 状态预测方程:x^n+1∣n=x^n∣n+fnx^n∣n+Bnun 协方差预测方程:Pn+1∣n=A~nPn∣nA~nT+Q协方差预测方程:P_{n+1|n}=\widetilde{A}_nP_{n|n}\widetilde{A}_{n}^{T}+Q 协方差预测方程:Pn+1∣n=AnPn∣nAnT+Q 观测方程:zn=h(xn)观测方程:z_n=h\left( x_n...
扩展卡尔曼滤波
扩展卡尔曼滤波 卡尔曼滤波仅适用于线性系统,但是在大部分实际应用中控制对象往往是非线性系统,故而引入扩展卡尔曼滤波算法。 第一部分 数学基础 泰勒展开式: f(x)=f(x0)0!+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+⋯+f(n)(x0)n!(x−x0)n+Rn(x)f\left( x \right) =\frac{f\left( x_0 \right)}{0!}+\frac{f'\left( x_0 \right)}{1!}\left( x-x_0 \right) +\frac{f''\left( x_0 \right)}{2!}\left( x-x_0 \right) ^2+\cdots +\frac{f^{\left( n \right)}\left( x_0 \right)}{n!}\left( x-x_0 \right) ^n+R_n\left( x...
最小二乘法
最小二乘法 第一部分 最小二乘法LS 第一章 示例 已知:现有一组(x,y)数据,且已知曲线函数为:y=ax+b,根据数据拟合曲线获取a、b的参数值 x 1.6 1.7 2.0 y 1.2 1.4 1.8 定义一个评估值,此值越小则拟合效果越好: f(a,b)=∑i=0n[(axi+b)−yi]2f\left( a,b \right) =\sum_{i=0}^n{\left[ \left( ax_i+b \right) -y_i \right]...
卡尔曼滤波
卡尔曼滤波 第一部分 数学基础 第一章 概率论回顾 均值:即一组真实数据的平均值,其计算公式为: μˉ=1N∑i=1Nxi\bar{\mu}=\frac{1}{N}\sum_{i=1}^N{x_i} μˉ=N1i=1∑Nxi 期望:即一组测量数据的平均值,其并不等同于真实数据的均值,因为测量会引入误差:x~f(x) x∼f(x)⇒E(x)={1N∑i=1Nxi∑i=1∞xiPi→离散形式∫−∞+∞xf(x)dx→连续形式x\sim f\left( x \right) \Rightarrow E\left( x \right) =\left\{ \begin{array}{l} \frac{1}{N}\sum_{i=1}^N{x_i}\\ \sum_{i=1}^{\infty}{x_i}P_i\rightarrow \text{离散形式}\\ \int\limits_{-\infty}^{+\infty}{xf\left( x \right) dx}\rightarrow \text{连续形式}\\ \end{array} \right....