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

PX4开始之旅(一)自动调参

核心知识点:无人机震动与滤波参数

1. 通俗易懂的解释

想象一下,你的无人机就像一个非常敏感的“听众”,它的“耳朵”就是陀螺仪和加速度计这些传感器,用来感知自己是如何移动和旋转的。理想情况下,它应该只“听”到你想要它做的动作(比如向前飞、向左倾斜)。

但是,无人机在飞行时难免会产生震动,就像有人在你“听”东西的时候在你耳边不停地小声说话一样。这些震动可能是桨叶不平衡、电机问题、机架不够硬等原因引起的。对于传感器来说,这些震动产生的信号就像是很多杂乱的“噪音”,和无人机实际的姿态变化信号混在一起了。

如果飞控系统直接使用这些带有大量“噪音”的传感器数据来控制电机,就会像一个“听不清”指令的人一样,做出错误的或不稳定的反应。比如,它可能会误以为自己在快速旋转,然后试图用电机去抵消这个“不存在”的旋转,结果反而引起电机输出的剧烈变化,导致飞机抖动、不稳定,甚至发热、耗电快。

“滤波”就像是给无人机的“耳朵”戴上了一个“降噪耳机”或“筛子”。它的作用是识别并去除传感器数据中的那些高频的、由震动引起的“噪音”,只留下那些低频的、代表无人机真实姿态变化的信号。

现实例子:

你用手机录一段视频,如果手非常抖,录出来的画面就会晃动得很厉害。很多视频编辑软件都有“防抖”功能,它通过分析视频帧之间的变化,识别出由于手抖引起的快速、小幅度的晃动,并将其消除或减轻,让画面看起来更稳定。无人机飞控中的滤波功能,就像是给传感器数据做“防抖处理”,滤掉震动带来的“晃动”数据。

2. 抽象理解

共性 (Abstract Understanding):

滤波是信号处理领域的一个基本概念,其抽象本质是根据信号的频率特性,选择性地允许或阻止特定频率成分通过。在无人机飞控中,传感器数据被视为一个包含不同频率成分的信号流:低频成分通常代表无人机整体的姿态和运动变化(我们关心的有用信号),而高频成分则往往是由电机、螺旋桨、机架共振等引起的震动噪声。

滤波器通过数学算法实现这一选择过程。常见的滤波器类型包括:

  • 低通滤波器 (Low-Pass Filter, LPF): 允许低于某个“截止频率”的信号通过,衰减高于截止频率的信号。用于去除高频噪声。

  • 高通滤波器 (High-Pass Filter, HPF): 允许高于某个“截止频率”的信号通过,衰减低于截止频率的信号。

  • 带通滤波器 (Band-Pass Filter, BPF): 允许某个频率范围内的信号通过。

  • 带阻滤波器 / 陷波滤波器 (Band-Stop Filter / Notch Filter): 衰减某个特定频率或频率范围内的信号,允许其他频率通过。特别适用于去除已知频率的窄带噪声,如特定转速下电机或桨叶产生的谐波震动。

在无人机飞控中,我们主要使用低通滤波器和陷波滤波器来处理传感器数据中的高频震动噪声。

潜在问题 (Potential Issues):

  1. 噪声与信号的权衡: 过滤得越彻底(例如,低通滤波器的截止频率设置得越低),去除的噪声越多,但同时也会衰减或引入延迟到有用的低频信号中。

  2. 控制延时 (Control Latency): 滤波器,特别是数字滤波器,需要处理一段时间内的数据才能产生输出,这会引入控制延时。延时会降低控制系统的响应速度,可能导致 PID 控制器参数无法设置得太高,影响控制精度和稳定性,甚至导致系统发散(失控)。

  3. 参数依赖性: 滤波器的效果和引入的延时都高度依赖于其参数设置(如截止频率、带宽)。不合适的参数可能导致滤波不足(噪声残留)或过度滤波(延时过大)。

  4. 动态变化: 震动频率和强度可能随电机转速、飞行姿态、载荷等因素动态变化。静态的滤波器参数可能无法完美适应所有工况。陷波滤波器尤其需要准确知道噪声频率。

  5. 计算资源消耗: 复杂的滤波算法需要计算资源,可能增加飞控主循环的计算负担,影响控制周期。

3. 实现的原理

无人机飞控中的滤波通常是基于数字信号处理技术实现的。传感器(如陀螺仪、加速度计)以一定的采样率采集数据,飞控软件对这些离散的数据序列应用滤波算法。

  1. 低通滤波器 (Low-Pass Filter, LPF):

    • 原理: 通过对一段时间内的传感器数据进行加权平均来平滑信号。简单来说,就是让当前时刻的输出值不仅取决于当前的输入值,还取决于之前一段时间的输入值或输出值。

    • 常见实现方法:

      • 滑动平均滤波器 (Moving Average Filter): 计算最近 N 个数据点的平均值作为当前输出。简单但会引入较大的延时和相位滞后。

      • 指数滑动平均滤波器 (Exponential Moving Average Filter, EMA): 当前输出是当前输入和上一个输出的加权平均。计算简单,延时相对较小,是飞控中常用的方法。其平滑程度由一个滤波系数(或等效的截止频率)决定。

      • 巴特沃斯滤波器 (Butterworth Filter) 等 IIR/FIR 滤波器: 更复杂的数字滤波器设计,可以实现更陡峭的频率响应,但在嵌入式系统中可能计算量较大。

    • PX4 参数 IMU_GYRO_CUTOFF / IMU_DGYRO_CUTOFF 这些参数配置了陀螺仪数据(包括 D 项)低通滤波器的截止频率。截止频率越低,滤除高频噪声效果越好,但延时越大。

  2. 陷波滤波器 (Notch Filter):

    • 原理: 设计用来衰减或消除某个特定频率的信号。它会创建一个在目标频率处有“陷落”的频率响应。

    • 实现方法: 通常使用二阶数字滤波器(如双二阶滤波器 BiQuad Filter)来实现。需要配置滤波器的中心频率和带宽。

    • PX4 参数 IMU_GYRO_NF0_FRQ / IMU_GYRO_NF0_BW 这些参数配置了陀螺仪数据的第一个陷波滤波器。FRQ 设置中心频率,BW 设置带宽(即衰减的频率范围)。通常将中心频率设置在主要的震动频率处(如电机/桨叶基频或其谐波)。

  3. 电机输出滑动滤波器 (MOT_SLEW_MAX):

    • 原理: 限制电机输出指令的变化速率。即使飞控内部计算出电机需要快速大幅度改变转速,这个滤波器也会限制每次更新时电机指令的最大变化量。

    • 作用: 可以平滑电机输出,减少由于高频噪声或控制不稳定导致的电机“抽搐”,保护电机和电调。但会引入额外的控制延时,通常在系统震动问题解决后才考虑使用,且不宜设置过低。

滤波器的参数调整是一个权衡的过程,需要在有效滤除噪声和最小化控制延时之间找到平衡点。通常需要结合飞行日志分析,识别主要的震动频率,并根据试飞情况逐步调整滤波参数。

4. 实现代码 (示例)

以下是一个简单的 Python 示例,演示如何实现一个基本的一阶指数滑动平均(EMA)低通滤波器。这是一种在嵌入式系统中常用的简单低通滤波方法。

import matplotlib.pyplot as plt
import numpy as np# 模拟带有噪声的传感器数据
# 生成一个低频正弦信号作为“真实”信号
time = np.linspace(0, 10, 500) # 10秒,500个数据点
true_signal = np.sin(time * 2 * np.pi * 0.5) # 0.5 Hz 正弦波# 生成高频噪声
noise = np.random.randn(len(time)) * 0.5 # 随机噪声
high_freq_noise = np.sin(time * 2 * np.pi * 20) * 0.3 # 20 Hz 正弦噪声
noisy_signal = true_signal + noise + high_freq_noise# --- 一阶指数滑动平均 (EMA) 低通滤波器实现 ---def ema_low_pass_filter(data, alpha):"""应用一阶指数滑动平均低通滤波器。Args:data (list or numpy.array): 输入的原始数据序列。alpha (float): 平滑因子,介于 0 和 1 之间。alpha 越接近 0,滤波越强(截止频率越低),延时越大。alpha 越接近 1,滤波越弱(截止频率越高),延时越小。alpha = dt / (RC + dt),其中 RC 是时间常数,dt 是采样间隔。或者 alpha = 1 - exp(-dt / RC)更直观地,alpha 与截止频率 fc 的关系近似为 alpha ≈ 2 * pi * fc * dt所以 fc ≈ alpha / (2 * pi * dt)或者 alpha ≈ 1 / (1 + 1 / (2 * pi * fc * dt))这里我们直接使用 alpha 作为参数。Returns:list: 滤波后的数据序列。"""if not data:return []filtered_data = [data[0]] # 初始化第一个滤波值为第一个原始数据点for i in range(1, len(data)):# EMA 公式: filtered_value = alpha * current_input + (1 - alpha) * previous_filtered_valuefiltered_value = alpha * data[i] + (1 - alpha) * filtered_data[-1]filtered_data.append(filtered_value)return filtered_data# --- 应用滤波器 ---
# 选择不同的 alpha 值来观察滤波效果
alpha_weak = 0.5  # 滤波较弱,延时小
alpha_strong = 0.1 # 滤波较强,延时大filtered_signal_weak = ema_low_pass_filter(noisy_signal, alpha_weak)
filtered_signal_strong = ema_low_pass_filter(noisy_signal, alpha_strong)# --- 绘图对比 ---
plt.figure(figsize=(12, 8))plt.plot(time, true_signal, label='真实信号', color='blue', linestyle='--')
plt.plot(time, noisy_signal, label='带噪声信号', color='red', alpha=0.6)
plt.plot(time, filtered_signal_weak, label=f'EMA 滤波 (alpha={alpha_weak})', color='green')
plt.plot(time, filtered_signal_strong, label=f'EMA 滤波 (alpha={alpha_strong})', color='purple')plt.xlabel("时间 (秒)")
plt.ylabel("信号值")
plt.title("低通滤波效果对比")
plt.legend()
plt.grid(True)
plt.show()# --- 陷波滤波器概念说明 (无代码实现,因其复杂性) ---
# 陷波滤波器通常需要知道要滤除的特定频率。
# 在无人机中,可以通过分析传感器数据的频谱(例如使用 FFT)来找到主要的震动频率。
# 然后配置陷波滤波器的中心频率和带宽来衰减这些频率。
# 实现一个通用的陷波滤波器需要更复杂的数字信号处理知识和代码(如设计 BiQuad 滤波器)。
# 在 PX4 等飞控中,这些滤波器已经实现,用户只需要配置相应的频率和带宽参数。
print("\n--- 陷波滤波器概念 ---")
print("陷波滤波器用于滤除特定频率的窄带噪声,例如电机或桨叶在特定转速下产生的谐波震动。")
print("需要通过频谱分析等方法确定噪声频率,然后配置滤波器的中心频率和带宽。")
print("在实际飞控代码中,这通常通过配置 BiQuad 等数字滤波器参数来实现。")

代码解释:

  1. 模拟数据: 生成了一个包含低频真实信号、随机噪声和高频正弦噪声的模拟传感器数据序列,以模拟无人机传感器接收到的带有震动噪声的数据。

  2. ema_low_pass_filter 函数: 实现了一阶指数滑动平均滤波算法。alpha 参数控制滤波的强度。alpha 越小,滤波器对历史数据的权重越大,平滑效果越明显,但引入的延时也越大。

  3. 应用滤波器: 使用不同的 alpha 值对带噪声信号进行滤波,得到滤波后的信号。

  4. 绘图: 将原始真实信号、带噪声信号以及不同滤波强度的滤波后信号绘制出来,直观地展示低通滤波对高频噪声的衰减和平滑效果,以及不同滤波强度带来的差异。

  5. 陷波滤波器说明: 简单介绍了陷波滤波器的概念和用途,但没有提供具体的代码实现,因为其实现比 EMA 滤波器复杂,通常在飞控固件中作为成熟模块提供。

这个示例代码展示了低通滤波“平滑”数据的基本原理。在实际飞控中,使用的滤波器类型和阶数可能更复杂,参数也需要更精细的调整。

5. 实际应用和场景

滤波参数的调整在无人机飞控调试中是一个关键环节,直接影响飞机的飞行性能、稳定性和硬件健康。其主要应用和场景包括:

  1. 提升飞行稳定性: 有效滤除震动噪声可以确保飞控系统接收到更“干净”的姿态和角速率数据,从而使姿态控制器能够更准确、平滑地工作,减少不必要的电机抖动,提高飞行稳定性,尤其是在悬停和慢速飞行时。

  2. 实现精确控制: 对于需要精确执行任务的无人机(如航拍、测绘、喷洒),准确的传感器数据是实现精确路径跟踪、定点悬停的基础。合适的滤波可以减少噪声对控制精度的干扰。

  3. 保护硬件: 过大的震动噪声会导致电机输出指令频繁剧烈变化,这会使电机和电调工作在非高效状态,产生额外热量,长期可能导致硬件过热甚至损坏。适当的滤波可以平滑电机输出,延长硬件寿命。

  4. 延长续航时间: 电机输出的频繁剧烈变化会增加能量消耗。通过滤波减少这种不必要的动作,可以提高能源利用效率,延长无人机的续航时间。

  5. 优化 PID 参数调优: 如您所提到的,在调优 PID 参数之前先处理好滤波问题非常重要。一个干净的传感器信号是调出高性能 PID 参数的前提。如果噪声很大,即使 PID 参数调整得再好,也难以获得理想的控制效果。

  6. 适应不同机架和硬件: 不同的机架设计、电机、螺旋桨和安装方式会产生不同的震动特性。通过调整滤波参数,可以将飞控系统更好地适配到具体的硬件平台,发挥最佳性能。

  7. 应对环境变化: 虽然静态滤波参数有局限性,但在一定程度上,合适的滤波设置可以帮助系统更好地应对风、气流等引起的干扰,这些干扰也可能在传感器数据中表现为特定频率的成分。

在实际调参过程中,通常需要结合飞行日志分析(例如查看陀螺仪数据的频谱),识别主要的噪声频率和强度,然后有针对性地调整低通滤波器(IMU_GYRO_CUTOFF)和陷波滤波器(IMU_GYRO_NF0_FRQ, IMU_GYRO_NF0_BW)的参数。权衡滤波效果和控制延时是关键,通常需要多次试飞和日志分析来找到最佳参数组合。同时,优化硬件减震也是降低震动、减轻滤波压力的重要手段。

相关文章:

PX4开始之旅(一)自动调参

核心知识点:无人机震动与滤波参数 1. 通俗易懂的解释 想象一下,你的无人机就像一个非常敏感的“听众”,它的“耳朵”就是陀螺仪和加速度计这些传感器,用来感知自己是如何移动和旋转的。理想情况下,它应该只“听”到你…...

C++ 中 lower_bound 与 upper_bound 函数详解

C 中 lower_bound 与 upper_bound 函数详解 文章目录 C 中 lower_bound 与 upper_bound 函数详解**一、核心定义与区别****二、使用条件与时间复杂度****三、实际应用场景****四、注意事项与常见误区****五、代码示例****六、总结** 一、核心定义与区别 lower_bound 作用&#…...

minio数据迁移(两台服务器没法相互通信)

场景描述: A服务器 无法访问 B服务器,B服务器 也无法访问 A(即双方都不能通过公网或内网直连对方) MinIO 官方提供了 mc(MinIO Client)命令行工具,可以直接实现 Bucket 之间的数据迁移: 安装 …...

O2OA(翱途)开发平台系统安全-用户登录IP限制

O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]支持对指定的用户设置可以连接的客户端计算机的IP地址,以避免用户在不安全的环境下访问系统。本篇主要介绍如何开启O2OA用户登录IP限制。 一、先决条件: 以拥有管理员权限的用户账号登录O2OA(翱途)开发平…...

CSS flex:1

在 CSS 中,flex: 1 是一个用于弹性布局(Flexbox)的简写属性,主要用于控制 flex 项目(子元素)如何分配父容器的剩余空间。以下是其核心作用和用法: 核心作用 等分剩余空间:让 flex …...

OpenHarmony平台驱动开发(十一),PIN

OpenHarmony平台驱动开发(十一) PIN 概述 功能简介 PIN即管脚控制器,用于统一管理各SoC的管脚资源,对外提供管脚复用功能。 基本概念 PIN是一个软件层面的概念,目的是为了统一对各SoC的PIN管脚进行管理&#xff0…...

.NET高频技术点(持续更新中)

1. .NET 框架概述 .NET 框架的发展历程.NET Core 与 .NET Framework 的区别.NET 5 及后续版本的统一平台 2. C# 语言特性 异步编程(async/await)LINQ(Language Integrated Query)泛型与集合委托与事件属性与索引器 3. ASP.NET…...

Spring Cloud - 2( 12000 字详解 Spring Cloud)

一:服务注册和服务发现 - Eureka 1.1 背景 在上一章节的例子中,我们可以看到远程调用时 URL 被硬编码,这导致在更换机器或新增机器时,相关的 URL 需要进行相应的变更。这就需要让所有相关服务去修改 URL,随之而来的就…...

解决Win11下MySQL服务无法开机自启动问题

问题描述 在win11系统中,明明将MySQL服务设置成了自动启动,但在重启电脑后MySQL服务还是无法自动启动,每次都要重新到计算机管理的服务中找到服务再手动启动。 解决方式 首先确保mysql服务的启动类型为自动。 设置方法:找到此电…...

RGB矩阵照明系统详解及WS2812配置指南

RGB矩阵照明系统详解及WS2812配置指南 一、RGB矩阵照明简介 RGB矩阵照明是一种强大的功能,允许使用外部驱动器驱动的RGB LED矩阵为键盘增添绚丽的灯光效果。该系统与RGBLIGHT功能无缝集成,因此您可以使用与RGBLIGHT相同的键码来控制它,操作…...

全球首款无限时长电影生成模型SkyReels-V2本地部署教程:视频时长无限制!

一、简介 SkyReels-V2 模型集成了多模态大语言模型(MLLM)、多阶段预训练、强化学习以及创新的扩散强迫(Diffusion-forcing)框架,实现了在提示词遵循、视觉质量、运动动态以及视频时长等方面的全面突破。通过扩散强迫框…...

代理ARP与传统ARP在网络通信中的应用及区别研究

一些问题 路由器隔离广播域,每个接口/网段都是独立的广播域ARP请求是二层广播包,广播包没法通过路由器ARP请求没法穿越互联网到达目标主服务器 一些思考 电脑访问互联网服务器的时候,ARP询问的内容,真的是访问服务器么&#xf…...

理解 Envoy 的架构

理解 Envoy 的架构对于深入理解 Istio 至关重要,因为 Envoy 是 Istio 数据平面的核心。Envoy 是一个高性能的 C 分布式代理,设计为云原生应用和大规模微服务架构的网络基础。 以下是 Envoy 架构的关键组成部分和核心理念: 核心设计理念&…...

使用Kotlin Flow实现Android应用的响应式编程

在Android应用中使用Kotlin Flow实现响应式编程可以分为以下步骤,结合最佳实践和生命周期管理: 1. 添加依赖 在build.gradle中确保包含协程和生命周期相关依赖: dependencies {implementation("org.jetbrains.kotlinx:kotlinx-corouti…...

【AI提示词】蝴蝶效应专家

提示说明 一位专注于分析和优化蝴蝶效应现象的专业人士,擅长将微小变化转化为系统级影响的研究者。 提示词 # Role: 蝴蝶效应专家## Profile - language: 中文 - description: 一位专注于分析和优化蝴蝶效应现象的专业人士,擅长将微小变化转化为系统级…...

StreamRL:弹性、可扩展、异构的RLHF架构

StreamRL:弹性、可扩展、异构的RLHF架构 大语言模型(LLMs)的强化学习(RL)训练正处于快速发展阶段,但现有架构存在诸多问题。本文介绍的StreamRL框架为解决这些难题而来,它通过独特设计提升了训…...

架构进阶:大型制造业企业数据架构顶层设计总体规划方案【附全文阅读】

本文概述了一个大型企业数据架构设计的总体规划方案,针对当前数据架构与管理中存在的诸多问题,如缺乏统一数据模型、数据分析应用体系不健全、主数据管理体系不完善、数据治理体系缺失等,提出了明确的改进目标与实施路径。 数据架构设计思路聚焦于明确数据分布和流向…...

前端指南——项目代码结构解析(React为例)

文件结构 文件项目 ├── doc │ ├── technology.md ├── node_modules ├── public ├── shell ├── src │ ├── auto-generated │ │ ├── apis │ │ ├── models │ ├── components │ │ ├── 组件A │ │ ├── 组件B …...

Redis-数据一致性问题与解决方案

Redis-数据一致性问题与解决方案 引言 Redis 是一个高性能的内存数据库,广泛应用于缓存、会话存储、实时分析等场景。作为一个 NoSQL 数据库,它的高性能和丰富的数据结构使其成为现代微服务架构中不可或缺的组件。然而,在高并发的环境下&am…...

【数据结构】算法的复杂度

前言:经过了C语言的学习,紧接着就步入到数据结构的学习了。在C语言阶段我们在写大多数的oj题的时候会遇到一些问题,就是算法的效率低使用的时间较多,占用的空间也多,数据结构就是来优化算法的。 文章目录 一&#xff…...

Leetcode刷题 由浅入深之字符串——541. 反转字符串Ⅱ

目录 (一)反转字符串Ⅱ的C实现 写法一(s.begin()遍历字符) (二)复杂度分析 时间复杂度 空间复杂度 (三)总结 【题目链接】541. 反转字符串Ⅱ - 力扣&am…...

制造单元智能化改造与集成技术平台成套实训设备

制造单元智能化改造与集成技术平台成套实训设备 一、概述: 本设备以汽车行业的轮毂为产品对象,实现了仓库取料、制造加工、打磨抛光、检测识别、分拣入位等生产工艺环节,以未来智能制造工厂的定位和需求为参考,通过工业以太网完成…...

Vscode 顶部Menu(菜单)栏消失如何恢复

Vscode 顶部Menu(菜单)栏消失如何恢复 https://blog.csdn.net/m0_62964247/article/details/135759655 Vscode 顶部Menu(菜单)栏消失如何恢复? 首先按一下 Alt按键,看一下是否恢复了菜单栏 如果恢复了想了解更进一步的设置,或是没能恢复菜单…...

苍穹外卖--公共字段自动填充

1.问题分析 业务表中的公共字段: 问题:代码冗余、不便于后期维护 2.实现思路 自定义注解AutoFill,用于标识需要进行公共字段填充的方法 自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公…...

行业 |四大痛点待破:“拆解”DeepSeek一体机

繁荣DeepSeek一体机市场。 2025年开年,DeepSeek大模型掀起的一体机热潮席卷中国AI市场。这款一体机凭借其“开箱即用”的便利性和极低的门槛,吸引了大量企业关注,尤其是在中小企业和行业创新者中,更是成为了新晋“顶流”。 无论…...

革新锅炉厂智能控制——Ethernet IP转CANopen协议网关的工业互联新方案

锅炉厂智能化转型的必经之路 在工业4.0时代,锅炉厂作为能源供应的核心环节,正面临智能化升级的迫切需求。传统锅炉控制系统往往因协议不兼容、数据孤岛问题导致效率低下、维护成本高昂。如何实现设备间高效协同?如何让老旧设备融入智能网络&…...

基于卷积神经网络和Pyqt5的猫狗识别小程序

任务描述 猫狗分类任务(Dogs vs Cats)是Kaggle平台在2013年举办的一个经典计算机视觉竞赛。官方给出的Kaggle Dogs vs Cats 数据集中包括由12500张猫咪图片和12500张狗狗图片组成的训练集,12500张未标记照片组成的测试集。选手需要在规定时间…...

Baklib知识中台引领服务智能跃迁

智能架构重构服务范式 Baklib 知识中台通过全量数据融合与多模态处理能力,重塑企业服务底层逻辑。基于分布式架构设计,平台将分散在业务系统、文档库及外部渠道的非结构化数据进行智能清洗与语义解析,形成标准化的知识元数据池。通过四库体系…...

【Python】超全常用 conda 命令整理

Conda命令整理文档,结合官方指南与高频使用场景分类说明,每个命令都有对应的解释 一、环境管理 1. 创建环境 基本创建conda create --name my_env # 创建名为my_env的空环境 conda create -n my_env python3.11 # 指定Python版本 conda creat…...

FreeRTOS菜鸟入门(十四)·事件

目录 1. 基本概念 2. 应用场景 3. 运作机制 4. 控制块 5. 事件函数接口 5.1 事件创建函数 xEventGroupCreate() 5.2 事件删除函数 vEventGroupDelete() 5.3 事件组置位函数 xEventGroupSetBits()(非中断) 5.4 事件组置位函数 xEventGr…...

setData执行后操作方法-微信小程序

在微信小程序中,setData 是异步执行的,如果你需要在 setData 执行完毕后执行某些操作,可以通过以下几种方式实现: 1. 使用 setData 的回调函数 从基础库 2.2.3 开始,setData 支持传入回调函数,回调会在数据…...

SpringAI特性

一、SpringAI 顾问(Advisors) Spring AI 使用 Advisors机制来增强 AI 的能力,可以理解为一系列可插拔的拦截器,在调用 AI 前和调用 AI 后可以执行一些额外的操作,比如: 前置增强:调用 AI 前改…...

捌拾叁- 量子傅里叶变换

1. 前言 最近公司地震,现在稍微有点时间继续学习。 看了几个算法,都说是基于 量子傅里叶变换 ,好,就是他了 Quantum Fourier。 2. 傅里叶变换 大学是学通信的,对于傅里叶变换还是有所理解的。其实就是基于一个 时域…...

SSTI模版注入

1、概念 SSTI是一种常见的Web安全漏洞,它允许攻击者通过注入恶意模板代码,使服务器在渲染模板时执行非预期的操作。 (1)渲染模版 至于什么是渲染模版:服务器端渲染模板是一种Web开发技术,它允许在服务器端…...

33、前台搜索功能怎么实现?

输入搜索的东西,如果为空 如果有 前端是提交表单,方式是 post 后端接受 调用 mybatisplus的categoryService.getById 用户在搜索框内输入关键字之后,执行 js 中的 load方法,前端提交表单, 后端 controller 中的loa…...

量化解析美英协议的非对称冲击:多因子模型与波动率曲面重构

摘要:基于机器学习算法对市场微观结构的实时监测,黄金价格在3300美元/盎司附近展开技术性反弹。本文通过多因子分析框架,解析美元指数上行、贸易政策突变及资产配置迁移对贵金属市场的复合影响,并构建基于LSTM神经网络的动态支撑位…...

对PyTorch模块进行性能分析

以下是针对PyTorch模块进行性能分析的完整方法与工具指南,结合了多种优化策略和实际应用场景: 一、PyTorch性能分析工具 PyTorch Profiler • 功能:内置的性能分析工具,支持捕获CPU/GPU操作、内存分配、数据形状及硬件利用率。 …...

lvm详细笔记

LVM简介 逻辑卷管理器,是Linux 系统中用于管理磁盘储存的关键技术。 LVM 则打破了磁盘分区一旦确定,其大小调整往往较为复杂,且难以灵活应对业务变化这种限制,它允许用户将多个物理分区组合卷组。例如,系统中的多个物…...

OpenHarmony 以太网卡热插拔事件接口无效

目录 1.背景 2.解决方案 1.背景 在OpenHarmony中调用以太网热插拔时间,发现热插拔没有任何回调,如下接口 import { ethernet } from kit.NetworkKit;ethernet.on(interfaceStateChange, (data: object) > {console.log(on interfaceSharingStateCha…...

SPDK NVMe of RDMA 部署

使用SPDK NVMe of RDMA 实现多NVMe设备共享 一、编译、安装spdk 1.1、下载 1.1.1 下载spdk源码 首先,我们需要从GitHub上克隆SPDK的源码仓库。打开终端,输入以下命令: git clone -b v22.01 https://github.com/spdk/spdk.git cd spdk1.1.2…...

Go语言的逃逸分析是怎么进行的

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

纯净IP,跨境账号稳定的底层逻辑

在跨境业务快速扩张的背景下,越来越多的卖家、营销人、数据团队都开始使用代理IP来实现全球网络触达。然而,账号封禁问题始终如影随形,而背后的一个“隐性元凶”常常被忽视——纯净IP的缺失。本文将从实战角度出发,带你深入了解什…...

编译日志:关于编译opencv带有ffmpeg视频解码支持的若干办法

编译日志:关于编译opencv带有ffmpeg视频解码支持的若干办法 前言 ​ 笔者这里是封装了简单的OpenCV视频播放抽象,然后却发现移植到Ubuntu和开发板上都罢工的事情,原来是Windows平台下我们是默认下载了ffmpeg的库的,但是在泛Linu…...

djinn: 3靶场渗透

djinn: 3 来自 <https://www.vulnhub.com/entry/djinn-3,492/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.243 3&#xff0…...

WHAT - 简单服务发现

文章目录 简单理解举个例子简单服务发现方式1. 静态配置&#xff08;最简单&#xff0c;但不灵活&#xff09;2. DNS 发现3. 使用服务注册中心&#xff08;稍高级&#xff09; 总结 “简单服务发现”&#xff08;Simple Service Discovery&#xff09;通常指的是一种让系统中的…...

auto推导类型原则

auto 是 C11 引入的类型自动推导关键字&#xff0c;它允许编译器根据表达式的类型来推导变量的确切类型。虽然使用 auto 可以让代码更简洁&#xff0c;但理解它的类型推导规则非常关键&#xff0c;尤其是在涉及指针、引用、const、模板等场景时。 ✅ 一、基本推导原则 auto x …...

44.辐射发射整改简易摸底测试方法

辐射发射整改简易摸底测试方法 1. 正式摸底预测试2. 简易方法预测试3. 分析频谱4. 探查传播路径5. 施加措施6. 与简易方法预测试效果对比 1. 正式摸底预测试 去正式实验室做一次预测试&#xff0c;取得频谱图&#xff1b;确定超标频点和超标量&#xff08;备用&#xff09;。 …...

初识C++:入门基础(二)

概述&#xff1a;该篇博客主要介绍C的缺省函数、函数重载、和引用等知识。 目录 1. 缺省参数 2. 函数重载 3. 引用 3.1 引用的概念和定义 3.2 引用的特性 3.3 引用的使用 3.4 const引用 3.5 指针和引用的关系 4. nullptr 5. 小结 1. 缺省参数 缺省参数是声明或定义函…...

我国脑机接口市场规模将破38亿元,医疗领域成关键突破口

当人类仅凭"意念"就能操控无人机编队飞行&#xff0c;当瘫痪患者通过"脑控"重新站立行走&#xff0c;这些曾只存在于科幻电影的场景&#xff0c;如今正通过脑机接口技术变为现实。作为"十四五"规划中重点发展的前沿科技&#xff0c;我国脑机接口…...

笔记,麦克风的灵敏度

麦克风的“灵敏度&#xff08;Sensitivity&#xff09;”决定了它捕捉声音细节的能力。想象麦克风是一只有耳朵的生物。高灵敏度麦克风像长着“超级顺风耳”的精灵&#xff0c;能听见花瓣飘落的声音、远处树叶的沙沙声&#xff0c;甚至你心跳的微弱震动。适合录音棚里捕捉歌手的…...