当前位置: 首页 > news >正文

电控---DMP库

一、DMP库的本质与核心定位

DMP库是为Invensense(现TDK)系列传感器(如MPU6050、MPU9250等)内置的数字运动处理器(DMP)硬件模块提供的软件接口层。其核心目标是:

  • 抽象硬件操作:将复杂的寄存器配置、固件交互封装为简洁的API,降低开发门槛。
  • 硬件加速融合:利用DMP模块的硬件算力(如ARM Cortex-M0内核或专用DSP),实现加速度计、陀螺仪(及磁力计)数据的实时融合,输出高精度姿态数据。
  • 解放主处理器:避免MCU(如STM32、Arduino)直接运行计算密集型的滤波算法(如卡尔曼滤波),节省算力资源。
二、DMP库的核心架构与功能模块
1. 硬件交互层
  • 初始化与自检

    • 检测设备ID(MPU6050默认0x68),验证硬件连接。
    • 加载DMP固件:MPU6050的DMP功能依赖内置固件(版本号可通过getFirmwareVersion()查询),库需确保固件版本兼容(如v6.16及以上支持完整功能)。
    • 配置传感器基础参数:
      // 示例:设置陀螺仪量程±2000°/s,加速度计±8g
      mpu.setGyroRange(MPU6050_GYRO_RANGE_2000);  
      mpu.setAccelRange(MPU6050_ACCEL_RANGE_8G);  
      
  • 校准机制

    • 加速度计校准:通过静止状态下的重力向量拟合,修正零偏(库函数如calibrateAccel())。
    • 陀螺仪校准:静止时采集零漂数据,生成补偿系数(需持续数秒,库函数如calibrateGyro())。
    • 温度补偿:读取芯片温度(getTemperature()),修正传感器温漂(部分库内置补偿算法)。
2. 数据处理层
  • 原始数据接口

    • 直接读取ADC原始值:
      int16_t ax, ay, az, gx, gy, gz;  
      mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);  // 6轴原始数据  
      
    • 转换为物理单位(需手动计算,库通常提供换算公式):
      float accelX = ax * ACCEL_SCALE_FACTOR;  // ACCEL_SCALE_FACTOR由量程决定,如±2g时为1/16384  
      
  • 融合数据输出

    • 四元数(核心输出)
      • 格式:q0, q1, q2, q3(归一化四元数,表示空间旋转),通过dmpGetCurrentQuaternion(&q)获取。
      • 优势:无万向节死锁,适合数学运算(如旋转矩阵转换)。
    • 欧拉角
      • 由四元数转换而来,输出roll(翻滚角,绕X轴)、pitch(俯仰角,绕Y轴)、yaw(偏航角,绕Z轴),单位弧度,需转换为角度(RAD_TO_DEG宏)。
      • 注意:yaw角依赖磁力计(9轴传感器)或外部参考,6轴模式下yaw会随时间漂移(因陀螺仪积分累积误差)。
    • 重力向量与线性加速度
      • 分离加速度计数据中的重力分量(getGravity(&gravity, &quat))和运动加速度(线性加速度 = 原始加速度 - 重力向量)。
  • 高级功能

    • FIFO缓存:配置FIFO缓冲区存储原始或融合数据,支持批量读取以降低I2C通信频率(如setFIFOEnabled(true)并设置缓冲区大小)。
    • 运动检测:支持手势识别(如双击、倾斜检测),通过dmpRegisterGesture(...)配置,适用于可穿戴设备。
3. 中断与同步
  • 数据就绪中断
    • 当DMP处理完一帧数据(如四元数更新),触发INT引脚电平变化,主处理器可通过中断服务函数快速响应(降低轮询功耗)。
    • 配置示例:
      mpu.setIntEnable(MPU6050_INT_DMP_DATA_READY);  // 使能DMP数据就绪中断  
      attachInterrupt(dmpInterruptPin, dmpDataReady, RISING);  // 注册中断回调  
      
  • 多传感器同步:对于9轴传感器(如MPU9250),库自动同步加速度计、陀螺仪、磁力计数据,确保融合计算的时间一致性。
4. 错误处理与调试
  • 初始化错误码:返回值如DMP_INIT_ERROR_CODE,常见错误包括固件加载失败(DMP_ERR_CODE_1)、校验和不匹配(DMP_ERR_CODE_2)等,需根据文档排查。
  • 调试日志:通过串口输出DMP状态(如Serial.println(dmpGetErrorString(errorCode))),辅助定位配置问题。
三、DMP库的技术优势与适用边界
1. 核心优势
  • 算力卸载:DMP硬件模块独立运行融合算法(如互补滤波、四元数积分),MCU仅需处理结果数据,适合资源有限的微控制器(如8位单片机)。
  • 标准化输出:统一提供四元数、欧拉角等工程友好的姿态参数,避免开发者重复实现易错的数学转换(如四元数转欧拉角公式)。
  • 工业级优化:Invensense官方算法经过量产验证,抗噪声能力优于多数开源软件滤波方案,尤其在动态场景下(如快速转动)表现更稳定。
2. 局限性与注意事项
  • 固件版本依赖:早期固件可能缺少关键功能(如9轴融合),需通过mpu.getDMPFirmwareVersion()确认版本并升级(部分模块支持固件更新)。
  • yaw角漂移问题:6轴模式下(无磁力计),yaw角仅依赖陀螺仪积分,长时间使用会因零漂累积误差,需外部校正(如结合GPS或视觉定位)。
  • 延迟特性:DMP处理数据存在固定延迟(约5~10ms),对实时性要求极高的控制场景(如无人机PID调节)需校准延迟补偿。
  • 库兼容性:第三方库(如Arduino的I2Cdev)与官方库(Invensense提供的原始驱动)在API设计上有差异,需严格遵循目标平台的库文档(如STM32需手动实现I2C时序)。
四、典型开发流程(以STM32为例)
1. 环境搭建
  • 移植库文件:包含mpu6050.h/.cdmp.h/.cmath_functions.h等核心文件,适配STM32的I2C驱动(使用硬件I2C或软件模拟I2C)。
  • 配置工程:启用I2C外设,设置时钟频率(标准模式100kHz或快速模式400kHz),确保通信稳定。
2. 初始化流程
// 1. 初始化I2C通信  
i2c_init();  
// 2. 复位MPU6050  
mpu.reset();  
// 3. 配置传感器量程与带宽  
mpu.setGyroConfig(MPU6050_GYRO_FS_2000);  
mpu.setAccelConfig(MPU6050_ACCEL_FS_8G);  
// 4. 启用DMP模块并加载固件  
dmp_load_firmware();  
dmp_set_operation_mode(DMP_OPERATION_MODE_6AXIS);  
// 5. 执行校准(需用户将传感器水平静止放置)  
calibrate_gyroscope();  
calibrate_accelerometer();  
3. 实时数据获取
while(1) {  // 等待DMP数据就绪(通过查询INT引脚或轮询状态寄存器)  if (mpu.dmp_data_ready()) {  // 读取四元数  dmp_get_quaternion(&q);  // 计算欧拉角(需重力向量参与)  dmp_get_gravity(&gravity, &q);  dmp_get_yaw_pitch_roll(ypr, &q, &gravity);  // 转换为角度并输出  float roll = ypr[2] * RAD_TO_DEG;  float pitch = ypr[1] * RAD_TO_DEG;  float yaw = ypr[0] * RAD_TO_DEG;  // 用于控制算法或数据上传  }  delay(10);  // 控制读取频率,匹配DMP输出速率(如100Hz)  
}  
4. 优化与调试
  • 输出频率配置:通过setDMPFIFORate()设置DMP处理频率(最高200Hz,需与传感器采样率匹配)。
  • 内存管理:DMP固件需占用约4KB RAM存储中间变量,资源紧张时需优化MCU内存分配。
五、扩展功能与高级应用
1. 9轴融合(MPU9250等)
  • 支持磁力计数据输入,通过dmp_enable_magnetometer()启用,解决6轴yaw漂移问题,实现绝对航向角(需校准磁力计,处理地磁场干扰)。
2. 运动特征检测
  • 内置算法支持计步(DMP_FEATURE_STEP_CALC)、跌倒检测(DMP_FEATURE_PEDOMETER),通过配置相应功能位激活:
    dmp_enable_feature(DMP_FEATURE_PEDOMETER);  
    dmp_set_pedometer_step_event(1);  // 设置计步阈值  
    
3. 低功耗模式
  • 在静止场景下,通过setSleepEnabled(true)进入低功耗模式,仅当检测到运动时唤醒DMP(需配置中断触发条件)。
六、常见问题与解决方案
问题原因解决方案
初始化返回错误码固件版本不兼容/硬件连接异常检查I2C接线,更新固件,确保器件ID正确(0x68或0x69)
欧拉角剧烈抖动未校准或量程配置错误执行完整校准流程,确认量程与实际运动范围匹配
yaw角随时间漂移6轴模式无磁力计校准切换至9轴模式,或外部引入航向参考(如GPS)
数据读取延迟高FIFO未启用或I2C频率过低启用FIFO缓冲区,提高I2C频率至400kHz
中断不触发INT引脚配置错误或中断使能未开启检查硬件连接,调用setIntEnable(...)使能对应中断
七、总结与最佳实践

DMP库是MPU6050等传感器发挥姿态解算能力的核心工具,其核心价值在于硬件加速与软件抽象的结合。开发者需掌握:

  1. 校准流程:务必在设备初始化时执行传感器校准,确保零偏数据准确。
  2. 数据输出选择:动态场景优先使用四元数(避免欧拉角万向节死锁),人机交互场景使用欧拉角(直观易读)。
  3. 资源管理:合理配置DMP输出频率与FIFO大小,平衡MCU算力与功耗。
  4. 文档依赖:不同厂商的库实现细节有差异(如Invensense官方库vs开源封装库),需严格参照目标库的API文档(如I2Cdev库的在线手册)。

通过深度理解DMP库的架构与功能,开发者可高效实现无人机姿态控制、机器人平衡算法、可穿戴设备运动监测等复杂应用,大幅缩短开发周期并提升系统稳定性。

相关文章:

电控---DMP库

一、DMP库的本质与核心定位 DMP库是为Invensense(现TDK)系列传感器(如MPU6050、MPU9250等)内置的数字运动处理器(DMP)硬件模块提供的软件接口层。其核心目标是: 抽象硬件操作:将复…...

YOLO数据处理

YOLO(You Only Look Once)的数据处理流程是为了解决目标检测领域的核心挑战,核心目标是为模型训练和推理提供高效、规范化的数据输入。其设计方法系统性地解决了以下关键问题,并对应发展了成熟的技术方案: 一、解决的问…...

Linux实现网络计数器

1.TcpServer.hpp文件 类TcpServer的私有成员变量有端口号,指向类Socket对象的指针,布尔值表示是否运行,以及回调函数,ioservice_t是表示参数为指向Socket对象的指针和InetAddr对象的函数,TcpServer类的构造函数接收端…...

数据分析:用Excel做周报

目录 1.初始模板 ​编辑 2.填充数据 2.1 日期以及表头 2.2 数据验证 2.3 计算数据填充 2.3.1 灵活计算 2.3.2 单独计算 2.3.3 总计 2.4 数据格式 2.5 周累计 2.6 周环比 2.7 业务进度 3 美化 1.初始模板 2.填充数据 2.1 日期以及表头 结果指标有以下这些&#…...

初阶数据结构--排序算法(全解析!!!)

排序 1. 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些些关键字的大小,递增或递减的排列起来的操作。 2. 常见的排序算法 3. 实现常见的排序算法 以下排序算法均是以排升序为示例。 3.1 插入排序 基本思想:…...

SpringCloud 微服务复习笔记

文章目录 微服务概述单体架构微服务架构 微服务拆分微服务拆分原则拆分实战第一步:创建一个新工程第二步:创建对应模块第三步:引入依赖第四步:被配置文件拷贝过来第五步:把对应的东西全部拷过来第六步:创建…...

加油站小程序实战教程14会员充值页面搭建

目录 1 原型2 搭建充值金额选择功能3 搭建金额输入4 搭建支付方式5 充值按钮最终的效果 上一篇我们介绍了充值规则的后台功能,有了基础的规则,在会员充值页面就可以显示具体的充值规则。本篇我们介绍一下会员充值的开发过程。 1 原型 充值页面我们是分为…...

内卷的中国智驾,合资品牌如何弯道超车?

作者 |德新 编辑 |王博 上海车展前夕,一汽丰田举办重磅车型bZ5的技术发布会,脱口秀演员庞博透露了这款车型的一大重要特性,其搭载来自Momenta的智能辅助驾驶系统行驶里程已经超过20亿公里。 携手中国科技公司提高车型智能化的属性&#xff…...

【go】go run-gcflags常用参数归纳,go逃逸分析执行语句,go返回局部变量指针是安全的

go官方参考文档&#xff1a; https://pkg.go.dev/cmd/compile 基本语法 go run 命令用来编译并运行Go程序&#xff0c;-gcflags 后面可以跟一系列的编译选项&#xff0c;多个选项之间用空格分隔。基本语法如下&#xff1a; go run -gcflags "<flags>" main.…...

数据库11(触发器)

触发器有三种类型&#xff0c;包括删除触发器&#xff0c;更新触发器&#xff0c;添加触发器 触发器的作用是&#xff1a;当某个表发生某个操作时&#xff0c;自动触发触发器&#xff0c;进行触发器规定的操作 触发器语句 create trigger tname --创建触发器 on aa --创建在表…...

十大物联网平台-物联网十大品牌

物联网十大品牌及平台解析 物联网&#xff08;IoT&#xff09;作为当下极具影响力的技术&#xff0c;正逐步渗透至社会各领域&#xff0c;为人们生活与社会发展带来诸多便利与变革。如今&#xff0c;众多企业投身于物联网行业&#xff0c;致力于推动其发展。以下是对物联网相关…...

心智模式VS系统思考

很多人常说&#xff0c;“改变自己&#xff0c;从改变思维开始。”但事实上&#xff0c;打破一个人的心智模式&#xff0c;远比想象中要困难得多。我们的思维方式、行为习惯&#xff0c;甚至是对世界的认知&#xff0c;往往是多年积累下来的产物。那些曾经的经历、长期的学习与…...

QT 打包安装程序【windeployqt.exe】报错c000007d原因:Conda巨坑

一、命令行执行命令 E:\Project\GNCGC\Bin\Win32\Vc22\RS422地检>E:\SoftWare\Qt\5.14.2\msvc2017\bin\windeployqt.exe CGC170.exe二、安装了Conda的朋友&#xff0c;巨坑 无语&#xff0c;E:\SoftWare\Qt\5.14.2\msvc2017\bin\windeployqt.exe 优先把Conda环境关联的Qt动…...

Vue3祖先后代组件数据双向同步实现方法

在 Vue3 中实现祖先后代组件的双向数据同步&#xff0c;可以通过组合式 API 的 provide/inject 配合响应式数据实现。以下是两种常见实现方案&#xff1a; 方案一&#xff1a;共享响应式对象 方法 html <!-- 祖先组件 --> <script setup> import { ref, provide…...

OpenBayes 一周速览|EasyControl 高效控制 DiT 架构,助力吉卜力风图像一键生成;TripoSG 单图秒变高保真 3D 模型

公共资源速递 10 个教程&#xff1a; * 一键部署 R1-OneVision * UNO&#xff1a;通用定制化图像生成 * TripoSG&#xff1a;单图秒变高保真 3D * 使用 VASP 进行机器学习力场训练 * InfiniteYou 高保真图像生成 Demo * VenusFactory 蛋白质工程设计平台 * Qwen2.5-0mni…...

服务器-conda下载速度慢-国内源

文章目录 前言一、解决问题&#xff1a;使用国内conda镜像下载&#xff08;差&#xff09;二、解决问题&#xff1a;使用pip下载(优)总结 前言 conda频道中有无效频道导致下载失败 一、解决问题&#xff1a;使用国内conda镜像下载&#xff08;差&#xff09; 步骤 1&#xff…...

python的pip download命令-2

当然可以,下面我详细解释一下 pip download 的作用、用法和技术原理。 🧠 一句话总结: pip download 是 pip 提供的一个命令,用来下载 Python 包及其依赖项的安装文件,但不会安装。 🔍 和 pip install 的区别: 命令作用是否安装是否联网典型用途pip install安装指定包…...

【Java设计模式及实践学习-第4章节-结构型模式】

第4章节-结构型模式 笔记记录 1. 适配器模式2. 代理模式3. 装饰器模式4. 桥接模式5. 组合模式6. 外观模式7. 享元模式8. 总结 1. 适配器模式 2. 代理模式 3. 装饰器模式 4. 桥接模式 5. 组合模式 6. 外观模式 7. 享元模式 Java语言中的String字符串就使用了享元模式&…...

python:mido 提取 midi文件中某一音轨的音乐数据

pip install mido 使用 mido库可以方便地处理 MIDI 文件&#xff0c;提取其中音轨的音乐数据。 1.下面的程序会读取指定的 MIDI 文件&#xff0c;并提取指定编号音轨的音乐数据&#xff0c;主要包括音符事件等信息。 编写 mido_extract.py 如下 # -*- coding: utf-8 -*- &…...

将输入帧上下文打包到下一个帧的预测模型中用于视频生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 论文发布于2025年4月17日 Abstract部分 在这篇论文中,FramePack是一种新提出的网络结构,旨在解决视频生成中的两个主要问题:遗忘和漂移。 具体来说,遗忘指的是在生成视…...

第六章:Multi-Backend Configuration

Chapter 6: Multi-Backend Configuration 从交响乐团到变形金刚&#xff1a;如何让代理适应不同环境&#xff1f; 在上一章任务工作流编排&#xff0c;我们学会了如何像指挥家一样协调任务。但就像变形金刚能切换不同形态应对环境变化一样&#xff0c;你的AI代理也需要能灵活切…...

tomcat远程Debug

tomcat远程Debug -- /bin目录下 catalina.bat文件下加一行 SET CATALINA_OPTS-server -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,servery,suspendn,address8088idea端配置如下...

Vue3:component(组件:uniapp版本)

目录 一、基本概述二、基本使用三、插槽 一、基本概述 在项目的开发过程中&#xff0c;页面上井场会出现一些通用的内容&#xff0c;例如头部的导航栏&#xff0c;如果我们每一个页面都去写一遍&#xff0c;那实在是太繁琐了&#xff0c;所以&#xff0c;我们使用组件来解决这…...

rust编程学习(三):8大容器类型

1简介 rust标准库std::collections也提供了像C STL库中的容器&#xff0c;分为4种通用的容器&#xff0c;8种类型&#xff0c;如下表所示。 线性容器类型&#xff1a; 名称简介Vec<T>内存空间连续&#xff0c;可变长度的数组&#xff0c;类似于C中Vector<T>容器…...

前端中阻止事件冒泡的几种方法

在 JavaScript 前端开发中&#xff0c;阻止事件冒泡是处理 DOM 事件时的常见需求。以下是几种阻止事件冒泡的方法&#xff1a; 1. 使用 event.stopPropagation() 这是最常用的阻止事件冒泡的方法。 element.addEventListener(click, function(event) {event.stopPropagation…...

ShenNiusModularity项目源码学习(20:ShenNius.Admin.Mvc项目分析-5)

ShenNiusModularity项目的系统管理模块主要用于配置系统的用户、角色、权限、基础数据等信息&#xff0c;上篇文章中学习的日志列表页面相对独立&#xff0c;而后面几个页面之间存在依赖关系&#xff0c;如角色页面依赖菜单页面定义菜单列表以便配置角色的权限&#xff0c;用户…...

前端js需要连接后端c#的wss服务

背景 前端js需要连接后端wss服务 前端&#xff1a;js 后端&#xff1a;c# - 控制台搭建wss服务器 步骤1 wss需要ssl认证&#xff0c;所以需要个证书&#xff0c;随便找一台linux的服务器&#xff08;windows的话&#xff0c;自己安装下openssl即可&#xff09;&#xff0c;…...

MAGI-1自回归式大规模视频生成

1. 关于 MAGI-1 提出 MAGI-1——一种世界模型&#xff08;world model&#xff09;&#xff0c;通过自回归方式预测一系列视频块&#xff08;chunk&#xff0c;固定长度的连续帧片段&#xff09;来生成视频。 模型被训练为在时间维度上单调递增噪声的条件下对每个块进行去噪&a…...

深入剖析TCP协议(内容一):从OSI与TCP/IP网络模型到三次握手、四次挥手、状态管理、性能优化及Linux内核源码实现的全面技术指南

文章目录 TCP网络模型OSI参考模型TCP/IP五层模型 TCP状态TIME_WAIT 连接过程TCP三次握手TCP四次挥手 TCP优化TCP三次握手优化TCP四次挥手优化TCP数据传输优化 TCP TCP是面向连接的、可靠的、基于字节流的传输层通信协议&#xff1a; 面向连接&#xff1a;一定是一对一才能连接…...

基于deepseek的模型微调

使用 DeepSeek 模型(如 DeepSeek-VL、DeepSeek-Coder、DeepSeek-LLM)进行微调,可以分为几个关键步骤,下面以 DeepSeek-LLM 为例说明,适用于 Q&A、RAG、聊天机器人等方向的应用。 一、准备工作 1. 环境依赖 建议使用 transformers + accelerate 或 LoRA 等轻量微调方…...

node.js 实战——(path模块 知识点学习)

path 模块 提供了操作路径的功能 说明path. resolve拼接规范的绝对路径path. sep获取操作系统的路径分隔符path. parse解析路径并返回对象path. basename获取路径的基础名称path. dirname获取路径的目录名path. extname获得路径的扩展名 resolve 拼接规范的绝对路径 const…...

【k8s】docker、k8s、虚拟机的区别以及使用场景

一、Docker &#xff08;一&#xff09;概念 Docker 是一个开源的应用容器引擎&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可实现虚拟化。 &#xff08;二&#xff09;隔离性 Docker 的隔离…...

校园外卖服务系统的设计与实现(代码+数据库+LW)

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;外卖信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…...

Windows上使用Python 3.10结合Appium-实现APP自动化

一、准备工作 所需条件&#xff1a; Windows 10/11 操作系统 Python 3.10.x&#xff08;建议3.10.9&#xff09; Java JDK 8 或以上&#xff08;建议JDK 8u301&#xff09; Node.js 14.x 或以上&#xff08;建议14.21.3&#xff09; Appium Server 1.22.x 或以上&#xff08;建…...

【计算机视觉】CV项目实战- SiamMask 单阶段分割跟踪器

SiamMask 单阶段分割跟踪器 一、项目概述与技术原理1.1 核心技术创新1.2 性能优势 二、实战环境搭建2.1 系统要求与依赖安装2.2 项目编译与配置 三、模型推理实战3.1 快速体验Demo3.2 常见运行时错误处理 四、模型训练指南4.1 数据准备流程4.2 训练执行与监控 五、高级应用与优…...

计算机视觉基础

1. 数字图像的基本概念 像素&#xff08;Pixel&#xff09;&#xff1a;图像的最小构成单元&#xff0c;每个像素存储亮度或颜色信息。 灰度图像&#xff1a;每个像素是 0&#xff08;黑&#xff09;~255&#xff08;白&#xff09; 的标量值&#xff08;8位无符号整数&#x…...

系统编程_进程间通信机制_消息队列与共享内存

消息队列概述 消息有类型&#xff1a;每条消息都有一个类型&#xff0c;就像每封信都有一个标签&#xff0c;方便分类和查找。消息有格式&#xff1a;消息的内容有固定的格式&#xff0c;就像每封信都有固定的信纸格式。随机查询&#xff1a;你可以按类型读取消息&#xff0c;…...

一种免费的离线ocr-汉字识别率100%

一般我们手机中常用的ocr库有&#xff0c;Tesseract&#xff0c;paddle ocr&#xff0c;EasyOCR&#xff0c; ocrLite等等&#xff0c;这些ocr库中百度的paddle ocr效果最好&#xff0c;但是再好的效果也会偶尔识别错几个汉字。当我们在做自动化脚本过程中&#xff0c;如果识别…...

Maven 工程中的pom.xml 文件(图文)

基本信息 单工程项目【pom.xml文件】中最基本的信息。 依赖引入 可以在Maven 中央仓库查找所需依赖&#xff1a;【直达&#xff1a;https://mvnrepository.com/】。 在【dependencies】标签中添加所需依赖。 <dependency><groupId>com.baomidou</groupId&g…...

图像预处理-模板匹配

就是用模板图在目标图像中不断的滑动比较&#xff0c;通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。 - 不会有边缘填充。 - 类似于卷积&#xff0c;滑动比较&#xff0c;挨个比较象素。 - 返回结果res大小是&#xff1a;目标图大小-模板图大小1&#xff08;H-…...

操作系统学习笔记

2.4 死锁 在学习本节时&#xff0c;请读者思考以下问题&#xff1a; 1&#xff09;为什么会产生死锁&#xff1f;产生死锁有什么条件&#xff1f; 2&#xff09;有什么办法可以解决死锁问题&#xff1f; 学完本节&#xff0c;读者应了解死锁的由来、产…...

5.4.云原生与服务网格

目录 1. Kubernetes与微服务集成 1.1 容器化部署规范 • 多环境配置管理&#xff08;ConfigMap与Nacos联动&#xff09; • 健康检查探针配置&#xff08;Liveness/Readiness定制策略&#xff09; 1.2 弹性服务治理 • HPA自动扩缩容规则设计 • Sentinel指标驱动弹性伸缩 2…...

[特殊字符]‍[特殊字符]Linux驱动开发入门 | 并发与互斥机制详解

文章目录 &#x1f468;‍&#x1f4bb;Linux驱动开发入门 | 并发与互斥机制详解&#x1f4cc;为什么驱动中需要并发和互斥控制&#xff1f;&#x1f4a1;常见的并发控制机制&#x1f510;自旋锁和信号量通俗理解&#x1f300;自旋锁&#xff08;Spinlock&#xff09;——“厕所…...

时序数据库IoTDB自研的Timer模型介绍

一、引言 时序数据库在支持时序特性写入、存储、查询等功能的基础上&#xff0c;正逐步向深度分析领域迈进。自动化异常监测与智能化趋势预测已成为时序数据管理的核心需求。为了满足这些需求&#xff0c;时序数据库IoTDB团队积极探索&#xff0c;成功自研推出了面向时间序列的…...

RabbitMQ 详解(核心概念)

本文是博主在梳理 RabbitMQ 知识的过程中&#xff0c;将所遇到和可能会遇到的基础知识记录下来&#xff0c;用作梳理 RabbitMQ 的整体架构和功能的线索文章&#xff0c;通过查找对应的知识能够快速的了解对应的知识而解决相应的问题。 文章目录 一、RabbitMQ 是什么&#xff1f…...

【数据结构和算法】6. 哈希表

本文根据 数据结构和算法入门 视频记录 文章目录 1. 哈希表的概念1.1 哈希表的实现方式1.2 哈希函数&#xff08;Hash Function&#xff09;1.3 哈希表支持的操作 2. Java实现 在前几章的学习中&#xff0c;我们已经了解了数组和链表的基本特性&#xff0c;不管是数组还是链表…...

RHCE第三次作业 搭建dns的正向解析服务器

server为服务器 client为客户端 设置主配置文件 在server下&#xff1a; [rootServer ~]#vim /etc/named.conf #进入到配置页面&#xff0c;并修改 设置区域文件 [rootServer ~]# vim /etc/named.rfc1912.zones 设置域名解析文件 [rootServer named]# cd /var/named…...

【每天一个知识点】如何解决大模型幻觉(hallucination)问题?

解决大模型幻觉&#xff08;hallucination&#xff09;问题&#xff0c;需要从模型架构、训练方式、推理机制和后处理策略多方面协同优化。 &#x1f9e0; 1. 引入 RAG 框架&#xff08;Retrieval-Augmented Generation&#xff09; 思路&#xff1a; 模型生成前先检索知识库中…...

Python深拷贝与浅拷贝:避开对象复制的陷阱

目录 一、为什么需要区分深浅拷贝&#xff1f; 二、内存中的对象真相 三、浅拷贝的真相 四、深拷贝的奥秘 五、自定义对象的拷贝 六、性能对比实验 七、常见陷阱与解决方案 八、最佳实践指南 九、现代Python的拷贝优化 结语 一、为什么需要区分深浅拷贝&#xff1f; …...

批量处理多个 Word 文档:插入和修改页眉页脚,添加页码的方法

Word 页眉页脚的设置在日常工作中非常常见&#xff0c;尤其是需要统一格式的文档&#xff0c;如毕业论文、公司内部资料等。在这些文档中&#xff0c;页眉页脚通常包含时间、公司标志、文档标题、文件名或作者姓名等信息。有时&#xff0c;我们不仅需要简单的文字页眉页脚&…...