- 博客(143)
- 资源 (3550)
- 收藏
- 关注
原创 平衡小车的卡尔曼滤波算法总结
X(k|k)= X(k|k-1)+Kg(k) (Z(k) - H X(k|k-1)) ……X(k|k)= X(k|k-1)+Kg(k) (Z(k) - H X(k|k-1)) ……X(k|k-1)为2维列向量,A为2维方阵,X(k-1|k-1)为2维列向量,B 为2维列向量,U(k) 为Gyro。Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……(2)//协方差矩阵的预测。
2025-03-31 07:45:00
289
原创 卡尔曼滤波的解释
可以看出, 因为温度计的 covariance (协方差)比较小(比较相信温度计), 所以估算出的最优温度值偏向温度计的值。度温度值的偏差, 得出的 2.35 就是进入 k+1 时刻以后 k 时刻估算出的最优温度值的偏差(对应于上面的 3)。高斯噪声的偏差是 5 度( 5 是这样得到的:如果 k-1 时刻估算出的最优温度值的偏差是 3,你对自己预测的。你相信温度是恒定的,所以你会得到 k 时刻的温度预测值是跟 k-1 时刻一样的,假设是 23 度,同时该值的。假如我们要估算 k 时刻的是实际温度值。
2025-03-30 11:59:53
247
原创 卡尔曼滤波算法及C语言实现
要估计K时刻的实际温度值,首先要根据K-1时刻的温度值预测K时刻的温度,按照之前我们讨论的,若k-1时刻的温度值是,那么预测此时的,假如该值的噪声是,5°是这样得到的,若果k-1时刻估算出的最优温度值的噪声是,预测的噪声是,所以总体的噪声为。本文通过对kalman filter algorithm的深入探讨,对kalman filter有了更深刻的认识,理解了核心的5条公式的物理意义,以及kalman filter的思想,并通过理解算法编程实践,验证了kalman filter在数据处理方面的优良性能。
2025-03-30 11:58:38
445
原创 卡尔曼滤波算法及C语言代码
卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟 k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。
2025-03-30 11:57:38
449
原创 # GPS辅助惯性导航系统技术详解
在现代导航领域,如何实现高精度的位置跟踪和姿态估计一直是一个重要课题。本文将详细介绍一种基于直接配置的GPS辅助惯性导航系统(GPS-aided INS)的实现方案,该方案通过扩展卡尔曼滤波器(EKF)实现了高频率且无漂移的导航定位功能。
2025-03-13 07:00:00
260
原创 IMU和GPS数据融合的扩展卡尔曼滤波器实现
本文介绍一个基于扩展卡尔曼滤波器(EKF)的IMU和GPS数据融合算法实现。该算法可以将IMU的高频惯性数据和GPS的低频但精确的位置数据进行融合,得到更加准确的位置估计。使用lla2enu函数将GPS的经纬度坐标转换为ENU(东北天)坐标系。IMU和GPS数据融合的扩展卡尔曼滤波器实现。通过状态转移方程更新状态向量。估计姿态、位置、速度等状态量。计算状态转移雅可比矩阵F。更新状态向量和协方差矩阵。加速度计偏置(3个)计算噪声雅可比矩阵G。计算测量雅可比矩阵H。
2025-03-10 05:45:00
343
原创 编译与链接
使用高级语言编写程序时,需要将程序的内容存储在特定的文件中,这类文件称为程序的源文件,而程序的内容称为程序的源代码。程序由源代码变成计算机可执行的二进制程序,这个过程称为程序的翻译。程序的翻译过程又包括由高级语言到汇编语言、由汇编语言到可执行程序的过程,其中由高级语言到汇编语言的过程属于编译过程,而由汇编语言到可执行程序的过程属于链接过程。高级语言经过翻译后生成的可执行程序一般称为目标程序。
2025-01-18 08:19:56
80
原创 C++实现的简单哈希表为什么比Java慢:代码或基准测试问题?
为了尽量减少Java的GC与非GC C++之间的性能差异,我们使用无限制大小的空闲列表,只在析构函数中删除:如果remove()找到匹配项,它会将节点从存储桶的链接列表移动到空闲列表的头部。我们的基准测试比较了Java中简单小型哈希表(map)的实现与C++中逐行等效的实现。Bench类还将每次添加到C++中的一个std::map或Java中采用类似设计的自定义哈希map(负载因子远低于1)中,这在计时区域外,但第一次运行需要进行一些分配,因此在为正在进行基准测试的哈希表分配节点之间会发生这种情况。
2024-12-26 22:51:22
379
原创 在 qsort 中使用 longjmp 是否合适?
然而,许多开发者在使用 qsort 时可能会遇到一些特殊情况,想要在排序过程中中断 qsort 的执行。为了避免潜在的资源泄漏、死锁或其他不一致的状态,建议避免在 qsort 中使用 longjmp,并考虑实现自己的排序算法。这表明,qsort 函数本身并不保证是可重入的,也就是说,如果在比较函数中调用了 longjmp,程序可能会面临不可预知的结果。如果你的程序确实需要在排序过程中中断操作,最安全的做法是避免使用标准库的 qsort,而是编写一个自定义的排序函数,这样可以更好地控制排序过程中的所有细节。
2024-12-25 23:16:02
405
原创 Notes on Convolutional Neural Networks
在MATLAB中实现CNN时,主要的计算瓶颈包括在前向传播中对卷积层输出图的下采样,以及在反向传播中对较高子采样层的delta进行上采样以匹配较低卷积层的输出图大小。在典型的卷积神经网络中,早期分析包括交替的卷积和子采样操作,而架构的最后阶段由通用的多层网络组成。当将最终的二维特征图作为输入传递给全连接的1维网络时,通常会将所有输出图中的特征拼接成一个长输入向量,然后应用标准的反向传播算法。卷积层的前一层特征图与可学习的核进行卷积,并通过激活函数形成输出特征图。每个输出图可能结合多个输入图的卷积。
2024-12-14 23:23:44
594
原创 反向传播算法的原理与应用
具体公式为δL-1=((wL)TδL)⊙σ’(zL-1),其中(wL)T是权重矩阵的转置,σ’(zL-1)是前一层激活函数的导数。反向传播算法是神经网络训练的核心,它通过链式法则高效地计算梯度,并通过逐层反向传播来更新网络参数。具体来说,δL=▽aC⊙σ’(zL),其中▽aC是代价函数关于输出激活值的梯度,σ’(zL)是激活函数在zL处的导数。这通常通过梯度下降算法来完成,即w→w-η▽wC,b→b-η▽bC,其中η是学习率,▽wC和▽bC分别是权重和偏置的梯度。本文将介绍反向传播算法的基本原理和应用。
2024-12-14 23:20:46
315
原创 通过四元数求机器人本体坐标旋转量
是的,通过两次姿态数据(以四元数表示)的差值,可以确定机器人在两个时刻之间的旋转角度变化。通过以上计算,你可以得到机器人在两个时刻之间的旋转角度和旋转轴。最后,从 ( q_{\Delta} ) 提取旋转轴和旋转角度。
2024-10-24 15:21:21
696
原创 【Transformer】Selective Attention Improves Transformer
无关元素在注意力机制中的存在会降低模型性能。论文提出了一种无需额外参数的简单调整方法,即选择性注意力,通过减少对无关元素的关注来提高性能。在各种模型规模和上下文长度的情况下,选择性注意力在语言建模任务上表现出显著优势。例如,使用选择性注意力的Transformer在相同验证困惑度下所需的内存和计算资源显著减少。
2024-10-11 11:54:51
356
原创 【水下目标跟踪】WebUOT-1M Advancing Deep Underwater Object Tracking with A Million-Scale Benchmark
这篇文章主要讨论了一个新提出的用于水下视觉目标跟踪 (Underwater Visual Object Tracking, UVOT) 的数据集和图像增强方法。
2024-10-09 12:09:57
309
原创 【水下目标跟踪】Improving Underwater Visual Tracking With a Large Scale Dataset and Image Enhancement
这篇文章主要讨论了一个新提出的用于水下视觉目标跟踪 (Underwater Visual Object Tracking, UVOT) 的数据集和图像增强方法。
2024-10-09 12:08:18
469
原创 为什么Visual Studio 2022中的断点在升级到.NET 8.0后未命中
最近我把一个ASP.NET Core 项目升级到了 .NET 8.0,并尝试添加一个Blazor WASM(WebAssembly)项目。按照指示将Blazor WASM项目从一个捐赠项目复制到现有的ASP.NET Core项目中。项目结构如下:ASP.NET Core项目(MyApp)托管 Blazor WASM项目(MyApp.Client)。Client项目包含用于断点调试的页面。所有功能正常,除了在Visual Studio 2022中调试Client应用程序。
2024-08-18 10:07:15
694
原创 在 Qt 中实现 GIF 动画显示
在 Qt 中实现 GIF 动画显示非常简单,只需利用QMovie和QLabel类。对于和,可以通过来嵌入QLabel,以此实现 GIF 动画在场景中的显示。此外,确保 GIF 插件的存在也是解决动画无法加载问题的关键。希望本文能帮助您在 Qt 项目中更好地实现 GIF 动画效果。如果遇到任何问题,欢迎随时交流与反馈。
2024-08-07 11:25:05
1026
原创 如何在QT中获取对象的类名
最近在编写一个测试应用程序,该应用程序用于模拟另一应用程序的按键操作。每次按键操作时,我需要确认显示的是正确的窗口或表单。因此,我获取当前显示窗口的指针并检查它的窗口标题。然而,并不是所有的窗口或表单都有窗口标题。那么,我该如何获取对象的类名呢?,这是继承类的名称而不是派生类的名称。解决这一问题的方法是确保你的派生类中包含。通过这种方式,你可以在测试应用程序中有效地确认显示的是正确的窗口或表单。在Qt中获取对象类名的最佳方法是使用。这段代码可以成功获取窗口对象的类名。宏,这样Qt才能识别派生类的名称。
2024-07-30 09:33:25
550
原创 在 Qt 中获取 MouseMove 事件
在MainWindow类中定义并实现方法。(event);通过事件过滤器可以实现应用程序窗口内的鼠标移动状态更新,而通过捕捉鼠标或定时轮询的方法可以实现更广泛的鼠标位置追踪。根据具体需求选择合适的方法,以实现最佳效果。
2024-07-24 16:09:30
830
原创 ## QString 优于 std::string 的优势
std::string 只是按字节存储数据,并不知道编码信息。例如,Qt 中的许多函数都接受 QString 作为参数,而直接使用 std::string 会导致不必要的类型转换。:虽然 std::string 可以存储 UTF-8 编码的字符串,但由于 std::string 本质上是一个字节容器,不能正确处理多字节字符(例如,std::string 的。:如果你希望代码独立于特定框架,那么使用标准库的 std::string 和 std::wstring 可能会更好。方法返回的是字节数而不是字符数)。
2024-07-19 14:43:26
554
原创 什么是 qobject_cast?
在 C++ 中,类型转换是一项常见的操作,比如将int转换为char或将QString用于。但是,为什么我们需要将一个类转换为另一个类呢?本文将解释是什么,它的作用以及为什么需要类型转换。
2024-07-04 22:16:49
798
原创 运行时类型信息(RTTI)
在C++中,RTTI可以通过运算符进行安全的类型转换,并可以通过typeid运算符和类在运行时操作类型信息。在Object Pascal中,RTTI可以通过as运算符进行安全的类型转换,使用is等类)。在Ada中,带标签的类型对象也存储类型标签,这允许在运行时识别这些对象的类型。in运算符可以在运行时测试对象是否属于特定类型并安全地转换。RTTI仅适用于多态类,即包含至少一个虚方法的类。在实践中,这并不构成限制,因为基类必须具有虚析构函数,以便从基类指针删除派生类对象时可以执行正确的清理操作。
2024-07-02 11:32:21
845
原创 Qt Creator 的设置文件保存位置
在使用 Qt Creator 进行开发时,备份或迁移设置(例如文本编辑器偏好、语法高亮等)是常见需求。了解这些设置文件在不同操作系统中的保存位置,可以简化这个过程。本文将为您详细介绍 Qt Creator 保存设置文件的位置。
2024-06-30 10:00:00
1017
原创 如何将 qmake 转换为 cmake?
在之前的项目中我使用了.pro文件来配置 qmake,但现在我希望将其转换为文件。以下是具体的步骤和转换方法。
2024-06-30 08:45:00
1476
原创 如何在 QTableView 中选择行
我是一名 QT 新手,正在使用 QTableView,如下图所示:(处于保密原因,图像内容省略)在表格的左侧,Qt 自动显示了行号,如红色标注部分所示。如何去除这些数字?另一个问题是,如果我点击任何一个单元格,只有该单元格会被选中。怎样设置才能使用户点击某个单元格时,整行都被选中,就像粉色标注部分一样?例如,当我点击单元格时,第三行应该被整个选中。
2024-06-30 08:30:00
1356
原创 四轮转向控制器与里程计数据计算的实现
类是一个集成了四轮转向控制和里程计数据计算的控制器。它管理并控制四轮转向车辆的各个部分,包括转向联动、速度控制、里程计更新等。通过本文的介绍,我们了解了如何通过 C++ 代码实现一个四轮转向控制器,并结合里程计数据提供准确的车辆位置信息反馈。这个控制器不仅能够处理车辆的基本运动控制,还能实时更新并发布里程计数据,使得车辆在复杂环境中能够获得精确的定位信息。四轮转向控制器的核心在于合理的参数初始化、精确的里程计数据计算以及实时的控制指令更新。希望本文能够对从事机器人和自动驾驶研究的工程师们有所帮助。
2024-06-29 17:30:23
501
原创 区别QPushButton和QToolButton
理解QPushButton和QToolButton之间的细微差别对于优化用户界面设计非常重要。希望这篇博客能帮助你在Qt开发中做出更好的选择。
2024-06-29 09:45:00
660
原创 Q_OBJECT 抛出 ‘undefined reference to vtable‘ 错误
遇到错误时,往往是因为 MOC 生成的文件未正确包含在项目中。通过分离头文件与源文件、适当配置.pro文件、在源文件中包含以及重新运行qmake,可以解决此问题。希望本文的方法能帮助你解决类似的编译问题。
2024-06-28 08:45:00
345
原创 在Qt Creator中添加预处理宏定义方法指南
确保选择了Debug配置;进入左侧菜单中的Projects部分;在Build部分下的Build Steps中,找到Additional arguments输入框;输入您的宏定义,例如:DEBUG 或 __CTS_DEBUG__这样,当您使用调试配置时,宏定义会生效;而选择发布配置时,宏定义将自动取消。这在Windows上特别有用,可以将VERSION字符串用于.rc文件中以生成版本信息。希望这些方法能帮助您在Qt Creator中有效地管理和使用预处理宏定义,如有其它问题,欢迎留言讨论。
2024-06-27 20:52:29
1328
原创 在 Qt 中设置 QMainWindow 的大小
以上几种方法都可以实现将 QMainWindow 的大小设置为用户桌面大小的 70%,可以根据具体的 Qt 版本和需求选择合适的方案。
2024-06-27 20:48:53
1546
原创 在Qt中实现图片自适应标签大小
如果需要更高的定制化,可以创建一个继承自QLabel的自定义类,并重载setPixmap和paintEvent方法。Q_OBJECTprivate:// 保留原始图像,避免多次调整尺寸质量下降public:repaint();if (_qpSource.isNull()) // 如果没有图像,不进行绘制return;// 使用示例这个方法通过重载paintEvent来手动绘制图像,并在setPixmap。
2024-06-27 20:31:49
1472
原创 什么时候应该使用 Q_OBJECT 宏?
在Qt的文档中有这样一段描述:Q_OBJECT 宏必须出现在声明自己信号和槽或者使用 Qt 元对象系统提供的其他服务的类定义的私有部分。但是,这究竟意味着什么呢?在继承自 QObject 的类中,哪些情况下可以安全地省略这个宏?如果在一个继承自 QObject 的类中省略了 Q_OBJECT 宏,而在此基础上又进行了继承,会不会引发问题?基本上,我想了解在 Qt 类中有哪些情形是可以省略 Q_OBJECT 的。
2024-06-27 08:45:00
709
原创 #如何使用 Qt 5.6 在 Android 上启用 NFC
NFC 技术在 Android 应用开发中变得越来越重要。在本文中,我将介绍如何使用 Qt 5.6 来实现 Android 上的 NFC 功能。这个教程基于一个创建于 8 年 8 个月前的问题,并在 7 年 3 个月前进行了修改,讨论了如何在 Android 手机上使用 Qt 的 NFC 模块读取 NFC 标签。
2024-06-27 08:30:00
1756
原创 如何在 qmake(QtCreator)中指定 Mac 平台
在 Qt 项目文件(.pro 文件)中设置针对 Mac OS 的配置项。虽然 Mac OS 是类 Unix 系统,但有时我们仍然需要区分它和 Linux 系统。
2024-06-26 22:13:03
494
原创 Qt 智能指针类详解
QPointer:专用于QObject对象,避免悬空指针。:引用计数智能指针,类似。:持有对的弱引用,类似。:作用域内自动删除指向对象,类似。根据具体需求选择合适的智能指针类,可以有效地管理对象生命周期,避免内存泄漏和悬空指针等问题。
2024-06-26 21:11:05
495
原创 MinGW SEH 和 MinGW SJLJ 的区别
SJLJ(SetJump/LongJump)和 SEH(Structured Exception Handling)是两种不同的异常处理系统。优点:SJLJ 支持跨架构,适用范围更广,而且更加稳健。SJLJ 异常可以通过使用其他异常处理系统(包括 C 库)的库来抛出。缺点:SJLJ 有性能损失。优点:SEH 更高效,没有性能损失。缺点:SEH 的支持度不高。在使用 SEH 异常时,通过不使用 SEH 的库抛出异常会引发问题。
2024-06-26 21:06:12
1568
原创 想关掉一个qwidget是用deleteLater还是用close
使用close()来关闭窗口并可能触发关闭事件。使用来标记对象以便在安全的时候删除它。
2024-06-26 10:56:58
938
WPF library supporting layers (adornments) over any hwnd hosted by an HwndHost.7z
2024-12-29
hwnd windbg extension from skywing's sdbgext.7z
2024-12-29
The better way to deal with JSON data in Swift.7z
2024-12-28
Adaptive_and_Fault_Tolerant_Flight_Control_Systems-master.7z
2025-02-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人