- 博客(18)
- 资源 (11)
- 收藏
- 关注
原创 将RT-Thread Nano移植到STM32F401CCU6
将RT-Thread Nano移植到STM32F401CCU6使用RT-Thread(后面简称RTT)是一次偶然的机会,之前并没有使用过嵌入式操作系统,一直使用前后台的方式实现单片机的程序处理,后来发现使用嵌入式操作系统真的很方便,尤其是在UI刷新和实时响应上有得天独厚的优势。当然,嵌入式操作系统有很多,秉承着支持国产的态度,我选择了RTT(其实RTT确实很厉害,在Keil中都可以直接下载其Nano版本),之所以这里讲关于Nano的移植,因为Nano非常小,虽然不支持一些Master版本的bsp外设,但是
2020-05-29 11:26:23 1285
原创 MATLAB写的三维魔方解算GUI 两种算法(Thistlethwaite算法和Kociemba算法)
大二的时候,没什么事情,打算用MATLAB做一个三阶魔方机器人,所以使用GUI做了个上位机,使用MATLAB编写的3阶魔方GUI,可以实现魔方状态设置(始末状态都可以设置),使用 patch 实现的魔方的旋转动画效果,可以调节旋转的速度,最开始打算用MATLAB实现解算算法的,但后来放弃了,主要是太难了,参考的两套算法都是用C#和C++实现的,而考虑到MATLAB运行机制的原因和算法的分析涉及的数学知识确实太高深了,因此我在这里提供了两个魔方解算的DLL,是两种不同的算法实现的三阶魔方的解算,其中 Koci
2020-05-21 15:54:38 2378 1
原创 MATLAB实用操作----GUI简单模板
MATLAB之GUI实用操作与GUI简单模板为了更好的呈现程序并提供一个更美观的人机交互界面,中途学习了GUI,当然,GUI不是什么高难度的东西,其实GUI仅仅是一个壳,用来承载我们的核心算法或者核心思想,但是,一个好看而实用的GUI确实看上去让人赏心悦目。因此,在这里分享一下我在GUI设计中,其中包含了一些你肯定想要实现的效果,当然这些效果的实现你在网上也能找到,不过零零散散,良莠不齐,我在这里直接提供经过检验的一些可行的方案。当然,本人学识浅薄,如有错误,敬请批评指正。完整工程下载GUI实质首先在
2020-05-16 21:37:15 1959 3
原创 使用扩展卡尔曼滤波(EKF)进行AHRS九轴姿态融合
使用扩展卡尔曼滤波(EKF)进行AHRS九轴姿态融合在做九轴姿态融合的过程中,这里介绍一种融合算法,基于EKF的九轴姿态融合算法:首先表明,该算法并非自己想到的,算法原理参考了这篇论文:Dale E. Schinstock的论文GPS-aided INS Solution for OpenPilot ,这篇论文真的写的非常棒,符号、公式很详细却并不啰嗦。程序实现其实就是将EKF算法搬移到单片机上了而已,同时这个程序也不是我写的,非常感谢第七实验室开放了这段代码以供开发者学习,当然仅供学习使用。我也就借
2020-05-15 09:09:40 11636 39
原创 AHRS基础知识(旋转矩阵(四元数)、向量叉乘、哥氏定理、四元数运算法则)
所有观点参见 秦永元 教授的**《惯性导航》书第6页**,书中的旋转矩阵为右乘矩阵(坐标变换时候,向量在旋转矩阵右侧,旋转矩阵在向量的左侧:b = R * a),旋转的顺序为先绕 Z轴 旋转,再绕 X轴 旋转,最后绕 Y轴 旋转。Matlab 符号计算与计算结果(与书中给出的一致):clear all;clc;syms cosF sinF cosT sinT cosR sinR;%% 东北天坐标系 (秦永元《惯性导航》 P6) % ① 绕 Z 轴旋转R角,Y->X 为正 (角度北偏东为正
2020-05-14 16:08:05 1721
原创 三维姿态显示上位机 C#+WPF+HID+Unity3D技术
三维姿态显示上位机 C#+WPF+HID+Unity3D技术在毕业设计中做了一个基于AHRS的设计,涉及了姿态融合算法,为了调试算法参数性能,需要用到姿态显示上位机用来显示验证算法的效果。在收集了很多资料后,决定自己做一个三维姿态显示上位机。由于本人学识浅薄,程序中可能有很多目前没有发现的BUG,如有纰漏,敬请指正。下面介绍一下我开发的大致方法:1、HID数据传输:在开发的过程中,采用无线传...
2020-05-05 14:05:11 6239
原创 STM32F4 32位定时器TIM2、TIM5的使用(附STM32F407----STM32F401的移植说明)
**STM32F4 32位定时器TIM2、TIM5的使用(附STM32F407----STM32F401的移植说明)**STM32F4是一款性价比极高的MCU,撇开强大的FPU(硬件浮点运算单元),单从定时器来讲,STM32F4比STM32F1多了两个32位定时器(TIM2、TIM5),而232=4.29∗1092^{32}=4.29*10^9232=4.29∗109,可以看到32位定时器可...
2020-04-30 08:40:40 14983 2
原创 音乐文件.kgm格式转.mp3格式WPF解决方案
音乐文件.kgm格式转.mp3格式WPF解决方案话不多说-先看效果制作背景关键技术UI控件属性与后台数据绑定支持文本框拖动方式获取文件夹路径控制台输出内容监听数据进度条流畅动画话不多说-先看效果工程链接鼠标拖动文件夹到灰色文本框即可取得文件路径,点击按钮也可以获得路径,获得的路径实时显示在灰色文本框。批量格式转换过程中能够实时显示成功转换多少、转换失败多少(99.9%都能转换成功,测试过几百个仅2个文件无法转码),以及转换完成的进度。制作背景缘起前几天为了给妹妹的MP3下载周董的150首歌,
2021-06-02 00:15:22 3265 2
原创 MATLAB实用操作----数值与符号计算
1、显示【分式显示】format rat【小数显示】format bank【正负号显示】format +【手写格式分式】pretty(varname)
2020-06-14 20:09:24 1440
原创 C# SharpGL初探 长方体贴图 背景色 刷新率 旋转(带贴纸的可旋转长方体)
SharpGL是对OpenGl的C#的封装,支持Net4.0及以上,由于SharpGL仅仅是对C++写的OpenGL做了接口的封装,所以SharpGL的运行效率不用多说,是非常高效的,不会说因为C#是即时性语言而导致性能下降很多,在测试中使用我的笔记本i57300HQ的CPU占用率仅仅0.1%,说明这东西确实运行很高效,虽然没有Unity那样的GPU渲染优化(Unity3D的美化与渲染真的很好),但是这样低的CPU占用率依然很诱人(使用Unity3D时CPU占用率在1.3%~1.6%左右,GPU占用率高,占
2020-05-19 10:11:29 2017
原创 三维姿态显示上位机 C# + SharpGL + HID
之前做了一个使用Unity3D作为三维显示的三维姿态显示上位机,在使用过程中偶尔会出现点小问题,当然呢,这个几率还是非常小的,就是Unity3D三维渲染引擎偶尔会崩溃,因此,我使用SharpGL再次做了这个三维姿态上位机(这个上位机来自于一个开源的x-IMU-AHRS的算法)。我只使用了其中的三维显示部分,毕竟OpenGL这东西太难了,要让我从0起步还是算了吧,因此,当然重写时还用到了dnSpy这个开源的并且很有用的反编译软件,特意看了IMUAPI.dll中关于四元数求旋转矩阵部分的代码,当然,看完后发现
2020-05-15 09:35:50 2614 3
原创 STM32F401 编码器电机实现位置PID控制
PID算法是控制中使用的最多并且最简单的一种控制算法,算法的核心就是不断计算当前值和目标值的误差,并根据误差来改变输入,最终达到目标值。废话不多说,一看代码就明白了:/**************************************************************************函数功能:位置式PID控制器入口参数:编码器测量位置信息,目标位置返回 值:电机PWM根据位置式离散PID公式 pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1
2020-05-15 08:42:47 3502 1
原创 STM32F103C8T6 16位定时器级联为32位定时器
为什么使用STM32F1定时器的级联,主要是因为某些对于计时要求高的场合,而STM32F1单片机16位的定时器最多计数65535,那么很明显us级别的计时只能维持6.5535ms,有时候解算过程可能不止6.5535ms,因此需要级联一个32位定时器作为计数器或者计时器。那么,在使用SMT32F1的定时器级联前,首先需要知道哪些可以级联以及定时器Master(主)Slave(从)关系,可以参见这篇...
2020-05-07 16:23:19 5164 2
原创 STM32F401 定时器做编码器使用 采集电机旋转速度、旋转方向
定时器做编码器STM32F401的所有定时器都可以作为编码器使用(STM32F401在某宝20RMB以内买到的,晶振不同,不知道怎么操作的看我上一篇博文,里面有介绍怎么移植,经过本人验证,目前没有任何问题)下面步入正题:TIMER都可以作为编码器采集通道,但是需要十分注意的是:定时器只有通道1和通道2可以作为编码器使用,当采用编码器的2个通道后,剩余的2个通道一般而言就没什么用了,当然,对...
2020-05-01 22:10:15 2942 1
原创 以TSP问题为例谈对遗传算法的理解【MATLAB】
以 TSP 问题为例谈对 遗传算法 GA 的理解【MATLAB代码】遗传算法,顾名思义,是一种仿生学算法,原理就是中学学过的达尔文定律。用8个字概括就是:物竞天择,适者生存。根据我的亲身体验,刚接触智能算法的时候总是想刨根问底,实际上这是没有很大意义的,需要的是先对整个算法的大框架了解并理解就行了。实现遗传算法,举一个通俗易懂的例子,就相当于是袁隆平爷爷做杂交水稻实验一样,需要先建立一个...
2020-04-04 12:58:24 796
原创 快速排序原理 C# 递归
快速排序原理 C快速排序是一种二分法排序方法,实际上理论上真正最快的排序方法是黄金分割法,但是这在计算机上是很难实现的,因此快速排序也算是兼顾了速度与占用内存的一种较好的排序方式:快速排序的实现步骤大概如下:【假设我们需要将一个数组按照从小到大的顺序排列】1、选最左侧的数作为一个基准数,并从左–>右 和 从右–>左 分别寻找比基准数大 和 比基准数小的数,一定是先从右边先找,这...
2020-04-02 16:06:59 413
原创 图论算法之Floyd算法【寻找有向图中任意两点间的最短路径 C#实现】
图论算法之Floyd算法【寻找有向图中任意两点间的最短路径 C#实现】Folyd 算法被称为图论算法中最优美的算法,其核心代码只有 5 行,相比与 Dijkstra 算法,获取有向图中任意两点之间的距离的时间复杂度一样,都为O(N^3),其思想类似于贪心算法,有强有力的数学理论:Dis[a,b] = Dis[a,c] + Dis[c,b] < Dis[a,b] ? Dis[a,c] + ...
2020-04-02 13:12:12 1376
原创 图论算法之Dijkstra算法【寻找无负权值有向图中一点到其余点的最短路径 C#实现】
图论算法之Dijkstra算法【寻找无负权值有向图中一点到其余点的最短路径 C#实现】Dijkstra算法是图论算法中十分重要的一种算法,其算法思想可以理解为以下两个步骤:摸着石头过河 :探索一次后更新一次,不断探索,直到探索完所有点,就可以得到向量的加法原则 :如果发现 AB + BC 的模值小于 AC 的模,虽然都是从 A 到 C ,但是走得距离更短,则认为 B 可以作为跳板,就...
2020-04-01 16:46:44 418
STM32F401_RTT移植.zip
2020-05-29
两种算法工程文件.zip
2020-05-21
MATLAB三维魔方GUI.zip
2020-05-21
SharpGL安装包.zip
2020-05-19
SharpGLWPFApplication1.zip
2020-05-19
程序_A题_Matlab2014A.zip
2020-05-16
STM32F401_位置PID.zip
2020-05-15
CubeAttitudeShow.zip
2020-05-05
MATLAB下使用遗传算法解决TSP问题.zip
2020-04-04
Floyd算法.zip
2020-04-02
Dijkstra最短路径C#.zip
2020-04-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人