- 博客(44)
- 收藏
- 关注
原创 Isaac Sim 5.1.0 无头服务器部署与 RTX 显存段错误排障全记录
> 永远不要相信容器外的环境变量,掌控引擎生命周期的唯一方式是将不可变配置前置。
2026-06-04 20:06:31
332
原创 Wheeltec 机器人多模态交互系统:从硬件死锁到纯软件异步驱动的重构实录
面向接口编程,而不是面向实现编程 (Program to an interface, not an implementation)。这次重构让我深刻体会到这句名言的含金量。在机器人与 AI 结合的开发中,硬件环境千变万化,如果把底层业务逻辑和特定的物理硬件死死绑在一起,系统必将脆弱不堪。唯有构建逻辑解耦、软硬分离、事件驱动的灵活架构,才是应对未来复杂 AI 场景的唯一正解。
2026-06-03 20:17:34
347
原创 ROS2 机器人底盘调试避坑指南:从 `/odom` 丢失到彻底跑通的硬核排障实录
在 ROS2 的开发中,最棘手的问题往往不在高大上的算法模型里,而藏在一条不起眼的 USB 线、一个没对齐的波特率、以及极其严格的 QoS 配置中。看灯、摸线、抓底层。先确保数据流能突破 Linux 硬件层,再谈上层的 SLAM 与 Nav2。打通了底层的“任督二脉”,下一步,我将在这个坚实的基础上,正式接入 AI 语音模块,让这台拥有“小脑”和“大脑”的小车,正式具备“灵魂”。
2026-06-02 21:05:17
349
原创 ROS 2 Humble 工作空间编译踩坑实录:从零到全量构建
在 NVIDIA Jetson 平台(ARM64架构)上编译一个包含nav2wheeltec系列功能包以及讯飞语音 SDK 的大型 ROS 2 工作空间。系统为 Ubuntu 22.04,ROS 2 发行版为 Humble。本文档记录编译过程中遇到的各种典型问题、错误分析及最终解决方案,供后续复盘。
2026-06-02 20:58:44
187
原创 主流 3D SLAM 算法核心架构深度解析:VINS、ORB-SLAM3 与 FAST-LIO
对比维度ORB-SLAM3FAST-LIO2主导传感器相机 (单/双目) + IMU相机 (多模态) + IMU3D 激光雷达 + IMU前端机制KLT 稀疏光流跟踪ORB 特征点提取 + 描述子原始点云 + ikd-Tree 搜索核心后端滑动窗口非线性优化局部/全局 光束法平差 (BA)迭代误差状态卡尔曼滤波 (IESKF)最终地图形态稀疏的 3D 轨迹与点云具备拓扑关系的稀疏特征点云物理意义明确的稠密 3D 点云核心优势计算轻量、输出极平滑、低延迟。
2026-03-19 15:37:14
566
原创 基于SLAM Toolbox的移动机器人激光建图算法原理与工程实现
本系统采用作为核心建图与定位方案。这是一款专为 ROS 2 生态设计的现代化 2D 激光 SLAM 框架。该算法基于的开源扫描匹配库进行深度重构,采用了的技术路线。与传统的滤波类算法(如 Gmapping)不同,SLAM Toolbox 将机器人的建图过程建模为一个。它能够在构建地图的同时,通过后端优化器(Solver)修正历史轨迹的累积误差,从而生成全局一致的高精度栅格地图。
2025-12-25 11:28:59
881
原创 集成式人机交互与底层驱动系统设计说明书
在早期架构中,控制逻辑(Controller)与硬件接口(Driver)被物理分离。考虑到 STM32 固件采用了高效的字符流控制协议,我们将架构精简为集成式驱动模式。本模块充当 ROS 2 上位机与底层硬件的唯一交互网关,通过多线程并发机制,同时实现毫秒级的人机交互控制与高频传感器数据采集。
2025-12-08 17:19:36
1175
原创 STM32 底层固件架构与驱动设计
运动执行:通过 I2C 总线控制四轮差速电机驱动板,实现全向移动与平滑调速。数据感知:采集 IMU (MPU6050) 的姿态数据与电机编码器的里程计数据。数据交互:通过 UART 串口与上位机 (ROS 2 节点) 进行高频数据通讯。上行 (STM32 -> ROS):纯文本 CSV 格式,以换行符结尾。下行 (ROS -> STM32)WASD(前后左右)。T+ 时间戳文本。
2025-12-08 17:12:06
924
原创 基于ROS2与EKF的四轮差速机器人里程计精度优化:解决建图漂移与重影问题
模型不如传感器:差速运动学模型在滑移严重时非常不准,必须依赖高频 IMU 对航向角进行直接修正。数据预处理至关重要:简单的低通滤波(LPF)就能极大提升建图的清晰度。观测维度的选择:直接观测 Yaw 角比单纯观测角速度能更有效地抑制漂移。这套方案不仅适用于四轮差速车,同样适用于履带车等高滑移率的移动机器人平台。
2025-12-04 18:09:52
916
原创 在slam建图中为何坐标base_link,laser,imu_link是始终在一起的,但是odom 会与这位三个坐标在运行中产生偏差
摘要:在机器人系统中,base_link、laser和imu_link三个坐标系通过URDF/XACRO文件静态定义,始终保持固定相对位置。odom坐标系作为局部运动参考会产生随时间累积的漂移误差,主要源于轮式里程计的固有缺陷和IMU积分误差。SLAM系统通过引入map坐标系,利用闭环检测和扫描匹配技术,动态计算map→odom的修正量来补偿odom的漂移。这种偏差的存在正是SLAM系统正常工作的体现,它通过不断校准里程计来维持全局定位精度。
2025-12-02 20:03:18
572
原创 (STM32F103RCT6、四路霍尔电机、香橙派、顶部雷达)获取精确的 odom坐标
(例如使用卡尔曼滤波),可以用IMU修正轮子打滑带来的位姿跳变,同时用轮速计抑制IMU的零漂,从而得到更稳定、精确的。:配置定时器的编码器接口模式,精确捕获四个电机的脉冲数。:轮子半径、轮距(wheel_base)等物理参数的测量准确性直接决定odom的精度。:直接使用IMU提供的四元数来获取更准确的偏航角(Yaw),替代单纯由轮速计积分得到的。,它可以在传感器内部完成姿态解算,直接输出稳定的四元数,减轻主控负担并提高精度。:使用差分驱动模型,根据左右轮的位移差计算小车的位移和朝向变化。
2025-11-24 15:15:44
654
原创 理解SLAM(即时定位与地图构建)中的TF(Transform)树
理解SLAM(即时定位与地图构建)中的TF(TransForm)树确实非常关键,它就像是机器人的 和。为了让你彻底弄懂,我们这次不仅深入原理,还会结合更多实际场景和比喻,让你无论在何种机器人平台上都能触类旁通。
2025-11-12 20:40:42
966
原创 OrangePi(运行 Ubuntu 22.04)安装 ROS 2 Humble
【代码】 OrangePi(运行 Ubuntu 22.04)安装 ROS 2 Humble。
2025-11-10 14:12:14
451
原创 如何使用ROS 2与STM32进行串口通信,并实现通过键盘按键‘1’来控制LED灯开关
一台运行ROS 2的计算机(上位机)通过串口向一颗STM32微控制器(下位机)发送指令,从而控制连接在STM32上的LED灯。键盘作为用户输入设备,由ROS 2节点监听,最终将按键事件转化为通过串口发送的指令。以下代码展示了一个简单的STM32程序框架,它持续检查串口是否收到数据,并根据收到的字符控制LED。STM32端的任务是初始化串口和GPIO,并不断监听来自串口的指令,根据指令控制LED。:让STM32将传感器数据(如温度、距离)发送回ROS 2,并在ROS 2中发布为话题。
2025-11-08 17:02:01
1239
原创 ROS2与STM32通信详解
/ 命令类型#define MSG_CMD_VEL "VEL" // 速度控制#define MSG_CMD_LED "LED" // LED控制#define MSG_CMD_PID "PID" // PID参数设置// 数据类型#define MSG_DATA_ODOM "ODOM" // 里程计数据#define MSG_DATA_IMU "IMU" // IMU数据#define MSG_DATA_STATUS "STATUS" // 系统状态。
2025-11-03 13:18:02
755
原创 使用雷达,SLAM 算法选型
下表对比了各算法的主要特点,方便你快速了解。支持,能力强大,能有效消除累积误差。室内大场景、长廊、仓库支持多传感器融合(可接入IMU)。中等Google开源,文档和社区支持良好,与ROS 2集成顺畅。强,专注于2D激光雷达,支持在线建图与保存。中小型室内场景、实时导航纯激光雷达即可良好工作。对香橙派等资源受限设备友好,易于调试和参数调整。,在快速运动和高动态环境下。无人机、户外、高速移动机器人。
2025-10-30 15:17:15
373
原创 CH340 是什么
CH340 系列是南京沁恒/WCH 出品的一类 USB-to-serial 转换芯片(USB → UART/RS232/并口/IrDA 等模式)。常见用途:把 MCU(TTL UART)或老式 RS-232 设备接到电脑 USB 上,或者用于 Arduino 等开发板的 USB 串口模块。芯片工作在 USB 全速(Full-Speed USB,12 Mbps)并模拟标准 UART 控制信号(如 RTS/CTS、DTR、DSR 等)。
2025-10-29 14:30:28
1205
原创 TX 与 RX 引脚详解
模块的TX -> 主控的RX(发送数据);主控的TX -> 模块的RX(发送控制指令)。 ESP32/Arduino 连接 GPS 模块、蓝牙模块、Wi-Fi 模块等。 将处理器内部的并行数据(如一个字节)转换成串行的比特流,按顺序发出。⚠️ 注意:如果同向连接(TX对TX,RX对RX),通信将完全失效。 监听线路,将接收到的串行比特流重新组装成并行数据,供处理器读取。 MCU的TX -> 模块 -> 电脑串口监视器(显示调试信息)。(每秒传输的比特数)来同步时序,无需独立的时钟线。
2025-10-28 16:17:07
1212
原创 模型转换和边缘计算中至关重要的概念:归一化 和量化策略
概念归一化量化策略核心目标数据预处理,使输入数据符合模型训练时的分布,保证模型正确工作。模型压缩与加速,通过降低数据精度来极致优化性能。关键操作对输入数据进行线性缩放。为模型权重和激活值确定从FP32到INT8的最佳映射参数。在RKNN转换中的作用保证模型精度的基础。配置错误直接导致模型失效。在精度和性能之间取得平衡。策略选择影响最终部署效果。相互关系两者都是模型转换流程中的关键配置。。
2025-10-24 16:29:25
997
原创 ONNX模型至RKNN模型转换技术指南
:对于NPU不支持的算子,可开发C++实现并将其注册为混合算子(OP),在NPU推理时由CPU执行。。
2025-10-24 16:00:02
980
原创 PyTorch 到 RKNN 模型转换完整指南
本指南详细介绍了如何将 PyTorch 模型转换为 ONNX 格式,再转换为 RKNN 格式,以便在 Rockchip NPU 上运行。主要针对 Orange Pi 5 Plus (RK3588) 平台。
2025-10-16 18:26:41
756
原创 使用OpenCV将视频转换为图片的详细教程
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它包含了数百种计算机视觉算法,在图像处理、视频分析、目标检测和机器学习等领域有着广泛应用。
2025-09-23 15:19:11
1024
原创 RK3588平台RKNN-Toolkit2安装与模型部署完整指南
,它将通用模型(如ONNX格式)转换为高度优化的、瑞芯微NPU可高效执行的格式,并进行量化、算子融合等深度优化,最终生成专用的。,它针对瑞芯微芯片(如RK3588)的硬件架构进行了深度优化,能够充分发挥NPU的算力优势。:在导出ONNX前修改模型结构,将不支持的算子替换为兼容的变体,或尝试更新RKNN-Toolkit2到最新版本。,它只定义模型的计算图结构,不涉及具体硬件的执行细节,其价值在于标准化和兼容性。:使用Conda创建干净的Python环境,确保系统已安装所有必需的依赖库。
2025-09-17 10:04:00
3110
原创 存储方案详解:FileStorage工具类与常用存储API
本文对比了四种前端存储方案:1)window.requestFileSystem(HTML5文件系统API,仅Chrome支持,适合复杂文件操作);2)localStorage(标准键值存储,所有浏览器支持,5MB限制);3)plus.storage(移动端专用,无容量限制,数据持久);4)plus.io(移动端完整文件系统API)。文章建议:简单键值用localStorage/plus.storage,复杂文件操作用对应API,并提供了统一封装工具类的最佳实践,强调根据平台特性选择方案,移动端优先使用pl
2025-07-23 15:54:17
893
原创 UniApp打包iOS应用终极详细指南
UniApp打包iOS应用终极指南摘要 本指南详细讲解UniApp打包iOS应用全流程: 1️⃣ 环境准备:需macOS系统+Xcode15+HBuilderX+苹果开发者账号(99美元/年) 2️⃣ 证书配置:分4步生成CSR文件、创建开发者证书、转换P12证书、绑定BundleID 3️⃣ 项目配置:重点修改manifest.json的BundleID,补全iOS隐私权限描述,申请DCloudAppKey 4️⃣ 打包操作:云打包(测试用)或本地Xcode打包(上架用),需匹配证书与描述文件 5️⃣ 上
2025-07-22 17:46:30
2559
原创 CSS Display 属性全面解析
常用于页面结构元素(header, footer, section等)- 常用于文本修饰元素(span, a, strong等)- 灵活控制项目在主轴和交叉轴上的对齐。- 宽度由内容决定,无法设置宽高。- 非常适合响应式布局和组件排列。- 常用于导航菜单项、按钮组等。- 适用于复杂页面布局和仪表盘。- 适用于表单布局和垂直居中。- 与其他行内元素在同一行。- 独占一行,可设置宽高。- 行内显示但可设置宽高。- 支持所有盒模型属性。- 支持所有现代浏览器。- 一维弹性布局系统。- 二维网格布局系统。
2025-07-17 14:12:45
362
原创 CSS盒子模型详解
每种盒子模型都有对应的说明、演示和代码示例,便于理解它们的不同行为和使用场景。页面还包含了这些盒子模型的比较表格和实际应用建议。
2025-07-17 11:54:43
257
原创 RPLIDAR S2 专用安装指南(ROS2 Humble)
安装 S2 专用依赖项sudo apt install ros-humble-tf2-ros ros-humble-tf2-geometry-msgs ros-humble-laser-geometry。# 不同模式对比'Standard': # 基本扫描模式 (10Hz)'Express': # 中速扫描 (15Hz)'Boost': # 高速扫描 (20Hz) - 推荐使用。'serial_port': '/dev/rplidar', # 设备路径,通常保持默认。
2025-06-04 17:34:55
529
原创 在 ROS 2 (Humble/Foxy) 和 Ubuntu 22.04 环境中使用思岚 S2 激光雷达进行地图构建的完整指南,结合驱动配置、SLAM 算法部署及实践步骤:
2. 配置 USB 权限3. 启动雷达节点 验证数据: 检查激光点云话题是否正常输出。🧩 二、SLAM 算法选型与部署根据需求选择适合的算法(推荐两种主流方案):5
2025-06-04 16:51:43
2354
1
原创 激光与视觉SLAM完整学习路线
室内移动机器人导航系统(激光与视觉SLAM融合)的,整合基础理论、核心技术、系统集成及实战应用,结合最新研究成果与实践需求,总周期建议。
2025-06-04 16:38:33
1327
原创 c语言位域操作讲解
如果一个成员无法放入当前剩余的空间(例如,当前字节剩余3位,但下一个成员需要4位),编译器可能会将剩余位填充,并让该成员从下一个存储单元(如字节)开始。数据类型:通常是`int`、`unsigned int`或`signed int`,其他类型(如`char`)可能因编译器而异。位数:指定该成员占用的二进制位数(例如,`1`位可以表示布尔值,`4`位可以表示0~15的整数)。5. 类型限制:位域成员必须是整型(`int`、`unsigned`等),不能是浮点数或指针。
2025-03-25 15:02:05
495
原创 Valgrind检测c语言内存泄漏
3. by 0x401156: create_leak (my_program.c:4):泄漏发生在 `my_program.c` 的第 4 行,即 `malloc` 的位置。根据 Valgrind 的报告,找到未释放的内存。当你的程序调用 `malloc(100)` 时,Valgrind 会记录下这个内存块的地址和大小。如果这种情况反复发生,程序会占用越来越多的内存(图书馆的书越来越少),最终可能导致程序变慢或崩溃。你用 `malloc` 或 `calloc` 分配了一块内存(借书)。
2025-03-25 14:49:29
1008
原创 c语言malloc/free原理
操作系统接口:`malloc`底层通过系统调用(如`sbrk`或`mmap`)向操作系统申请大块内存(通常以页为单位,如4KB)。在C语言中,`malloc`和`free`是用于动态内存管理的核心函数,其原理涉及操作系统的内存分配机制和运行时库的高效管理策略。当用户请求`malloc(16)`,可能分配一个总大小为`sizeof(metadata) + 16`的块,返回用户数据区的地址。`malloc`负责从堆中分配指定大小的内存块,`free`则释放不再使用的内存块,使其可被重复利用。
2025-03-25 14:33:31
488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅