- 博客(97)
- 资源 (9)
- 收藏
- 关注
原创 【VxWorks 实时操作系统(RTOS)】常用函数汇总
VxWorks 实时操作系统(RTOS)中的核心函数 taskSpawn 和 semMCreate 分别用于任务创建和互斥资源管理。taskSpawn 动态创建并激活新任务,支持优先级调度和多种任务选项,如浮点运算和栈溢出检测。semMCreate 创建互斥信号量,确保多任务间资源的互斥访问,支持优先级继承以防止优先级反转
2025-05-21 21:51:52
862
原创 计算机存储与数据单位的核心定义及换算逻辑
本文介绍了计算机存储与数据单位的核心定义及换算逻辑,并结合嵌入式系统(如FreeRTOS)的实际应用场景进行解释。核心单位包括Bit、Byte、字和双字,其换算关系因CPU架构而异。例如,32位CPU中1字=4字节,1双字=8字节。在FreeRTOS中,堆栈大小以字为单位,需根据CPU字长换算实际内存。常见误区包括字长混淆和单位缩写混淆。总结中强调了嵌入式开发的核心公式和关键步骤,并提供了速记口诀以帮助记忆。
2025-05-19 21:19:35
276
原创 在单片机中对采集的ADC值进行补偿
使用两个点求线性方程的斜率和截距的方法是线性回归的一种简化形式,也称为最小二乘法。因此,更常见的方法是使用所有可用的数据点进行线性回归分析,而不是仅使用两个点来计算斜率和截距。在这个简化的代码中,我们使用两个已知的点(x1, y1)和(x2, y2)来计算线性方程的斜率和截距,然后使用该线性方程对测量值进行校准补偿。在单片机中,对采集的ADC(模数转换器)进行补偿的方法有很多种,具体取决于你的应用需求和ADC的特性。在进行补偿时,最重要的是要理解你的ADC的特性和限制,以及你的应用的需求。
2024-01-03 07:00:00
2332
原创 C语言——全局变量在多个.c文件中共用
的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。全局变量可以定义在一个.c文件中,变量存储在静态存储区,变量可以被其他文件中的函数使用,变量的作用范围是。当定义了全局变量的时候,在其他.c文件中使用的时候需要。”的形式,编译器需要给他分配内存单元的;是来自来自外部的外部变量;变量定义和变量声明的区别,
2023-02-03 10:15:19
4917
原创 C语言——读写TXT文件中的(多行多列矩阵型)浮点型数据的两种方式
但是很多时候,我们对于空间的需求上面的两种情况是满足不了的,有的时候我们需要的内存大小要程序运行之后才能知道,或者说有时候数组大小空间不够了,那么数组编译时开辟的内存空间的方式就不可行了,这个时候就需要动态内存开辟了。关于malloc所开辟空间类型:malloc只开辟空间,不进行类型检查,只是在使用的时候进行类型的强转。在使用malloc函数之前我们一定要计算字节数,malloc开辟的是用户所需求的字节数大小的空间。上的,而我们使用的局部变量和函数的形参是在。:数组太大,栈空间不够用导致栈溢出!
2023-02-02 18:47:58
7110
原创 Kalman滤波中状态方程初始化参数设置
这个矩阵是卡尔曼滤波中比较难确定的一个量,一般有两种思路:一是在某些稳定的过程可以假定它是固定的矩阵,通过寻找最优的Q值使滤波器获得更好的性能,这是调整滤波器参数的主要手段,Q一般是对角阵,且对角线上的值很小,便于快速收敛;对于可观测性较强的状态分量,对应的状态初值和均方误差阵设置偏差容许适当大些,它们随着滤波更新将会快速收敛,如果均方误差阵设置太小,则会使收敛速度变慢。:表示状态转移矩阵,是n×n阶方阵,它是算法对状态变量进行预测的依据,状态转移矩阵如果不符合目标模型有可能导致滤波发散。
2023-01-31 06:00:00
4449
原创 低成本MEMS INS系统 + GNSS组合导航序贯滤波MATLAB仿真
对于标准Kalman滤波,其中增益计算式涉及矩阵的求逆运算,当量测维数较高时,计算量很大。序贯滤波(sequential Kalman filter)是一种将高维数量测更新降低为多个低维数量测更新的方法,能有效地降低矩阵的求逆计算量。其中,量测更新过程分为N次的迭代更新,最终使得。
2023-01-12 14:38:03
1042
原创 低成本MEMS INS系统 + GNSS组合导航MATLAB仿真
【代码】低成本MEMS INS系统 + GNSS组合导航MATLAB仿真。
2023-01-12 13:44:08
4036
5
原创 低成本MEMS惯导系统的捷联惯导解算MATLAB仿真
之前将高成本的捷联惯导忽略地球自转、圆锥曲线运动以及划桨运动等化简为可适用低成本的捷联惯导MATLAB程序,但是其中的子程序都是用的严老师的代码,想自己锻炼一下自己的代码能力,所以对低成本的捷联惯导进行重新编写!!
2023-01-12 10:37:22
3523
8
原创 高、低成本MEMS惯导系统姿态、位置、速度更新算法的对比
姿态更新求解方法是,先使用陀螺角增量的多子样采样计算等效旋转矢量,补偿转动不可交换误差,再使用等效旋转矢量计算姿态更新四元数。选取“东–北–天(E–N–U)”地理坐标系作为捷联惯导系统的导航参考坐标系,后面记为n系,则以 系作为参考系的姿态微分方程为。矩阵表示以i系作为参考基准,b系从m-1时刻到m时刻的旋转变化,表示以i系作为参考基准,n系从m-1时刻到m时刻的旋转变化,)进行了两次等间隔采样,角增量分别为。,以及惯导系统在地球表面附近移动。
2023-01-05 15:41:34
3615
1
原创 slambook2(ch2)—— Ubuntu20.04 使用cmake + make自动化编译过程
(比如上次使用make生成了文件a,文件b,文件c,这次使用make命令只需要生成文件a和文件b,并且文件a有所变化。那么这次生成的文件a会覆盖上次的文件a;上次生成的文件b保持不动,这次不需要再费劲生成一遍了;而上次生成的文件c也保持不动,尽管这次不需要文件c)make命令可以让新生成的去覆盖旧的,但是有一些上次生成了这次不需要生成他的文件,就没法删除了。所以才需要make clean一下,删除所有被make创建的文件。因为,如果makefile的内容不会改变时,就不需要经过。
2022-11-25 20:29:07
974
原创 解决:将Ubuntu系统打包成ios镜像并制作U盘系统
Systemback的作者在2016年停止了开发,因此Ubuntu 18.04和18.10不在支持列表中。系统上安装Systemback的方法。
2022-11-16 18:47:49
5419
原创 解决:terminate called after throwing an instance of ‘cv::Exception‘......Incorrect indentation‘
本来还以为是系统问题,但是重新装完系统搭环境过后发现并不是,白白浪费一晚上时间,这不重要但是把自己的心态搞炸了,对自己产生了深深的怀疑,否定了自己前期的工作,也是自己太想成功了,而且今天运气是差极了迫不得已去签一个不想去的offer,去找书记签字去了4次都不在,自主实验也没有验证,程序也是各种出错电脑也关机不得终止实验,还收到一个非常想去的公司的拒绝,人生呀!太难受了!好在在凌晨两点半迎来转机。。。。
2022-11-15 02:31:10
2956
1
原创 Ubuntu 18.04 ———Jetson nano +Intel RealSense D435i + 标定 + 运行VINS-Fusion(2022年)
英伟达官方为Jetson Nano提供了SD卡版本的系统镜像,并且一直在更新和维护,该镜像中包含对应的Ubuntu系统以及配置好的cuda环境和opencv环境,因此只需要下载和安装该镜像即可完成Jetson Nano的大部分环境配置。连接外设(鼠标、键盘、显示器)并启动,这里如果我们要进行屏幕显示的启动,除了连接的HDMI显示器,鼠标和键盘也是必须要连接的,在Jetson Nano 2GB Developer Kit里面有描述。问题:rosdep update错误解决。解决:镜像版本太高,降低版本!
2022-10-19 13:19:51
3347
2
原创 【一起来学C++】————(11)STL之vector容器容器
迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T*。因此迭代器失效,实际就是。,删完之后pos刚好是end的位置,而end位置是没有元素的,那么pos就失效了。因此删除vector中任意位置上元素时,vs就认为该位置迭代器失效了。erase删除pos位置元素后,pos位置之后的元素会往前搬移,没有导致底层空间的改变,理论上讲迭代器不应该会失效,但是:如果。支持随机访问的迭代器。
2022-08-20 20:46:37
674
原创 【一起来学C++】————(9)STL入门
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数学习目标:vector中存放自定义数据类型,并打印输出。...
2022-08-16 16:16:18
441
原创 【一起来学C++】————(7)多态
多态是C++面向对象三大特性之一,多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。public ://Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数, //那么编译器在编译的时候就不能确定函数调用了。cout ...
2022-08-11 11:31:15
302
原创 【一起来学C++】————(6)C++中的继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码class A :public BA 类称为子类。...
2022-08-11 11:30:44
224
原创 【一起来学C++】————(8)模板
比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然。在上述代码中,如果T的数据类型传入的是像Person这样的自定义数据类型,也无法正常运行。因此C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板。,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供。在上述代码中提供的赋值操作,如果传入的a和b是一个数组,就无法实现了。后产生一份专门处理double类型的代码,对于字符类型也是如此。不会发生隐式类型转换。.
2022-08-11 11:30:03
145
1
原创 【一起来学C++】————(5)内存管理(上)
【一起来学C++】————(5)内存管理(上)C/C++内存分布C语言中动态内存管理方式C++内存管理方式new和delete操作自定义类型new和delete的实现原理内置类型自定义类型operator new与operator delete函数:内存泄漏的分类:堆内存泄漏(Heap leak)系统资源泄漏C/C++内存分布我们先来看下面的一段代码和相关问题int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static
2022-08-01 20:00:29
320
原创 【一起来学C++】————(4)类与对象(下)
再谈构造函数初始化列表例如:class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year; int _month; int _day;};虽然上面的构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因
2022-07-31 22:08:09
432
原创 【一起来学C++】————(3)类与对象(中)
【一起来学C++】————(3)类与对象(中)1. 类的6个默认成员函数2. 构造函数概念特性3. 析构函数概念特性4. 拷贝构造函数5. 赋值操作符重载6. 默认拷贝构造与赋值运算符重载的问题7. const成员函数8. 取地址及const取地址操作符重载1. 类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。class Date {};2. 构造函数概念构造函数是一个特殊的成员函数,1
2022-07-29 19:49:47
287
原创 【一起来学C++】————(2)类与对象(上)
这里写目录标题一、面向过程和面向对象初步认识二、类的引入三、类的定义1、类的两种定义方式方式一方式二四、类的访问限定符及封装访问限定符封装五、类的作用域六、类的实例化七、类对象模型计算类对象的大小结构体内存对齐规则八、this指针this指针的特性一、面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。二、类的引入C语言中,结构体中只能定义变量,在C++中
2022-07-27 20:03:02
392
原创 【一起来用C++】————(1)类的练习案例(多文件编写)
设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。分别用全局函数和成员函数判断两个立方体是否相等。设计立方体类(Cube)求出立方体的面积和体积。
2022-07-27 19:01:10
492
原创 【一起来学C++】————(1)入门
什么是C++C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产.
2022-07-27 06:00:00
210
1
原创 slambook2(ch7)—— orb_cv.cpp代码详解(ORB特征提取与匹配)
2. 图片输入确保图像个数为2: imread函数imread函数原型非常简单,可以总结为三点3. 初始化 vector Ptr detector = ORB::create();4. 第一步:检测 Oriented FAST 角点位置使用detect方法,将其存入Keypoints变量中 时间工具chrono举例:通过 clock 类别所提供的 now() 这个函数,可以快速地取得现在的时间;而两者相减的话,则会产生一个型别为 durat
2022-06-03 06:00:00
2144
1
原创 解决:旧电脑装Ubuntu系统
https://www.ventoy.net/cn/download.html下载到可以使用的电脑并进行安装,制作系统U盘。https://ubuntu.com/download/alternative-downloads将下载的系统的镜像放到制作的系统的U盘中。
2022-06-01 18:28:26
2732
1
原创 Ubuntu 18.04 ———(Intel RealSense D435i)标定后结果用于VINS-Fusion
相机系统校准(camchain.yaml)此文件存储相机固有和外在参数的校准,以及IMU相对于相机的空间和时间校准参数。每个摄像机都有以下参数:camera_model相机投影类型(针孔/全向)包含给定投影类型的固有参数的内联向量。元素如下: 针孔:[fu fv pu pv]omni: [xi fu fv pu pv]ds: [xi alpha fu fv pu pv]eucm: [alpha beta fu fv pu pv]有关详细信息,请参阅支持的模型distortion_mo
2022-05-28 06:00:00
5537
13
原创 Ubuntu 18.04 ———(Intel RealSense D435i)安装kalibr + 双目视觉与IMU标定(2022年)
下载编译code_utils创建ros工作空间,用于code_utils以及后面的imu_utils,工作空间名和路径可以自己更改,code_utils和imu_utils都是imu标定需要用到的,用于标定imu噪声密度以及随机游走系数mkdir -p ~/imu_catkin_ws/srccd ~/imu_catkin_ws/srccatkin_init_workspacecd ..catkin_makesource ~/imu_catkin_ws/devel/setup.bash下载编
2022-05-25 00:00:00
4579
20
原创 Leetcode刷题 ——— (4)字符串中的第一个唯一字符
文章目录💎一、题目🏆1.题目描述🏆2.原题链接💎二、解题报告🏆1.思路分析🏆2.代码详解💎一、题目🏆1.题目描述字符串中的第一个唯一字符给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。示例 1:输入: s = “leetcode” 输出: 0示例 2:输入: s = “loveleetcode” 输出: 2示例 3:输入: s = “aabb” 输出: -1提示:1 <= s.length <= 105 s 只包含小.
2022-05-24 17:06:25
108
原创 Leetcode刷题 ——— (3)字符串相加
文章目录💎一、题目🏆1.题目描述🏆2.原题链接💎二、解题报告🏆1.思路分析🏆2.代码详解🏆3.按步骤分析💎一、题目🏆1.题目描述给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。示例 1:输入:num1 = “11”, num2 = “123” 输出:“134”示例 2:输入:num1 = “456”, num2 = “77” 输出:
2022-05-23 01:00:00
104
原创 Ubuntu 18.04 ———(Intel RealSense D435i)运行VINS-Mono
Intel RealSense D435i一、准备工作二、修改参数rs_camera.launchrealsense_color_config.yaml一、准备工作1、Intel Realsense D435i、Ubuntu 18.042、已经安装好Realsense驱动3、已经安装好VINS-Mono并且能运行数据集二、修改参数rs_camera.launch修改部分参数【rs_camera.launch】;第一处,修改unite_imu_method如下,这里是让IMU的角速度和加速
2022-05-18 06:00:00
2109
原创 Ubuntu 18.04 ———(Intel RealSense D435i)安装相机的驱动librealsense + realsense-ros
Intel (英特尔) RealSense D435i安装测试librealsense SDK 2.0librealsense SDK相当于相机的驱动,SR300和ZR300的支持驱动是librealsense SDK 1.0,而D435i是librealsense SDK 2.0——————官方安装教程Intel® RealSense™ SDK 2.0注册公匙sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCD
2022-05-17 05:00:00
11052
7
原创 Leetcode刷题 ——— (2)把字符串转换成整数
把字符串转换成整数💎一、题目🏆1.题目描述🏆2.原题链接💎二、解题报告🏆1.思路分析🏆2.代码详解🏆3.按步骤分析💎一、题目🏆1.题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0数据范围:字符串长度满足0≤n≤100进阶:空间复杂度 O(1) ,时间复杂度 O(n)注意:①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0②字符串中可能出现 +/- 且仅可能出现在字符串首位。输入描述:
2022-05-12 06:00:00
144
原创 Leetcode刷题 ——— (1)仅仅反转字母
仅仅反转字母💎一、题目🏆1.题目描述🏆2.原题链接💎二、解题报告🏆1.思路分析🏆2.代码详解🏆3.按步骤分析💎一、题目🏆1.题目描述给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。 所有英文字母(小写或大写)位置反转。 返回反转后的 s 。示例 1:输入:s = “ab-cd”输出:“dc-ba”示例 2:输入:s = “a-bC-dEf-ghIj”输出:“j-Ih-gfE-dCba”示例 3:输入:s = “Test1ng-Leet=code-Q!”
2022-05-11 06:00:00
340
简化版捷联惯导+ C语言编写(仿照西工大严老师MATLAB程序编写)
2023-01-31
低成本MEMS INS系统 + GNSS组合导航序贯滤波-C语言程序(采用malloc动态分配内存空间)
2023-02-02
低成本MEMS INS系统 + GNSS组合导航序贯滤波-C语言程序
2023-02-02
序贯滤波(sequential Kalman filter)+ MATLAB程序(简化版sins与gnss融合)
2023-01-12
sins + gnss 组合导航算法Matlab仿真
2023-01-06
低成本MEMS惯导系统姿态、位置、速度更新算法的对比
2023-01-05
rs_imu_stereo.launch
2022-05-27
Ubuntu 18.04 ———(Intel RealSense D435i)运行VINS-Mono
2022-05-17
C语言带登录猜数字小游戏
2020-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人