【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式
目录
#1、IMU
#2、磁力计
#3、高度
#典型配置
#4、气压计
#静压位置误差修正
#气压计偏置补偿
#5、全球导航系统/全球定位系统--GNSS/GPS
#位置和速度测量
#偏航测量
#GPS 速度的偏航
#双接收器
#GNSS 性能要求
#6、测距
#条件范围辅助-Conditional range aiding
#范围高度融合
#测距仪障碍物检测
#7、空速
#8、合成侧滑
#9、使用阻力比力的多旋翼风力估计
#10、光流
#11、外部视觉系统
使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量并提供状态的估计
参考:Using the ECL EKF | PX4 Guide (v1.15)
EKF使用哪些传感器测量?
EKF 具有不同的作模式,允许不同的传感器测量组合。 启动时,过滤器检查传感器的最小可行组合,在完成初始倾斜、偏航和高度对准后,进入提供旋转、垂直速度、垂直位置、IMU 角度偏差和 IMU 速度偏差估计的模式。
此模式需要 IMU 数据、偏航源(磁力计或外部视觉)和高度数据源。 所有 EKF作模式都需要这个最小数据集。然后,可以使用其他传感器数据来估计其他状态。
#1、IMU
- 三轴体以最小 100Hz 的速率固定惯性测量单元 delta 角度和 delta 速度数据。 注意:在 EKF 使用 IMU delta 角度数据之前,应将其应用于 IMU delta 角度数据。
#2、磁力计
需要最小速率为 5Hz 的三轴体固定磁力计数据(或外部视觉系统姿态数据)。
磁力计数据可以通过两种方式使用:
- 磁力计测量值使用倾斜估计和磁偏角转换为偏航角。 然后,偏航角被 EKF 用作观测值。
- 这种方法不太准确,并且不允许学习体坐标系场偏移,但它对磁异常和大型启动陀螺仪偏差更可靠。
- 这是启动和接地期间使用的默认方法。
- XYZ 磁力计读数用作单独的观测值。
- 这种方法更准确,但需要正确估计磁力计偏置。
- 当无人机旋转时可以观察到偏差,当无人机加速(线性加速)时可以观察到真实航向。
- 由于偏差可以变化并且仅在移动时才能观察到,因此在不移动时切换回航向融合会更安全。
- 它假设地球磁场环境变化缓慢,当存在明显的外部磁异常时,性能较差。
- 这是车辆移动时使用的默认方法。
- 这种方法更准确,但需要正确估计磁力计偏置。
用于选择这些模式的 logic 由 EKF2_MAG_TYPE 参数设置。 建议使用默认的 “自动 ”模式(),因为它在地面上使用更坚固的磁力计偏航,并在移动时使用更精确的 3 轴磁力计。 始终设置 '3-axis' 模式()更容易出错,并且需要所有 IMU 都经过良好校准。EKF2_MAG_TYPE=0
EKF2_MAG_TYPE=2
该选项可以在没有磁力计的情况下运行,方法是使用双天线 GPS 的偏航来替换磁力计,或使用 IMU 测量和 GPS 速度数据来估计无人机运动的偏航。
#3、高度
高度数据源 - GPS、气压、测距仪、外部视觉或这些的组合,最小速率为 5Hz。
如果不存在任何选定的测量,则 EKF 将不会启动。 当检测到这些测量值时,EKF 将初始化状态并完成倾斜和偏航对齐。 当倾斜和偏航对准完成时,EKF 可以过渡到其他作模式,从而允许使用额外的传感器数据:
每个高度源都可以使用其专用的控制参数来启用/禁用:
- GNSS/GPS:EKF2_GPS_CTRL
- 气压计:EKF2_BARO_CTRL
- 测距仪:EKF2_RNG_CTRL
- 外部视觉:当 EKF2_HGT_REF 设置为 “视觉” 时启用
从长远来看,高度估计遵循高度数据的“参考来源”。 此引用由 EKF2_HGT_REF 参数定义。
#典型配置
EKF2_GPS_CTRL | EKF2_BARO_CTRL | EKF2_RNG_CTRL | EKF2_HGT_REF | |
---|---|---|---|---|
室外 (默认) | 7 (纬度/纬度/alt/vel) | 1 (已启用) | 1 (有条件的) | 1 个 (GNSS) |
室内(非平坦地形) | 0 (禁用) | 1 (已启用) | 1 (有条件的) | 2 (范围) |
室内(平坦地形) | 0 (禁用) | 1 (已启用) | 2 (始终启用) | 2 (范围) |
外部视野 | 根据需要 | 根据需要 | 根据需要 | 3 (视野) |
#4、气压计
启用/禁用使用 EKF2_BARO_CTRL 作为高度数据源。
请注意,即使有多个气压计可用,也只会融合来自一个气压计的数据。 首先选择具有最高优先级值的气压计CAL_BAROx_PRIO,如果检测到传感器故障,则回退到下一个最高优先级的气压计。 如果气压计的优先级相等,则使用第一个检测到的气压计。 通过将气压计的值设置为 (disabled),可以完全禁用气压计作为可能的源。CAL_BAROx_PRIO
0
请参阅 高度 有关高度源配置的更多详细信息。
#静压位置误差修正
气压高度受车辆风、相对速度和方向引起的空气动力学干扰产生的误差的影响。 这在航空学中称为静压位置误差。 使用 ECL/EKF2 估计器库的 EKF2 模块提供了一种补偿这些误差的方法,前提是风速状态估计处于活动状态。
对于在固定翼模式下运行的飞行器,风速状态估计需要启用 Airspeed 和/或 Synthetic Sideslip 融合。
对于多旋翼,可以启用和调整阻力比力 的融合,以提供所需的风速状态估计。
EKF2 模块将误差建模为一个物体固定的椭球体,它指定了在气压中增加/减去的动压分数 - 在转换为高度估计之前。
按如下方式获得良好的调优:
-
在位置模式下在静止和最大速度之间反复向前/向后/向左/向右/向上/向下飞行一次(在静止条件下进行此测试时获得最佳结果)。
-
例如,使用以下方法提取日志文件:
.ulg
QGroundControl: 分析 > 日志下载(打开新窗口)注意
相同的日志文件可用于调整多旋翼风力估算器。
-
将日志与baro_static_pressure_compensation_tuning.py (打开新窗口)Python 脚本来获取最佳参数集。
调优参数:
- EKF2_PCOEF_XP
- EKF2_PCOEF_XN
- EKF2_PCOEF_YP
- EKF2_PCOEF_YN
- EKF2_PCOEF_Z
#气压计偏置补偿
由于环境压力环境的变化或传感器温度的变化,恒定高度的气压计的测量值会发生漂移。 为了补偿这个测量误差,EKF2 使用 GNSS 高度(如果有)一个 “非漂移 ”参考来估计偏差。 无需调整。
#5、全球导航系统/全球定位系统--GNSS/GPS
#位置和速度测量
如果满足以下条件,则 GPS 测量值将用于位置和速度:
- 通过设置 EKF2_GPS_CTRL 参数来启用 GPS 使用。
- GPS 质量检查已通过。 这些检查由 EKF2_GPS_CHECK 和 参数 控制。
EKF2_REQ_*
有关高度源配置的更多详细信息,请单击此处。
#偏航测量
一些 GPS 接收器(例如Trimble MB-Two RTK GPS 接收器 (打开新窗口)可用于提供航向测量,以取代磁力计数据的使用。 当在存在大型磁异常的环境中工作时,或者在地球磁场具有较高倾角的纬度上工作时,这可能是一个显著的优势。 通过在 EKF2_GPS_CTRL 参数中将位位置 3 设置为 1(加 8)来启用 GPS 偏航测量。
#GPS 速度的偏航
EKF 在内部运行一个额外的多假设滤波器,该滤波器使用多个 3 态扩展卡尔曼滤波器 (EKF),其状态为 NE 速度和偏航角。 然后使用高斯和滤波器 (GSF) 组合这些单独的偏航角估计值。 单个 3 态 EKF 使用 IMU 和 GPS 水平速度数据(加上可选的空速数据),并且不依赖于偏航角或磁力计测量的任何先验知识。 这为主滤波器的偏航提供了备份,并在起飞后导航丢失表明磁力计的偏航估计很糟糕时,用于重置主 24 态 EKF 的偏航。 这将在 GCS 上产生消息信息消息。Emergency yaw reset - magnetometer use stopped
当 ekf2 重放记录使能时,来自此估计器的数据将被记录下来,并且可以在消息中查看。 来自单个 3 状态 EKF 偏航估计器的单个偏航估计值在字段中。 GSF 综合偏航估计值正在现场。 GSF 偏航估计值的方差在字段中。 所有角度均以弧度为单位。 GSF 对单个 3 态 EKF 输出施加的权重在字段中。yaw_estimator_status
yaw
yaw_composite
yaw_variance
weight
这也使得在没有任何磁力计数据或双天线 GPS 接收器的情况下运行成为可能,前提是在起飞后可以进行一些水平移动以使偏航变得可观察。 要使用此功能,请将 EKF2_MAG_TYPE 设置为 (5) 以禁用磁力计。 一旦飞行器执行了足够的水平运动以使偏航可观察,主的 24 态 EKF 就会将其偏航与 GSF 估计对齐并开始使用 GPS。none
#双接收器
来自 GPS 接收器的数据可以使用一种算法进行混合,该算法根据报告的精度对数据进行加权(如果两个接收器以相同的速率输出数据并使用相同的精度,则效果最佳)。 如果来自接收器的数据丢失,该机制还提供自动故障转移(例如,它允许使用标准 GPS 作为更准确的 RTK 接收器的备份)。 这由 SENS_GPS_MASK 参数控制。
SENS_GPS_MASK 参数默认设置为禁用混合并始终使用第一个接收器,因此必须设置它以选择使用哪些接收器精度指标来决定每个接收器输出对混合解决方案的贡献。 在使用不同的接收器模型时,将 SENS_GPS_MASK 参数设置为使用两个接收器都支持的准确性指标的值非常重要。 例如,不要将位位置 0 设置为 ,除非两个接收方的驱动程序在消息的字段中发布可比较的值。 由于定义精度的方式不同,例如CEP与1-sigma等,来自不同制造商的接收器可能很难做到这一点。true
s_variance_m_s
vehicle_gps_position
在设置过程中应检查以下项目:
- 验证第二个接收器的数据是否存在。 这将被记录为,也可以在使用 命令 通过 nsh 控制台连接时进行检查。 需要正确设置 GPS_2_CONFIG 参数。
vehicle_gps_position_1
listener vehicle_gps_position -i 1
- 检查来自每个接收器的 和 数据,并确定可以使用哪些准确度指标。 如果两个接收器都输出敏感和数据,并且 GPS 垂直位置不直接用于导航,则建议将 SENS_GPS_MASK 设置为 3。 如果只有数据可用且两个接收器都不输出数据,请将 SENS_GPS_MASK 设置为 2。 仅当使用 EKF2_HGT_REF 参数选择 GPS 作为参考高度源并且两个接收器都输出敏感数据时,才会设置位位置 2。
s_variance_m_s
eph
epv
s_variance_m_s
eph
eph
s_variance_m_s
epv
- 混合接收器数据的输出记录为 ,并且可以在通过 nsh 终端连接时使用命令 进行检查。
ekf_gps_position
listener ekf_gps_position
- 当接收器以不同的速率输出时,混合输出将以较慢的接收器的速率。 在可能的情况下,接收器应配置为以相同的速率输出。
#GNSS 性能要求
要使 ECL 接受 GNSS 数据进行导航,需要在一段时间内满足某些最低要求,由 EKF2_REQ_GPS_H 定义(默认为 10 秒)。
最小值在 EKF2REQ* 参数中定义,每个检查都可以使用 EKF2_GPS_CHECK 参数启用/禁用。
下表显示了根据 GNSS 数据直接报告或计算的不同指标,以及 ECL 要使用的数据所需的最小值。 此外,“平均值”列显示了可能从标准 GNSS 模块(例如 u-blox M8 系列)合理获得的典型值 - 即被认为良好/可接受的值。
度量 | 最低要求 | 平均值 | 单位 | 笔记 |
---|---|---|---|---|
弗 | < 3 (EKF2_REQ_EPH) | 0.8 | m | 水平位置误差的标准差 |
EPV | < 5 (EKF2_REQ_EPV) | 1.5 | m | 垂直位置误差的标准差 |
卫星数 | ≥6 (EKF2_REQ_NSATS) | 14 | - | |
萨克 | < 0.5 (EKF2_REQ_SACC) | 0.2 | 米/秒 | 水平速度误差的标准偏差 |
修复类型 | ≥ 3 | 4 | - | 0-1:无固定,2:2D 固定,3:3D 固定,4:RTCM 代码差分,5:实时运动,浮点,6:实时运动,固定,8:外推 |
PDOP | < 2.5 (EKF2_REQ_PDOP) | 1.0 | - | 精度的位置稀释 |
HPOS 漂移率 | < 0.1 (EKF2_REQ_HDRIFT) | 0.01 | 米/秒 | 根据报告的 GNSS 位置计算的漂移率(静止时)。 |
VPOS 漂移率 | < 0.2 (EKF2_REQ_VDRIFT) | 0.02 | 米/秒 | 根据报告的 GNSS 高度计算的漂移率(静止时)。 |
HSPD | < 0.1 (EKF2_REQ_HDRIFT) | 0.01 | 米/秒 | 报告的 GNSS 水平速度的过滤幅度。 |
VSPD | < 0.2 (EKF2_REQ_VDRIFT) | 0.02 | 米/秒 | 报告的 GNSS 垂直速度的过滤量级。 |
注意
的 和 是在 10 秒的时间内计算的,并发布在主题中。 请注意,它不会被记录下来!
hpos_drift_rate
vpos_drift_rate
hspd
ekf2_gps_drift
ekf2_gps_drift
#6、测距
测距仪到地面的距离由单个状态过滤器用于估计地形相对于高度基准面的垂直位置。
融合作模式由EKF2_RNG_CTRL控制:
- 条件范围辅助-Conditional range aiding
- 范围高度融合-Range height fusion
有关高度源配置的更多详细信息,请单击此处。
#条件范围辅助-Conditional range aiding
条件测距仪融合(又名条件测距辅助)在低速/低空作期间(除了其他主动高度源)激活测距仪融合以进行高度估计。
如果测距仪设置为参考高度源(使用 EKF2_HGT_REF),则其他有效高度源(例如气压和 GNSS 高度)将调整其测量值,以匹配测距仪随时间变化的读数。
当不满足启动范围辅助的条件时,将自动选择次级引用。
注意
在高度参考之间切换会导致绝对高度估计随时间漂移。 在位置模式下飞行时,这不是问题,但如果无人机应该在特定的 GNSS 高度执行任务,则可能会出现问题。 如果不需要绝对高度漂移,建议将 GNSS 高度设置为高度参考,即使使用条件范围辅助也是如此。
它主要用于起飞和着陆,在气压计设置导致旋翼清洗干扰过大并可能破坏 EKF 状态估计的情况下。
当车辆静止时,也可以使用辅助测距装置来改善高度保持。
提示
建议使用 Terrain Hold 而不是 Range Aid 进行地形保持。
这是因为地形保持使用普通的 ECL/EKF 估计器来确定高度,在大多数情况下,这通常比距离传感器更可靠。
通过设置 EKF2_RNG_CTRL = “Enabled (conditional mode)” (1) 来启用条件范围辅助。
它可以使用参数进一步配置:EKF2_RNG_A_
- EKF2_RNG_A_VMAX:最大水平速度,超过该速度时将禁用测距辅助。
- EKF2_RNG_A_HMAX:最大高度,超过该高度将禁用测距辅助。
- EKF2_RNG_A_IGATE:Range Aid 一致性检查 “gate” (禁用 Range Aid 之前的误差度量)。
#范围高度融合
PX4 允许您连续融合测距仪作为高度源(在任何飞行模式/车辆类型中)。 这对于保证无人机仅在近乎平坦的表面(例如室内)上飞行的应用可能很有用。
使用距离传感器作为高度源时,乘客应注意:
-
飞越障碍物可能会导致估计器拒绝测距仪数据(由于内部数据一致性检查),这可能导致估计器完全依赖加速度计估计时高度保持不佳。
注意
当车辆以离地面近乎恒定的高度爬上斜坡时,可能会发生这种情况,因为测距仪高度不会发生变化,而从加速度计估计的高度会发生变化。
EKF 执行创新一致性检查,考虑测量和当前状态之间的误差,以及状态的估计方差和测量本身的方差。 如果检查失败,测距仪数据将被拒绝,并且将根据加速度计和其他选定的高度源(GNSS、气压、视觉)(如果启用且可用)估计高度 如果距离传感器是活动源 oh height 数据,则在 5 秒的数据不一致后,估算器会重置高度状态以匹配当前距离传感器数据。
如果一个或多个其他高度源处于活动状态,则测距仪被宣布为故障,估算器继续使用其他传感器估计其高度。 测量值也可能再次变得一致,例如,如果飞机下降,或者如果估计的高度漂移以匹配测得的测距仪高度。
-
本地 NED 原点将随地面上下移动。
-
在不平坦的表面(例如树木)上的测距仪性能可能非常差,从而导致数据嘈杂和不一致。 这再次导致高度保持不佳。
通过将 EKF2_RNG_CTRL 设置为 “Enabled” (2) 来启用该功能。 要使测距仪在激活时成为高度参考,请将:EKF2_HGT_REF设置为“距离传感器”。
提示
要仅在无人机静止时启用测距仪融合(以便在起飞和降落期间获得更好的高度估计),但在其余时间不熔断测距仪,请使用 EKF2_RNG_CTRL 的条件模式 (1)。
#测距仪障碍物检测
EKF 可以使用垂直速度估计和测距仪数据的数值导数之间的运动学一致性检查来检测测距仪对地路径是否被阻挡(可能被有效载荷)。 如果测距仪在统计上与 EKF2 不一致,则传感器在剩余的飞行过程中被拒绝,除非统计测试以 0.5m/s 或更高的垂直速度再次通过至少 1 秒。
仅当测距仪未用作主要高度源时,才会启用该检查,并且仅在机体未水平移动时激活(因为它假定静态地面高度)。
为了有效地进行障碍物检测,需要使用飞行数据严格调整测距仪噪声参数。 然后可以调整运动学一致性门参数以获得所需的故障检测灵敏度。
调优参数:
- EKF2_RNG_NOISE
- EKF2_RNG_K_GATE
#7、空速
等效空速 (EAS) 数据可用于估计风速,并通过将 EKF2_ARSP_THR 设置为正值来减少 GPS 丢失时的漂移。 当空速数据超过EKF2_ARSP_THR正值设置的阈值且机体类型不是旋翼时,将使用空速数据。
#8、合成侧滑
固定翼平台可以利用假设的零侧滑观测来改进风速估计,还可以在没有空速传感器的情况下进行风速估计。 通过将 EKF2_FUSE_BETA 参数设置为 1 来启用此功能。
#9、使用阻力比力的多旋翼风力估计
多旋翼平台可以利用空速和沿 X 和 Y 体轴的阻力之间的关系来估计风速的北/东分量。 这可以使用 EKF2_DRAG_CTRL 来启用。
沿 X 和 Y 体轴的空速和比力(IMU 加速度计测量值)之间的关系由 EKF2_BCOEF_X、EKF2_BCOEF_Y 和 EKF2_MCOEF 参数控制,这些参数分别设置在 X 和 Y 方向上飞行的弹道系数,以及螺旋桨产生的动量阻力。 特定力观察噪声的量由 EKF2_DRAG_NOISE 参数设置。
按如下方式获得良好的调优:
- 在位置模式下在静止和最大速度之间反复向前/向后/向左/向右/向上/向下飞行一次(在静止条件下进行此测试时获得最佳结果)。
- 例如,使用QGroundControl: 分析 > 日志下载(打开新窗口)
注意
相同的 .ulg 日志文件也可用于调整静压位置误差系数。
- 将日志与mc_wind_estimator_tuning.py (打开新窗口)Python 脚本来获取最佳参数集。
#10、光流
如果满足以下条件,将使用光流数据:
- 提供有效的测距仪数据。
- EKF2_OF_CTRL 已设置。
- 流量传感器返回的质量指标大于 EKF2_OF_QMIN 参数设置的最低要求。
#11、外部视觉系统
可以使用来自外部视觉系统(例如 Vicon)的位置、速度或方向测量。
通过将 EKF2_EV_CTRL 的相应位设置为 :true
0
:水平位置数据1
:垂直位置数据。 高度源还可以使用 EKF2_HGT_REF 进行配置(参见 高度 部分)。2
:速度数据3
:偏航数据
请注意,如果使用偏航数据(位 3),则航向是相对于外部视觉框架的;否则,航向是相对于北方的。
EKF 考虑了视觉姿态估计中的不确定性。 这些不确定性信息可以通过 MAVLink 中的协方差字段发送里程计 (打开新窗口)消息,也可以通过参数 EKF2_EVP_NOISE、 EKF2_EVV_NOISE 和 EKF2_EVA_NOISE 进行设置。 您可以使用 EKF2_EV_NOISE_MD 选择不确定性的来源。
相关文章:
【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式
目录 #1、IMU #2、磁力计 #3、高度 #典型配置 #4、气压计 #静压位置误差修正 #气压计偏置补偿 #5、全球导航系统/全球定位系统--GNSS/GPS #位置和速度测量 #偏航测量 #GPS 速度的偏航 #双接收器 #GNSS 性能要求 #6、测距 #条件范围辅助-Conditional range aidin…...
常见的raid有哪些,使用场景是什么?
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种将多个物理硬盘组合成一个逻辑硬盘的技术,目的是通过数据冗余和/或并行访问提高性能、容错能力和存储容量。不同的 RAID 级别有不同的实现方式和应用场景。以下…...
《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路
一、引言 在 C 编程的世界里,类型是一切的基础。我们为 int 写一个求最大值的函数,为 double 写一个相似的函数,为 std::string 又写一个……看似合理的行为,逐渐堆积成了难以维护的 “函数墙”。这些函数逻辑几乎一致࿰…...
EasyRTC打造无人机低延迟高清实时通信监控全场景解决方案
一、方案背景 随着无人机技术的飞速发展,其在航拍、物流配送、农业监测、应急救援等多个领域的应用日益广泛。然而,无人机在实际作业过程中面临着诸多挑战,如通信延迟、数据传输不稳定、监控范围有限等。EasyRTC作为一种高效、低延迟的实时通…...
【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)
【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出) 引言 本文使用状态空间模型实现失业率递归预测,状态空间模型(State Space Model, SSM)是一种用于描述动态系统行为的…...
关于大数据的基础知识(三)——数据安全与合规
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(三&a…...
从信息泄露到内网控制
0x01 背景 之前常见用rce、文件上传等漏洞获取webshell,偶然遇到一次敏感信息泄露获取权限的渗透,简单记录一下过程。 0x02 信息泄露 发现系统某端口部署了minio服务,经过探测发现存在minio存储桶遍历 使用利用工具把泄露的文件全部整理一…...
【Qt】QDialog类
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 对话框 - QDialog 🦋 基本介绍🦋 对话框分类🦋 Qt 内置对话框🎀 QMessageBox -消息对话框🎀 QColo…...
【Spring Boot基础】MyBatis的基础操作:增删查改、列名和属性名匹配 -- XML实现
MyBatis的基础操作 1. MyBatis XML配置文件1.1 简单介绍1.2 配置连接字符串和MyBatis1.3 XMl文件实现--分层1.4 XMl文件实现--举例 2.增删改查操作2.1 增(insert)2.1.1 不使用Param2.1.2 用Param2.1.3 返回自增键 2.2 删(delete)2…...
谷歌推出探索型推荐新范式:双LLM架构重塑用户兴趣挖掘
文章目录 1. 背景1.1 闭环困境1.2 谷歌的两次失败尝试1.2.1 尝试一:轻量微调1.2.2 尝试二:RLHF 强化学习微调 1.3 双LLM范式的提出1.3.1 模型1:Novelty LLM — 负责生成“探索方向”1.3.2 模型2:Alignment LLM — 负责评估“相关性…...
Linux kernel signal原理(下)- aarch64架构sigreturn流程
一、前言 在上篇中写到了linux中signal的处理流程,在do_signal信号处理的流程最后,会通过sigreturn再次回到线程现场,上篇文章中介绍了在X86_64架构下的实现,本篇中介绍下在aarch64架构下的实现原理。 二、sigaction系统调用 #i…...
使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
RAG(Retrieval Augmented Generation,检索增强生成) 是一种结合了信息检索与生成式大语言模型(LLM)的技术。它的核心思想是:在生成模型输出内容之前,先从外部知识库或数据源中检索相关信息&…...
【Linux】46.网络基础(3.3)
文章目录 5. 其他重要协议或技术5.1 DNS(Domain Name System)5.1.1 DNS背景5.1.2 域名简介 5.2 ICMP协议5.2.1 ICMP功能5.2.2 ICMP的报文格式5.2.3 ping命令5.2.4 一个值得注意的坑5.2.5 traceroute命令 5.3 NAT技术5.3.1 NAT技术背景5.3.2 NAT IP转换过程5.3.3 NAPT5.3.4 NAT技…...
【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南
图片为AI生成 一、前言 随着Unity在XR领域全面转向OpenXR标准,越来越多的开发者选择使用OpenXR来构建跨平台的VR应用。但在项目实际部署中发现:打包成的EXE程序无法正常启动SteamVR,或者SteamVR未能识别到该应用。本文将以“Unity OpenXR …...
【sylar-webserver】重构 增加内存池
文章目录 内存池设定结构ThreadCacheCentralCachePageCache allocatedeallocate测试 参考 https://github.com/youngyangyang04/memory-pool 我的代码实现见 https://github.com/star-cs/webserver 内存池 ThreadCache(线程本地缓存) 每个线程独立的内存…...
云账号安全事件分析:黑客利用RAM子账户发起ECS命令执行攻击
事件背景 某企业云监控系统触发高危告警,提示API请求中包含黑客工具特征(cf_framework),攻击者试图通过泄露的RAM子账户凭据调用ECS高危API。以下是攻击关键信息整理: 字段详情告警原因API请求包含黑客工具特征(cf_framework)攻击实体RAM子账户 mq泄露凭证AccessKey ID…...
Node.js 模块导入的基本流程
Node.js 模块导入的基本流程,主要是 CommonJS 模块加载机制(即使用 require())的内部执行步骤。下面我用清晰的结构给你梳理一下这个过程: ✅ Node.js 模块导入的基本流程(使用 require()) const someModu…...
Unitest和pytest使用方法
unittest 是 Python 自带的单元测试框架,用于编写和运行可重复的测试用例。它的核心思想是通过断言(assertions)验证代码的行为是否符合预期。以下是 unittest 的基本使用方法: 1. 基本结构 1.1 创建测试类 继承 unittest.TestC…...
wps批量修改字体
选择这个小箭头 找到需要修改的字体如正文,右击修改选择合适的字体确定即可...
【Linux网络】各版本TCP服务器构建 - 从理解到实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
航电系统多模态融合技术要点
一、技术要点 1. 多模态数据特性分析 异构数据对齐:需处理不同传感器(如雷达、摄像头、IMU、ADS-B等)在时间、空间、精度和采样率上的差异,需设计同步机制(如硬件时钟同步、软件插值对齐)。 数据预处…...
【Git】branch合并分支
在 Git 中,将分支合并到 main 分支是一个常见的操作。以下是详细的步骤和说明,帮助你完成这个过程。 1. 确保你在正确的分支上 首先,你需要确保当前所在的分支是 main 分支(或者你要合并到的目标分支)。 检查当前分支…...
uniapp-商城-33-shop 布局搜索页面以及u-search
shop页面上有一个搜索,可以进行商品搜索,这里我们先做一个页面布局,后面再来进行数据i联动。 1、shop页面的搜索 2、搜索的页面代码 <navigator class"searchView" url"/pagesub/pageshop/search/search"> …...
蓝桥杯常考的找规律题
目录 灵感来源: B站视频链接: 找规律题具有什么样的特点: 报数游戏(Java组): 题目描述: 题目链接: 思路详解: 代码详解: 阶乘求和(Java组…...
全球化2.0 | 云轴科技ZStack亮相2025香港国际创科展
4月13-16日,由香港特别行政区政府、香港贸发局主办的2025香港国际创科展(InnoEX)在香港会议展览中心举办,作为亚洲最具影响力的科技盛会之一,本届展会吸引了来自17个国家和地区的500余家顶尖科技企业、科研机构及行业先…...
【Python进阶】数据可视化:Matplotlib从入门到实战
Python数据可视化:Matplotlib完全指南 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:折线图(股票趋势&#…...
操作系统——堆与栈详解:内存结构全面科普
文章目录 堆与栈详解:内存结构全面科普一、程序内存结构总览二、各段介绍及特点1. 代码段 .text2. 数据段 .data3. BSS段 .bss4. 堆区 Heap5. 栈区 Stack 三、C语言实例分析四、深入理解:为什么堆空间可能不连续?1. 堆内部结构:链…...
Mysql面试知识点详解
Mysql面试知识点详解 Mysql 是 Java 开发领域中常用的持久层框架,在面试和实际开发中都占据重要地位。本文将深入剖析 Mysql的核心知识点,并结合实战案例,帮助读者全面掌握相关技能。 一、慢查询定位与分析 (一)定位…...
数智读书笔记系列030《曲折的职业道路:在终身工作时代找准定位》与《做自己的教练:战胜工作挑战掌控职业生涯》
书籍简介 《曲折的职业道路:在终身工作时代找准定位》由英国职业发展专家海伦塔珀(Helen Tupper)和莎拉埃利斯(Sarah Ellis)合著,旨在帮助读者应对现代职场中日益普遍的“非直线型”职业路径。两位作者是“神奇的如果”(Amazing If)公司的联合创始人,曾为李维斯、沃达…...
Linux内核之文件驱动随笔
前言 近期需要实现linux系统文件防护功能,故此调研了些许知识,如何实现文件防护功能从而实现针对文件目录防护功能。当被保护的目录,禁止增删改操作。通过内核层面实现相关功能,另外在通过跟应用层面交互从而实现具体的业务功能。…...
【python】如何将文件夹及其子文件夹下的所有word文件汇总导出到一个excel文件里?
根据你的需求,这里提供一套完整的Python解决方案,支持递归遍历子文件夹、提取Word文档内容(段落+表格),并整合到Excel中。以下是代码实现及详细说明: 一个单元格一个word的全部内容 完整代码 # -*- coding: utf-8 -*- import os from docx import Document import pand…...
IDEA中如何统一项目名称/复制的项目如何修改根目录名称
1、问题概述? 在开发中,有时候为了方便,我们会复制一个新的项目,结果出现如下提示: 会在工程的后面提示工程原来的名字。 这种情况就是复制之后名字修改不彻底造成的。 2、彻底的修改工程的名字 2.1、修改pom.xml中…...
Ubuntu-Linux中vi / vim编辑文件,保存并退出
1.打开文件 vi / vim 文件名(例: vim word.txt )。 若权限不够,则在前方添加 sudo (例:sudo vim word.txt )来增加权限; 2.进入文件,按 i 键进入编辑模式。 3.编辑结…...
如何在idea里创建注释模版
✅ 步骤:创建一个类注释的 Live Template(缩写为 cls) ① 打开设置 IDEA 菜单栏点击:File > Settings(或按快捷键 Ctrl Alt S) ② 进入 Live Templates 设置 在左侧菜单找到:Editor > …...
IntelliJ IDEA 新版本中 Maven 子模块不显示的解决方案
一、问题现象与背景 在使用 IntelliJ IDEA 2024 版本开发 Maven 多模块项目时,我发现一个令人困惑的现象:父模块的子模块未在右侧 Maven 工具窗口中显示,仅显示父模块名称(且无 (root) 标识)。而此前在 IntelliJ IDEA…...
day48—双指针-通过删除字母匹配到字典最长单词(LeetCode-524)
题目描述 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字…...
美乐迪电玩大厅加载机制与 RoomList 配置结构分析
本篇为《美乐迪电玩全套系统搭建》系列的第三篇,聚焦大厅与子游戏的动态加载机制,深入解析 roomlist.json 的数据结构、解析流程、入口配置方式与自定义接入扩展技巧。通过本篇内容,开发者可实现自由控制子游戏接入与分发策略。 一、RoomList…...
局域网内,将linux(Ubuntu)的硬盘映射成Windows上,像本地磁盘一样使用
如何把同处一个局域网内的Ubuntu硬盘,映射到Windows上,使得Windows就像使用本地磁盘一样使用Ubuntu的磁盘? 要在同一局域网内的Windows上像本地磁盘一样使用Ubuntu硬盘,可以按照以下步骤操作: 1. 在Ubuntu上设置Samba…...
界面控件DevExpress WPF v25.1预览 - 支持Windows 11系统强调色
DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...
【Hive入门】Hive架构与组件深度解析:从核心组件到生态协同
目录 1 Hive架构全景图 2 核心组件运维职责详解 2.1 Metastore元数据中心 2.2 Driver驱动组件 2.3 Executor执行引擎 3 与HDFS/YARN的协同关系 3.1 HDFS协同架构 3.2 YARN资源调度 4 运维实战案例 4.1 Metastore连接泄露 4.2 小文件合并 5 最佳实践总结 5.1 性能优…...
【图像识别改名】如何批量识别多个图片的区域内容给图片改名,批量图片区域文字识别改名,基于WPF和腾讯OCR的实现方案和步骤
基于WPF和腾讯OCR的批量图像区域文字识别改名方案 本方案适用于以下场景: 大量扫描文档需要根据文档中的特定区域内容(如编号、标题等)进行重命名证件照片需要根据证件号码或姓名进行整理归档企业档案管理需要根据文件上的编号自动分类教育机构需要根据学生试卷上的学号自动…...
从ChatGPT到GPT-4:大模型如何重塑人类认知边界?
从ChatGPT到GPT-4:大模型如何重塑人类认知边界? 在人工智能(AI)领域,近年来最引人注目的进展之一是大型语言模型的发展。从最初的GPT-1到现在的GPT-4,这些模型不仅在技术上取得了显著的进步,而…...
QEMU源码全解析 —— 块设备虚拟化(21)
接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(20) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 特此致谢! 上一回开始解析blockdev_init函数,讲到了其中调用的blk_new_open函数,该函数的作用…...
vue2练习项目 家乡特色网站—前端静态网站模板
最近一直在学习前端 vue2 开发,基础知识已经学习的差不多了,那肯定需要写几个项目来练习一下自己学习到的知识点。今天就分享一个使用 vue2 开发的一个前端静态网站,【家乡特色网站】 先给大家看一下网站的样式: 这里就只简单的…...
CFIS-YOLO:面向边缘设备的木材缺陷检测轻量级网络解析
论文地址:https://arxiv.org/pdf/2504.11305 目录 一、论文核心贡献 二、创新点详解 2.1 CARAFE动态上采样 工作原理 优势对比 2.2 C2f_FNB轻量模块 计算效率 2.3 Inner-SIoU损失函数 三、实验验证 3.1 消融实验 3.2 对比实验 四、应用部署 4.1 边缘设备部署流程…...
vue3 + element-plus中el-dialog对话框滚动条回到顶部
对话框滚动条回到顶部 1、需要对话框显示后 2、使用 nextTick 等待 Dom 更新完毕 3、通过开发者工具追查到滚动条对应的标签及class“el-overlay-dialog”。追查方法: 4、设置属性 scrollTop 0 或者 执行方法 scrollTo(0, 0) // 对话框显示标识 const dialogVi…...
赛灵思Xilinx FPGa XCKU15P‑2FFVA1156I AMD Kintex UltraScale+
XCKU15P‑2FFVA1156I 是 AMD Kintex UltraScale 系列中的高性能 FPGA,基于 16 nm FinFET UltraScale 架构 制造,兼顾卓越的性能与功耗比,该器件集成 1,143,450 个逻辑单元和 82,329,600 位片上 RAM,配备 1,968 个 DSP 切片&#…...
力扣2492:并查集/dfs
方法一:并查集。如果不仔细读题,可能会想着把每一个一维数组下标为2的位置进行排序即可。但这是不行的。因为有可能有一些节点在其它集合当中。如果这些节点之间存在一个边权值比节点1所在集合的最小边权值还要小,那么求出来的答案就是错的。…...
宝塔面板引发的血案:onlyoffice协作空间无法正常安装的案例分享
今天和客户一起解决:onlyoffice协作空间的安装问题,本来已经发现由于客户用的机械硬盘,某些安装步骤等待的时间不够,已经加了处理。但是安装成功后,登录系统一直提示报错如下 检查docker容器都是正常的,并且health也是正确的,登录就一直报错。后面发现用免费版的安装程序可以正…...
【阿里云大模型高级工程师ACP习题集】2.1 用大模型构建新人答疑机器人
练习题 【单选题】1. 在调用通义千问大模型时,将API Key存储在环境变量中的主要目的是? A. 方便在代码中引用 B. 提高API调用的速度 C. 增强API Key的安全性 D. 符合阿里云的规定 【多选题】2. 以下哪些属于大模型在问答场景中的工作阶段?( ) A. 输入文本分词化 B. Toke…...