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

无人机相关技术与故障排除笔记

无人机相关技术与故障排除笔记

本文档整理了关于无人机电调、电机、通信协议、传感器以及硬件故障排除相关的笔记和解释。

1. 电调 (ESC) PWM 输出初始化设置

初始化电调(电子调速器)的 PWM 输出功能时,设置 频率 400Hz分辨率 10000初始占空比 0,可以理解为:

  • 频率 400Hz: 每秒钟发送 400 次“开关信号”到电调,每次“开关周期”时长 2.5 毫秒(1 秒 / 400 次)。

  • 分辨率 10000: 每次“开关周期”内,能将高电平时间细分为 10000 个等级,最小调节精度为 0.01%(例如,占空比 50% 对应高电平持续 5000 个等级)。

  • 初始占空比 0: 初始状态下,PWM 信号始终为低电平(无输出),电机处于停转状态。

这组参数的意义在于:

  • 高频率: 确保电机响应快速且运行平稳(高频减少电流波动和噪音);

  • 高分辨率: 实现精细的转速控制(例如无人机姿态微调);

  • 初始占空比 0: 防止上电瞬间电机意外启动(安全保护机制)。

实现原理

  • 硬件基础

    • 电调通过 MOS 管桥电路(如三相全桥)将直流电转换为三相交流电,驱动无刷电机。

    • 微控制器(如 STM32)的定时器模块生成 PWM 信号,控制 MOS 管的通断顺序。

  • 参数配置流程

    • 频率设置:

      定时器时钟分频后,设定计数器周期为 时钟频率 / 400Hz。例如,若主频 72MHz,分频系数 720,则计数器周期为 72MHz / (720 * 400) = 250,即每 2.5ms 完成一次周期。

    • 分辨率 10000:

      将计数器最大值设为 10000,占空比范围为 0~10000。例如,占空比 5000 对应高电平占 50% 的周期时长(1.25ms 高电平 + 1.25ms 低电平)。

    • 初始占空比 0:

      初始化时,PWM 输出引脚保持低电平,电调未通电,电机静止。

  • 控制逻辑

    电调根据 PWM 占空比调整输出电压的平均值:占空比越大,等效电压越高,电机转速越快。通过霍尔传感器或反电动势检测转子位置,触发换相(六步换向法),维持磁场与转子的同步。

面试常见问题及答案

  1. 为什么选择 400Hz 的 PWM 频率?

    答案: 400Hz 平衡了控制精度与硬件负载。频率过低(如 50Hz)会导致电机振动和噪音;频率过高(如 20kHz)会增加 MOS 管开关损耗和电磁干扰。400Hz 适合中低速场景(如无人机电机),兼顾响应速度与效率。将 PWM 输出的频率设置在 400Hz 是为了便于计算周期和 PWM 分辨率,以及控制油门时换算出来是整数。

  2. 分辨率 10000 的作用是什么?

    答案: 高分辨率允许更精细的转速调节。例如,10000 级分辨率下,占空比每变化 1 级,等效电压变化仅 0.01%,适合需要精密控制的应用(如机器人关节电机)。但分辨率过高可能增加微控制器计算负担。

  3. 初始占空比为何设为 0?

    答案: 防止电调上电瞬间因误信号导致电机意外启动(安全保护)。需先完成电调初始化(如校准油门行程),再逐步增加占空比。

  4. 如何通过 PWM 实现电机反转?

    答案: 无刷电机需通过改变换相顺序实现反转。例如,将三相绕组通电顺序从 AB→AC→BC 改为 BA→CA→CB,或通过电调参数设置反转模式(需支持双向控制)。

  5. PWM 频率与电机极对数的关系?

    答案: PWM 频率需高于电机换向频率。例如,若电机极对数为 4,转速为 10000rpm,换向频率为 (10000rpm * 4极对数) / 60 ≈ 666Hz。此时 PWM 频率需显著高于 666Hz 以避免失步,通常选择 2~5 倍值(如 2kHz)。

总结

  • 核心逻辑: 通过微控制器生成高精度 PWM 信号,控制电调输出电压,驱动无刷电机按需运转。

  • 关键参数: 频率决定响应速度,分辨率影响控制精度,初始占空比保障安全性。

  • 实际应用: 无人机、机器人、工业自动化等领域依赖此类参数实现精准动力控制。

2. 无刷电机 (BLDC) 工作原理与六步换向法

核心原理

无刷电机通过电子换向取代传统电机的机械电刷,由定子(线圈绕组)和转子(永磁体)组成。定子通电产生磁场,吸引转子转动;通过六步换向法改变通电顺序,形成旋转磁场,推动转子持续旋转。

六步换向法详解

  • 为什么要六步换向?

    三相无刷电机有 3 组绕组(A/B/C),每次通电需选择其中两相,共 6 种组合:AB→AC→BC→BA→CA→CB(正向旋转)。通过这 6 种状态的循环切换,形成步进式旋转磁场,使转子连续转动。

  • 如何实现换向?

    • MOS 管控制: 每组绕组连接一对 MOS 管(上桥和下桥),通过开关组合控制电流方向。例如,通电状态“AB”表示 A 相上桥导通、B 相下桥导通,电流从 A 流到 B。

    • 换向时机: 根据转子位置切换通电组合。若使用霍尔传感器(安装在定子上),可实时检测转子磁场变化,触发换向信号。

  • 无传感器驱动怎么办?

    通过检测未通电绕组的反电动势判断转子位置,但启动时需先通过高频脉冲“盲推”转子转动,再逐步切换到反电动势检测模式。

外转子与内转子的区别

  • 外转子电机

    • 结构: 永磁体包裹在电机外侧,定子在内侧,结构紧凑。

    • 特点: 极数多、转矩大、转速低(几千转/分),适合航模、机器人关节等需要大扭矩的场景。

  • 内转子电机

    • 结构: 永磁体在内部,定子在外侧,散热更好。

    • 特点: 极数少、转速高(可达上万转/分)、转矩小,适合无人机、高速风扇。

航模为何选外转子?

航模螺旋桨需要大扭矩直接驱动,外转子结构无需减速齿轮,同时节省空间和重量。

面试常见问题及答案

  1. 六步换向为何需要霍尔传感器?

    答案: 霍尔传感器检测转子位置,确保换向时机与磁场同步。若未对齐,可能导致电机抖动或失步。

  2. 如何通过霍尔信号判断换向顺序?

    答案: 三个霍尔传感器间隔 120° 电角度安装,输出 6 种组合(如 001、011 等),每种组合对应一个换向步骤(如 AB、AC 等)。

  3. 外转子电机为何扭矩更大?

    答案: 外转子结构增大了永磁体与定子的作用半径,磁力臂更长,因此输出力矩更大。

  4. 如何实现电机反转?

    答案: 反转时换向顺序反向(如 AB→CB→CA→…),或通过调整霍尔信号相位。

  5. 无传感器驱动的难点是什么?

    答案: 启动时需强制转子转动以产生反电动势,且低速时反电动势微弱,易导致控制失效。需结合高频注入或观测器算法。

总结

  • 核心逻辑: 通过电子换向和磁场同步实现无刷电机高效运转,外转子适合大扭矩场景,内转子适合高转速场景。

  • 技术关键: 霍尔传感器定位、六步换向顺序、MOS 管驱动电路设计。

3. SPI 协议与 IIC 协议对比

核心原因 (SPI 比 IIC 快)

SPI 协议的速度优势主要源于其硬件设计和通信机制的特点:

  • 全双工通信

    SPI 使用独立的 MOSI(主发从收) 和 MISO(主收从发) 数据线,可同时发送和接收数据,实现 双向实时传输。IIC 仅通过一根 SDA 线半双工通信,同一时间只能单向传输数据。

  • 无协议层开销

    SPI 的通信流程简单,无需 地址帧 和 应答机制,直接传输数据。IIC 每次传输需先发送设备地址、读写位,且每个字节后必须等待从机应答(ACK/NACK),增加了时间开销。

  • 时钟频率更高

    SPI 的时钟频率由主机自由设定,理论上仅受硬件限制(可达几十 MHz 甚至更高)。IIC 的速率被协议严格限制:标准模式 100kHz、快速模式 400kHz、高速模式 3.4MHz。

  • 同步通信优化

    SPI 通过主控时钟(SCLK)严格同步数据传输,数据位直接由时钟边沿触发,无需等待总线空闲。IIC 需通过起始/停止信号协调总线占用,且时钟线(SCL)需与数据线(SDA)配合仲裁,降低效率。

通俗易懂的比喻

  • SPI 像高速公路: 双向车道(全双工),不限速(时钟频率高),收费站直接放行(无地址和应答)。

  • IIC 像市区道路: 单车道(半双工),限速(协议限制),每过一个路口要停车检查证件(地址和应答)。

实现原理对比

特性SPIIIC

通信方式

全双工(同时收发)

半双工(单向交替传输)

时钟控制

主机独占时钟,无速率限制

主机生成时钟,速率受协议限制

数据帧结构

纯数据位(无地址、应答)

地址帧 + 数据帧 + 应答位

硬件复杂度

需要 4 根线(SCLK, MOSI, MISO, CS)

仅需 2 根线(SDA, SCL)

多设备支持

需多根片选线(CS),扩展性差

通过地址寻址,支持多设备共享总线

面试常见问题及答案

  1. 为什么 SPI 比 IIC 快?

    答案: SPI 的全双工通信和无协议层开销是核心原因。具体包括:

    • 双向同时传输数据(IIC 只能单向交替传输);

    • 无需设备地址和应答机制,直接传输有效数据;

    • 时钟频率由硬件决定,无协议限制(IIC 最高仅 3.4MHz)。

  2. SPI 和 IIC 如何选择?

    答案:

    • 选 SPI: 需要高速(如 Flash 存储、显示屏)、全双工(如实时传感器数据交互)或硬件资源充足(能接受多引脚)的场景。

    • 选 IIC: 设备数量多(地址寻址)、引脚资源紧张(仅需 2 根线)或对功耗敏感(IIC 空闲时自动进入低功耗)的场景。

  3. SPI 的缺点是什么?

    答案:

    • 引脚占用多: 每增加一个从设备需额外片选线(CS);

    • 无错误检测: 无硬件级应答机制,需软件实现校验;

    • 无多主机支持: 仅支持单一主机控制总线。

  4. IIC 如何实现多设备通信?

    答案: 通过 7 位/10 位地址寻址。主设备发送目标从机地址,总线上所有从机比对地址,匹配者响应。例如:主设备发送地址 0x68,仅地址为 0x68 的从机应答并传输数据。

  5. SPI 如何提升传输速度?

    答案:

    • 提高时钟频率: 在硬件支持的范围内提升 SCLK 频率(如从 1MHz 提升到 10MHz);

    • 使用增强模式: 如 Dual SPI(双线传输)或 Quad SPI(四线传输),每个时钟周期传输 2/4 位数据;

    • 减少片选切换: 通过优化硬件设计减少 CS 线切换延迟。

总结

SPI 凭借全双工、高时钟频率和精简协议实现高速传输,适合对速度要求高的场景;IIC 则通过地址寻址和低引脚数更适合多设备、低功耗应用。理解两者的底层机制是优化通信设计的关键。

4. 气压传感器高度不准确的原因

利用气压传感器的气压数据和气压高度公式换算出来的高度不准确的原因是什么?

因为大气压强不仅与海拔高度有关,还与湿度,气温,晴阴,空气流动等因素有关,当我们使用固定的 P0 去计算是不对的,如果需要计算出准确的高度,我们需要实时联网去获取所在地区的 P0 值(这个值一般是开放的)然后带入公式计算。

5. 静态加速度传感器与飞机姿态

利用静态加速度传感器的数据能计算出来飞机的姿态信息吗?

可以,利用重力加速度正交分解可以得到飞机姿态的 Yaw(偏航),Pitch(俯仰),Roll(滚转)信息。

6. 无人机硬件故障排除与干扰分析

电机驱动板元件焊接(MOSFET, 二极管, 电阻)

电机驱动板 4 组 SMD 或表面贴装元件焊接 MOSFET 和肖特基续流二极管 10k 欧姆下拉电阻,MPU6050 直接与电源供电以获得稳定的电源。

通俗易懂解释:为什么要这样焊接 MOSFET 和二极管?
  1. MOSFET 的作用:电路的"电子开关"

    想象 MOSFET 就像一个自动水龙头:

    • 栅极 (G): 控制水流的开关按钮

    • 源极 (S): 水源(地线)

    • 漏极 (D): 出水口(连接负载)

      当你在栅极加电压时,水龙头打开;没电压时关闭。这就是用它控制电流流动的方式。

  2. 肖特基二极管的作用:电路的"安全气囊"

    二极管就像家里的保险丝:

    • 当电流突然反向流动时(比如电机急停产生感应电),它会快速导通把多余电流引走

    • 防止电流"逆流"损坏其他元件(类似汽车安全气囊在碰撞时瞬间弹出保护乘客)

  3. 10K 电阻的作用:电路的"稳定器"

    这个电阻像是个"守门人":

    • 始终让栅极和源极之间有个微弱连接(保持 MOSFET 关闭状态)

    • 防止电路干扰导致 MOSFET 意外开启(就像给门装个弹簧防止风吹自动开)

  4. 整体连接的意义

    • 所有源极接一起: 就像多个水龙头共用同一个水箱,保证水位一致

    • 二极管阴极相连: 确保所有元件的"安全气囊"并联工作,共同分担过压风险

    • 红线接电源: 统一供电入口,方便管理

  5. 实际场景举例

    假设你要控制三个 LED 灯轮流闪烁:

    • 每个 MOSFET 相当于控制一个灯的开关

    • 二极管保护灯不会因为突然断电而烧坏

    • 10K 电阻确保开关不会自己乱动

    • 所有灯共享同一个地线(就像家里所有电器插头都有地线孔)

  6. 为什么不能省略这些步骤?

    • 如果没有二极管:电机急停时产生的高压可能直接击穿 MOSFET

    • 如果没有下拉电阻:电路板静电可能导致 MOSFET 误触发

    • 如果不共地:不同部分的电压基准不一致,可能导致部分元件无法正常工作

类比总结:

这整套连接方式就像:

  • MOSFET = 自动水龙头(精准控制)

  • 二极管 = 安全阀(防止爆炸)

  • 电阻 = 保险栓(防止误触)

  • 共地/共电源 = 统一供水系统(保证压力均衡)

    通过这样的设计,你的电路既能精准控制,又能安全稳定运行,就像给机器装上了智能又安全的神经系统。

通俗易懂解释:肖特基二极管续流是什么?
  1. 先说什么是"续流"?

    想象你用手捏住水管关水龙头:

    • 当你突然松手时,水管里的水不会立刻停下,而是会继续冲一会儿(这就是"续流")

    • 在电路里,电流就像水流,当电源突然断开时,已经流动的电流需要"找个出口"继续流动

  2. 肖特基二极管的作用

    肖特基二极管就像一个"安全泄洪道":

    • 当电路正常工作时,它完全"隐形"(几乎不导电)

    • 当电路突然断电时,它立刻"打开",让电流找到出路

    • 防止电流"憋坏"其他元件(比如电感突然断电会产生高压)

  3. 实际场景举例

    例子 1:继电器线圈

    • 继电器里有线圈(类似电磁铁)

    • 断电时线圈会产生反向电动势(想维持电流)

    • 肖特基二极管此时导通,让电流从二极管流走,保护驱动电路

      例子 2:电机控制

    • 电机转动时相当于电感负载

    • 突然停转时电流会冲击电路

    • 二极管提供"逃生通道",让电流慢慢消失

  4. 为什么叫"续流"?

    • "续" = 继续

    • "流" = 电流

      就是让电流在断电后能"继续流动"一段时间,而不是突然中断

  5. 肖特基二极管的特殊优势

    • 速度快: 反应比普通二极管快 10 倍(像短跑冠军)

    • 低压降: 导电时损失的电压很小(像省油的跑车)

    • 适合高频: 能应付快速开关的电路(像电竞选手的反应速度)

  6. 类比总结

    • 普通二极管 = 普通水闸(反应慢,有漏水)

    • 肖特基二极管 = 高速电动水闸(瞬间开启,几乎不漏水)

    • 续流过程 = 水坝泄洪(有序引导水流,避免决堤)

  7. 如果没有续流会怎样?

    • 电感(如电机、线圈)会产生高压尖峰

    • 可能击穿其他元件(像水管爆裂)

    • 电路可能产生噪音/干扰(像水管抖动发出巨响)

一句话总结:

肖特基二极管续流就是在电路突然断电时,提供一个"安全出口"让电流继续流动,保护电路不被高压损坏,就像给急刹车的水流装个缓冲池。

无人机重置与干扰分析

您提出了一个非常关键的观察点!确实,无人机重置的根源通常是电源问题,但在这个具体场景中,我们需要区分两个现象:

重置的本质 vs 表现症状

(1)真正的重置(电源问题)

  • 现象: Arduino 突然断电重启(LED 闪烁、串口中断)

  • 原因: 电源不稳定(电压骤降/噪声干扰)

  • 验证方法: 用示波器监测 VCC 引脚,观察是否有毛刺

(2)姿态失控导致的"假重置"

  • 现象: 无人机像喝醉一样胡乱摆动,最终可能触发软件保护机制(类似"假死")

  • 原因: 陀螺仪被干扰后输出错误数据,控制器误判姿态

  • 关键区别: 此时 Arduino 仍在运行,但控制逻辑已混乱

为什么抬高陀螺仪能"阻止重置"?

场景还原

当电机干扰严重时:

  • 陀螺仪数据疯狂跳动 → 控制器误判姿态

  • 发出错误指令 → 电机剧烈抖动

  • 电机抖动加剧电源波动 → 最终触发真正的重置

抬高陀螺仪的作用

  • 短期效果: 切断干扰源 → 陀螺仪数据稳定 → 控制器不再发疯

  • 长期隐患: 姿态感知延迟 → 引发摆动(如前文所述)

根本解决方案

需要同时解决电源稳定性和传感器抗干扰问题。

为什么无人机开始左右摆动?

因为陀螺仪虽然"听不到"噪音了,但也失去了与电机的正确对话

  • 原本的协作关系:

    电机转动 → 机身倾斜 → 陀螺仪感知倾斜 → 发送信号给控制器调整

  • 现在的问题:

    陀螺仪位置太高 → 感知到的倾斜角度比实际慢半拍(像隔着枕头感受震动)

    控制器收到错误信号 → 不断反向修正 → 导致左右摆动(类似醉汉走路)

类比场景:

你蒙着眼睛站在晃动的船上,如果只靠头顶的传感器判断平衡,反而会走不稳!

铜片接地的双刃剑效应

✅ 好的一面:

铜片像电磁波的"吸尘器",吸走了干扰信号,让陀螺仪更专注工作

❌ 坏的一面:

如果铜片面积太大或位置不当,可能:

  • 屏蔽了正常信号: 把有用的姿态数据也挡住了

  • 改变了电磁场分布: 影响电机与控制器的"默契配合"

如何解决摆动问题?

方法 1:微调陀螺仪高度

像调节望远镜焦距一样,找到最佳位置:

  • 太低 → 仍受干扰

  • 太高 → 反应迟钝

  • 黄金位置: 离电机 1-2 厘米,且与电机轴线垂直

方法 2:优化铜片设计

把铜片剪成**"C 型"**:

  • 包围陀螺仪但不完全封闭(留个缺口朝向电机)

  • 既屏蔽噪音,又允许正常信号通过

方法 3:软件补偿

给控制器写个"纠错程序":

// 伪代码:根据摆动幅度动态调整修正力度
if(摆动超过阈值) {修正系数 = 0.8; // 减小修正强度
} else {修正系数 = 1.0;
}
关键经验
  • 传感器位置: 比你想象的更重要!就像狙击手的位置决定射击精度

  • 屏蔽要精准: 不是越多越好,而是"恰到好处"

  • 动态平衡: 硬件调整后必须配合软件优化

建议操作步骤
  1. 先用纸片临时固定陀螺仪在不同高度测试

  2. 铜片剪成 C 型后用胶水临时固定测试

  3. 记录摆动幅度变化,找到最佳位置

  4. 最后用热熔胶永久固定

这样既能防干扰,又能保持稳定飞行! 🚁

为什么电源问题通常更常见?

统计数据

  • 70%的无人机重置源于电源(尤其电机启动时)

  • 30%源于传感器干扰(需结合具体现象判断)

快速诊断技巧

现象可能原因检测方法

重置前 LED 闪烁

电源电压骤降

示波器测 VCC

重置后程序从头运行

看门狗触发

检查代码逻辑

重置前电机异响

电流尖峰

钳形表测电流

重置前姿态失控

传感器噪声

观察串口数据

完整解决方案流程图
关键结论
  • 重置 ≠ 姿态失控:

    • 真正的重置是系统级崩溃(电源/看门狗触发)

    • 姿态失控可能导致逻辑错误,但不一定是硬件重置

  • 抬高陀螺仪的双重作用:

    • 短期:减少干扰 → 防止控制器发疯

    • 长期:需配合电源加固才能根治

  • 诊断优先级:

pietitle 重置原因占比"电源问题" : 70"传感器干扰" : 20"软件BUG" : 10

建议操作步骤:

  1. 先用示波器确认是否真有电源重置。

  2. 如果没有硬件重启,则专注解决姿态问题。

  3. 最终目标:让无人机在电源和传感器双重稳固的基础上稳定飞行。

这样就能准确区分"真重置"和"假重置",针对性解决问题! 🚁💡

制作带有 FPV 相机的微型 Arduino 无人机 |Elektor 杂志

相关文章:

无人机相关技术与故障排除笔记

无人机相关技术与故障排除笔记 本文档整理了关于无人机电调、电机、通信协议、传感器以及硬件故障排除相关的笔记和解释。 1. 电调 (ESC) PWM 输出初始化设置 初始化电调(电子调速器)的 PWM 输出功能时,设置 频率 400Hz、分辨率 10000、初…...

SpringSecurity(自定义异常处理)

文末有本篇文章的项目源码可供下载学习。 在实际的项目开发过程中,我们对于认证失败或者授权失败需要像接口一样返回相同结构的json数据,这样可以让前端对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。 在SpringSecu…...

Java——反射

目录 5 反射 5 反射 类信息:方法、变量、构造器、继承和实现的类或接口。反射:反射是 Java 中一项强大的特性,它赋予了程序在运行时动态获取类的信息,并能够调用类的方法、访问类的字段以及操作构造函数等的能力。通过反射&#…...

本地玩AI绘画 | StableDiffusion安装到绘画

环境须知 Cuda必须安装 不需要安装Python,因为该项目会自动安装Python3.10的虚拟环境 1.下载StableDiffusionWebUI压缩包并解压 下载方式一: 从Github下载https://github.com/AUTOMATIC1111/stable-diffusion-webui 的压缩包,解压后名为…...

C++:书架

【描述】 John最近买了一个书架用来存放奶牛养殖书籍&#xff0c;但书架很快被存满了&#xff0c;只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000)&#xff0c;每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000)&#xff0c;N头奶牛的总高度为S。书架高度为B(1 ≤ B ≤ S <…...

project从入门到精通(四)

目录 日程表的设置和妙用 为日程表视图添加任务 用日程表视图的好处 ​编辑 查找任务的前置任务和后续任务 方法1&#xff1a;采用复合视图的方式 方法3&#xff1a;关系图法 方法4&#xff1a;通过任务路径的方式检查所选任务的前置任务 前置任务和驱动前置任务的区…...

git项目迁移,包括所有的提交记录和分支 gitlab迁移到gitblit

之前git都是全新项目上传&#xff0c;没有迁移过&#xff0c;因为迁移的话要考虑已有项目上的分支都要迁移过去&#xff0c;提交记录能迁移就好&#xff1b;分支如果按照全新项目上传的方式需要新git手动创建好老git已有分支&#xff0c;在手动一个一个克隆老项目分支代码依次提…...

基于STM32、HAL库的SST26VF064B NOR FLASH存储器驱动应用程序设计

一、简介: SST26VF064B是Microchip公司生产的一款64Mbit(8MB)串行闪存器件,采用SPI接口通信,具有以下特点: 工作电压:2.7-3.6V 最高104MHz时钟频率 统一4KB扇区结构 快速擦除和编程时间 低功耗特性 支持标准SPI、Dual SPI和Quad SPI模式 二、硬件接口: STM32L4引脚SST26V…...

【黑马JavaWeb+AI知识梳理】后端Web基础01 - Maven

Maven Maven核心 Maven概述 定义&#xff1a; Maven是一款用于管理和构建Java项目的工具&#xff0c;是apache旗下的一个开源项目&#xff0c;基于项目对象模型&#xff08;POM&#xff0c;project object model&#xff09;的概念&#xff0c;通过一小段描述信息来管理项目的…...

港大今年开源了哪些SLAM算法?

过去的5个月&#xff0c;香港大学 MaRS 实验室陆续开源了四套面向无人机的在线 SLAM 框架&#xff1a;**FAST-LIVO2 、Point-LIO&#xff08;grid-map 分支&#xff09; 、Voxel-SLAM 、Swarm-LIO2 **。这四套框架覆盖了单机三传感器融合、高带宽高速机动、长时间多级地图优化以…...

Spring框架(1)

Spring框架是Java企业级开发中最受欢迎的框架之一&#xff0c;它通过简化开发流程、降低耦合度&#xff0c;让开发者能够更专注于业务逻辑的实现。本文将带你了解Spring框架的核心概念和基本用法。 一、Spring框架简介 Spring是一个轻量级的开源Java开发框架&#xff0c;由Ro…...

边缘计算:技术概念与应用详解

引言 随着物联网&#xff08;IoT&#xff09;、5G 和人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;传统的云计算架构在处理海量数据和实时计算需求时逐渐显现出瓶颈。边缘计算&#xff08;Edge Computing&#xff09;作为一种新兴的计算范式&#xff0c;通过将计…...

Godot4.3类星露谷游戏开发之【昼夜循环】

千里之行&#xff0c;始于足下 文章目录 零、 笔记一、创造时间二、产生颜色三、搭建测试环境四、测试五、免费开源资产包 零、 笔记 为了让游戏可以拥有白天和黑夜&#xff0c;我们需要像上帝一样&#xff0c;在游戏中创造时间的规则&#xff0c;并在不同的时间点产生不同的颜…...

数据结构每日一题day17(链表)★★★★★

题目描述&#xff1a;假设有两个按元素值递增次排列的线性表&#xff0c;均以单链表形式存储。请编与算法将这两个单链表归并为一个按元素值依次递减排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。 算法思想&#xff1a; 1.初始化&#xff1a; 创建一个新…...

深入解析多线程与多进程:从理论到Python实践

一、并发编程的核心概念 1.1 多线程的本质与实现原理 多线程&#xff08;Multithreading&#xff09;是指在一个进程内创建多个执行流&#xff0c;共享同一进程资源&#xff08;如内存空间、文件句柄等&#xff09;的编程模型。其核心特征包括&#xff1a; ​​资源共享​​…...

当当网Top500书籍信息爬取与分析

爬取当当网的Top500书籍信息&#xff0c;并对书籍的评价数量进行排序&#xff0c;然后绘制前十名的条形图&#xff0c;然后对各个出版社出版的书籍数量进行排序&#xff0c;绘制百分比的饼图 # 导入所需的模块 import re # 正则表达式模块&#xff0c;用于提取文本中的特定模…...

Android Framework 记录之二

23、services目录 文件描述class AlarmManagerService extends IAlarmManager.Stub {//定时管理服务public class AppOpsService extends IAppOpsService.Stub { // 程序选项服务public class AppsLaunchFailureReceiver extends BroadcastReceiver { //app启动失败广播class A…...

RabbitMQ 幂等性与消息可靠性保障

一、引言 RabbitMQ 是一个广泛应用于软件开发、数据传输、微服务等领域的高效、可靠的开源消息队列系统1。在分布式系统中&#xff0c;保证消息的可靠传递和幂等性是至关重要的&#xff0c;它能够确保系统在各种复杂情况下的稳定性和数据的准确性。 二、消息可靠性保障 &…...

neo4j图数据库基本概念和向量使用

一.节点 1.新建节点 create (n:GroupProduct {name:都邦高保额团意险,description: "保险产品名称"} ) return n CREATE&#xff1a;Neo4j 的关键字&#xff0c;用于创建新节点或关系。 (n:GroupProduct)&#xff1a; n 是节点的临时别名&#xff08;变量名&#…...

修复笔记:获取 torch._dynamo 的详细日志信息

一、问题描述 在运行项目时&#xff0c;遇到与 torch._dynamo 相关的报错&#xff0c;并且希望获取更详细的日志信息以便于进一步诊断问题。 二、相关环境变量设置 通过设置环境变量&#xff0c;可以获得更详细的日志信息&#xff1a; set TORCH_LOGSdynamo set TORCHDYNAM…...

Windows平台下的Qt发布版程序打包成exe可执行文件(带图标)|Qt|C++

首先先找一个可执行文件的图标 可以去阿里的矢量图库里找 iconfont-阿里巴巴矢量图标库 找到想要的图标下载下来 此时的图标是png格式的&#xff0c;我们要转到icon格式的文件 要使用到一个工具Drop Icons_2.1.1.rar - 蓝奏云 生成icon文件后把icon文件放到你项目的根目录下…...

PDF解析新范式:Free2AI工具实测

在数字化浪潮中,PDF文件已成为企业、政府及个人存储与传递信息的核心载体。然而,PDF内容的提取与处理始终是行业痛点——无论是合同解析、研究报告整理,还是大规模知识库构建,传统方法常面临效率低、成本高、准确率不足等问题。Free2AI基于智能体技术与大模型算力,为PDF内…...

CSS--图片链接垂直居中展示的方法

原文网址&#xff1a;CSS--图片链接垂直居中展示的方法-CSDN博客 简介 本文介绍CSS图片链接垂直居中展示的方法。 图片链接 问题复现 源码 <html xml:lang"cn" lang"cn"><head><meta http-equiv"Content-Type" content&quo…...

聊聊Spring AI autoconfigure模块的拆分

序 本文主要研究一下Spring AI autoconfigure模块的拆分 v1.0.0-M6版本 (base) ➜ spring-ai-spring-boot-autoconfigure git:(v1.0.0-M6) tree -L 9 . ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── org │ │ │ └…...

【Elastsearch】如何获取已创建的api keys

『这种方法其实无法获取秘钥&#xff0c;只是获取了秘钥的名字等信息』 在Elasticsearch中&#xff0c;可以通过API获取已创建的API密钥&#xff08;API keys&#xff09;。以下是具体步骤和示例&#xff1a; 1.使用GET请求获取API密钥 Elasticsearch提供了GETAPI&#xff0c;用…...

Flutter异步原理-Future

前言 在 Dart 中&#xff0c;谈到异步就离不开 Future。无论是 .then()、还是 await&#xff0c;它们背后运作的都是一个私有实现类&#xff1a;_Future &#xff0c;我们平时使用的 Future 只是一个抽象接口&#xff0c;其真正的实现逻辑由_Future 承担。 class _Future<…...

TRAE 配置blender MCP AI自动3D建模

BlenderMCP - Blender模型上下文协议集成 BlenderMCP通过模型上下文协议(MCP)将Blender连接到Claude AI&#xff0c;允许Claude直接与Blender交互并控制Blender。这种集成实现了即时辅助的3D建模、场景创建和操纵。 1.第一步下载 MCP插件(addon.py):Blender插件&#xff0c;在…...

VUE2课程计划表练习

主要练习数据变量对象 以下是修正后的完整代码&#xff1a; //javascript export default {data() {return {list: [{ id: 1, subject: Vue.js 前端实战开发, content: 学习指令&#xff0c;例如 v-if、v-for、v-model 等, place: 自习室, status: false }// 可以在这里添加更…...

虚拟文件系统

虚拟文件系统&#xff08;Virtual File System&#xff0c;VFS&#xff09;是操作系统内核中的一个抽象层&#xff0c;它为不同的文件系统&#xff08;如ext4、NTFS、FAT32等&#xff09;提供统一的访问接口。通过VFS&#xff0c;用户和应用程序无需关心底层文件系统的具体差异…...

2025年软件工程与数据挖掘国际会议(SEDM 2025)

2025 International Conference on Software Engineering and Data Mining 一、大会信息 会议简称&#xff1a;SEDM 2025 大会地点&#xff1a;中国太原 收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、会议简介 2025年软件开发与数据挖掘国际会议于…...