- 博客(22)
- 收藏
- 关注
原创 从入门到精通:BU04/BU03 PDOA 运动滤波器理解与调试指南
UWB PDOA 测角不是每一帧都绝对稳定,尤其在标签靠近基站左右侧时,角度会出现跳变。运动滤波器的作用就是把连续多帧测量值放在一起处理,让输出的。它不能解决所有问题。滤波器只能处理“随机抖动”和“短时跳变”,不能修复天线间距错误、天线方向错误、遮挡、多径、相位折返这类硬件或几何问题。如果标签已经跑到基站正左侧或正右侧,PDOA 角度会变得很敏感,不能只靠滤波硬压。里,看不到源码,所以不能确认它是均值、中值、R95 剔除还是混合滤波。这种情况下不能认为标签真的在正前方,而是说明角度已经进入不稳定区。
2026-06-05 09:48:58
274
原创 nRF Connect SDK 下载太慢/失败?把下载区域改成国内源即可
nRF Connect SDK 下载慢或者下载失败时,可以优先检查 VS Code 的。1. 保存 settings.json2. 重启 VS Code3. 选择 Pre-packaged SDKs & Toolchains4. 安装对应版本 SDK5. 国内网络一般不开 VPN之后成功下载并安装了 nRF Connect SDK v3.3.0。
2026-05-11 09:48:27
641
原创 ESP32 各型号远程 OTA 实战教程
正确分区表正确固件 bin可靠下载地址版本判断写入未运行分区重启切换失败回滚普通 WiFi 型 ESP32,例如 ESP32、ESP32-S2、ESP32-S3、ESP32-C3、ESP32-C6,都可以直接做 WiFi HTTP / HTTPS OTA。ESP32-H2 没有 WiFi,适合通过 BLE、Thread、Zigbee 或网关 OTA。ESP32-P4 本体没有集成无线连接,通常需要外接 ESP32-C6、ESP32-C5、以太网或其他联网模块实现远程 OTA。
2026-05-06 10:05:16
815
原创 ESP32 各型号远程 OTA 分区表建议与实战说明
在.inoArduino-ESP32 文档说明,可以在草图同目录创建,构建系统会使用这个自定义分区表。2MB Flash:不建议 OTA,除非极简固件4MB Flash:可以 OTA,但不要放太多资源8MB Flash:最推荐,正式项目够用16MB Flash:ESP32-S3 / UI / 摄像头 / 大资源项目首选ESP32-S3 / ESP32-C6:8MB OTA 起步ESP32-S3 + 屏幕 / 摄像头:16MB OTA这样 OTA 分区更大,后期不容易因为固件变大而爆分区。
2026-05-04 00:47:47
1019
2
原创 从 MCU 开发过渡到 ROS2:嵌入式开发者入门教程
第 1 步:熟悉 Ubuntu 基础命令第 2 步:安装 ROS2 Humble / Jazzy第 3 步:运行 talker / listener 示例第 4 步:学习 node、topic、service、action、parameter第 5 步:用 C++ 写 publisher 和 subscriber第 6 步:写 ROS2 串口节点第 7 步:让 ROS2 控制 MCU 的 LED第 8 步:让 ROS2 控制 MCU 的电机。
2026-05-03 01:46:24
230
1
原创 从 C 语言过渡到 Python:给 C 程序员的快速入门教程
创建文件tools.py创建文件main.py如果你已经会 C 语言,学习 Python 并不难。C 语言让你理解计算机底层Python 让你快速解决实际问题二者不是替代关系,而是互补关系。C 语言适合打基础、做底层、追求性能Python 适合做工具、做数据、做自动化、快速开发底层理解能力工程实现能力快速开发能力工具自动化能力数据处理能力这对于嵌入式开发、机器人开发、AI 应用、自动化测试、后端开发都非常有帮助。先掌握基础语法再熟悉列表、字典、字符串然后学习文件操作和异常处理。
2026-05-03 01:45:27
605
原创 扩展卡尔曼滤波 EKF 进阶教程:从多传感器融合到单片机工程实战
预测 + 修正只是预测模型和测量模型从线性变成了非线性。状态是什么?输入是什么?测量是什么?状态怎么预测?测量怎么预测?雅可比矩阵怎么写?Q 表示什么不确定性?R 表示什么测量噪声?测量异常怎么处理?角度残差怎么归一化?x = [position_xposition_yyaw用 UWB / GPS / 视觉修正 x、y用磁力计 / 视觉航向修正 yawQ 大:更不相信模型,更容易被测量修正。Q 小:更相信模型,状态更平滑但可能漂移。R 大:更不相信测量,抗跳变强但修正慢。
2026-05-02 16:41:32
408
原创 二阶卡尔曼滤波进阶教程:从状态建模到单片机工程实战
状态变量有两个。x = 距离x = [距离速度x = [角度角速度x = [角度陀螺仪零偏所以二阶卡尔曼滤波更适合描述运动过程。二阶卡尔曼滤波比一阶卡尔曼更适合运动系统。它不仅可以估计当前值,还可以估计变化趋势。位置 + 速度角度 + 角速度高度 + 垂直速度角度 + 陀螺仪零偏vel = vel1. 可以平滑位置2. 可以估计速度3. 比直接差分测速更稳定4. 适合运动控制和状态估计位置太抖:增大 r,减小 q_pos。位置太慢:减小 r,增大 q_pos。
2026-05-02 16:40:58
343
原创 一阶卡尔曼滤波进阶教程:从 Q/R 调参到工程实战优化
q 控制系统变化的可信程度r 控制传感器测量的可信程度p 表示当前估计的不确定性k 决定本次有多相信测量值想更平滑:减小 q,增大 r。想响应更快:增大 q,减小 r。1. 用第一次测量值初始化 x2. r 可以通过静止采样方差估算3. q 根据系统变化速度调节4. 异常跳变先限幅5. 多个通道独立滤波6. 滤波前先做校准7. 控制系统中不要滤得太狠卡尔曼滤波不是让数据变得越平滑越好,而是在测量噪声和响应速度之间找到一个合理平衡。ADC 电压电流检测电机速度距离测量温度采样。
2026-05-01 00:16:07
1255
原创 一阶低通滤波进阶教程:从 α 调参到截止频率、动态 dt 和工程优化
alpha 的含义截止频率 fc采样周期 dt滤波延迟相位滞后动态 alpha限幅组合多通道独立滤波控制系统中的副作用入门阶段可以直接调 alpha。截止频率 fc + 采样周期 dt参数更有物理意义不同采样周期下效果更一致更方便工程调试滤波不是越平滑越好,而是在噪声和响应速度之间找平衡。对于单片机、电机控制、机器人、IMU、ADC 采样等项目来说,一阶低通滤波虽然简单,但非常实用,值得深入掌握。
2026-05-01 00:15:50
544
原创 扩展卡尔曼滤波 EKF 入门教程:从原理到单片机 C 代码实战
雅可比矩阵 Jacobian Matrix把非线性函数在当前点附近近似成线性函数。这个偏导数就会放到雅可比矩阵里面。简单理解:雅可比矩阵就是告诉 EKF:当前状态附近,系统对每个状态变量有多敏感。EKF 的核心并不是代码,而是建模。状态是什么?输入是什么?测量是什么?状态怎么预测?测量怎么预测?雅可比矩阵怎么写?Q 和 R 怎么调?状态:输入:u = [v, w]预测:测量:修正:用外部位置传感器修正预测轨迹EKF 在单片机中并不是不能做。
2026-04-30 00:04:28
402
原创 二阶卡尔曼滤波入门教程:从原理到单片机 C 代码实现
同时估计两个状态变量的卡尔曼滤波。x = 位置x = [位置速度x = [角度角速度x = [角度陀螺仪零偏所以,二阶卡尔曼滤波并不是说滤波公式只算两次,而是说:状态变量有两个。用两个状态变量描述系统,再通过预测和测量修正,得到更加稳定、更加可信的估计结果。温度电压距离压力简单速度位置 + 速度角度 + 角速度角度 + 陀螺仪零偏高度 + 垂直速度如果你的数据只是普通抖动,用低通滤波或一阶卡尔曼就够了。
2026-04-30 00:03:49
417
原创 一阶低通滤波入门教程:从原理到单片机 C 代码实现
一阶低通滤波是一种非常常见的数字滤波算法。保留低频变化,削弱高频抖动。让慢慢变化的数据保留下来,把快速乱跳的噪声压下去。例如温度、电压、电池电量这类数据,本身变化比较慢,但采样时会有小幅抖动,一阶低通滤波就非常适合。一阶低通滤波是单片机中最常用的滤波算法之一。让输出值慢慢靠近输入值。α 越大,响应越快,但更容易抖。α 越小,越平滑,但响应更慢。ADC 采样电池电压温度数据电流检测距离测量电机速度简单角度平滑如果你的数据只是普通小幅抖动,优先使用一阶低通滤波。
2026-04-29 00:07:16
640
原创 一阶卡尔曼滤波入门教程:从原理到单片机 C 代码实现
卡尔曼滤波是一种用于估计真实值的算法。不要完全相信传感器测量值,也不要完全相信上一次估计值,而是根据两者的可信程度,计算出一个更合理的新估计值。通俗来说:卡尔曼滤波就是在“预测值”和“测量值”之间做一个聪明的加权平均。如果传感器噪声很大,就少相信传感器。如果系统变化很快,就多相信传感器。float x;// 当前估计值float p;// 估计误差协方差float q;// 过程噪声float r;// 测量噪声float k;// 卡尔曼增益。
2026-04-29 00:06:37
973
原创 单片机 LQR 进阶实战教程:从建模、离散化到嵌入式代码落地
20 0 0 0;0 0 0 1;-1 0 0 0];B = [0;1;0;1];C = eye(4);单片机中使用 LQR,真正重要的是工程流程,而不是只会公式。1. 确定控制对象2. 选择状态变量3. 建立状态空间模型4. 选择控制周期 Ts5. 离散化 A、B 矩阵6. 设置 Q、R7. 计算 K8. 单片机周期运行 u = -Kx9. 加入限幅、滤波、保护10. 实物调试和参数优化所以不要被 LQR 的数学推导吓到。状态量是否准确单位是否统一。
2026-04-28 10:11:52
674
原创 单片机中使用 LQR 控制算法入门教程:从 PID 到现代控制
LQR 在单片机中的实现并没有想象中复杂。u = -Kx建立模型计算 K 矩阵选择 Q 和 R实物调试而单片机实时运行时,只需要做简单的乘法和加法。可以这样理解:PID 是根据误差进行控制。LQR 是根据多个状态综合控制。PID 更适合简单系统。LQR 更适合状态较多、耦合较强的系统。对于平衡车、倒立摆、机器人底盘、云台控制、电机控制等项目来说,LQR 是一个非常值得学习的控制算法。上位机负责计算 K单片机负责执行 u = -Kx。
2026-04-28 10:07:50
829
原创 PID 大师级教程:从公式到工业级闭环控制系统
PID 是控制系统中最经典、最常用的控制算法之一。输出 = Kp × 误差 + Ki × 误差积分 + Kd × 误差变化率MCU 控制电机控制FOC 矢量控制机器人底盘云台控制机械臂控制温控系统平衡小车稳定快速抗干扰不过冲不震荡不发热不乱抖Kp、Ki、Kd 怎么调限幅、滤波、积分抗饱和、目标平滑、输出变化率限制系统模型采样周期控制带宽串级结构前馈补偿扰动观测状态估计增益调度工程鲁棒性。
2026-04-26 00:20:30
553
原创 MCU 中使用 PID 算法的完整教程:从原理到 C 语言代码实现
P:Proportional,比例I:Integral,积分D:Derivative,微分PID 控制的目标是:让系统的实际输出尽可能接近目标值。目标速度:1000 RPM实际速度:800 RPM误差 = 目标速度 - 实际速度 = 200 RPMPID 算法会根据这个误差计算出一个控制量,例如 PWM 占空比,然后通过 PWM 控制电机,使电机速度逐渐接近目标速度。float kp;float ki;float kd;kp、ki、kd:PID 三个参数。
2026-04-25 02:09:24
653
1
原创 C 语言如何快速过渡到 C++?一篇文章带你从 C 思维切换到 C++ 思维
从 C 语言过渡到 C++,最重要的不是死记语法,而是逐渐改变编程思维。数据和函数分开通过函数一步一步处理数据程序围绕流程展开把数据和操作封装到类中通过对象组织程序使用继承和多态提高复用性和扩展性使用 STL 提高开发效率cin / coutstringvector引用 class 构造函数析构函数封装继承多态STL 常用容器。
2026-04-25 02:00:24
424
原创 【ESP-IoT-Solution】优雅の在项目中添加组件
的组件添加到项目呢,今天就手把手教大家,对于ESP-IoT-Solution我们不做过多的概述,想了解可以点击查看。:里面的文件可以教你如何快速上手,可以先看里面的readme.txt。#include “组件头文件名字!:测试功能,可以直接烧进去测试一下。
2025-03-19 12:13:46
999
原创 【ESP32环境搭建】基于VScode + ESP-IDF(100%成功,装不好可以评论区私我)
C:\Espressif\tools\idf-python\3.11.2\python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple换成国内镜像速度快点。一直点下一步就行了,没什么好说的,选择自己喜欢的安装路径,路径不包含中文还有一些符号。修改这两个路径,一个框架目录,一个工具目录,就是前面截图的两个路径,顺序从上到下一致。到这一步后选择需要的组件,我是用的s3系列所以就默认了,大家按需选择。
2025-03-17 00:17:48
13951
39
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅