Mahony互补滤波算法在无人机姿态估计中的实践与源码解析
1. 从零理解为什么你的无人机需要Mahony互补滤波如果你玩过自己组装的无人机或者用过一些开源的飞控肯定遇到过这种情况飞机静止放在桌面上电脑里的姿态角读数却像喝醉了酒一样慢慢漂移或者飞机猛地一推油门姿态瞬间乱跳过好几秒才稳定下来。这背后十有八九是姿态估计算法没调好。今天咱们要聊的Mahony互补滤波就是解决这个问题的“老中医”方子简单效果实在在开源飞控圈里口碑一直不错。姿态估计说白了就是让无人机知道自己“头朝哪、身子歪不歪”。它靠的是机身上的几个小传感器陀螺仪、加速度计有时候再加个磁力计。这哥仨各有各的脾气。陀螺仪像个反应敏捷但记性差的短跑运动员它能瞬间告诉你“我正在以多快的速度转身”但你让它一直算它会因为一点点小误差累积最后告诉你已经转了十圈八圈了这叫积分漂移。加速度计则像个稳重但反应慢的老者在飞机没有剧烈平移运动时它能准确地感知到重力方向从而告诉你哪边是下但它特别怕震动和加减速一有动态读数就乱套。磁力计类似指南针用来找北确定航向但它怕附近有铁磁物质干扰。Mahony互补滤波干的事儿就是让这三位“优势互补”。它的核心思想特别直观在大部分时间里我相信陀螺仪因为它反应快但我时不时地用加速度计和磁力计测量的“绝对参考”重力和地磁北去纠正陀螺仪防止它跑偏。这个“时不时地纠正”在算法里就是一个比例-积分PI控制器。比例项Kp负责快速修正当前的偏差积分项Ki负责慢慢消除那些顽固的、持续存在的小误差比如陀螺仪的零偏。我第一次把这个算法移植到自己的小四轴飞控板上时看着原本乱飘的姿态曲线在调了Kp、Ki两个参数后变得稳稳当当那种感觉就像给近视眼配上了合适的眼镜世界瞬间清晰了。所以无论你是在调校自己的开源飞控比如PX4、ArduPilot里都能看到它的变种还是在做机器人、平衡车这类需要稳定姿态的项目吃透Mahony算法都能让你从“玄学调参”走向“心中有数”。接下来我们就掰开揉碎看看它到底是怎么工作的以及怎么把代码写出来、把参数调好。2. 庖丁解牛Mahony算法每一步都在算什么光说思想不够咱们得真刀真枪地看流程。Mahony算法通常用四元数来表示姿态因为它计算效率高没有欧拉角那种“万向节死锁”的毛病。别被四元数吓到在算法里我们主要把它当作一个数学工具来用理解其物理意义即可。整个算法的流程可以看作一个不断循环的“预测-修正”过程。2.1 准备工作坐标系与初始化首先得统一语言就是坐标系。这里采用和很多开源飞控一致的约定导航坐标系N系是“北-东-地”NED也就是X轴指向地理北Y轴指向东Z轴垂直向下指向地心。机体坐标系B系是“前-右-下”FRD即X轴指向飞机机头Y轴指向机身右侧Z轴垂直机身向下。你的传感器数据加速度计、陀螺仪需要安装在这个机体坐标系下。如果传感器安装方向不同就需要一个安装矩阵来转换这是第一步务必搞对否则后面全错。算法开始需要给四元数一个初始值。最土但最有效的办法是把飞机水平静止放置此时加速度计测到的就是重力矢量[0, 0, -g]注意Z向下为负利用这个矢量反推出一个初始的俯仰角和横滚角。磁力计数据可以用来计算初始航向。有了这三个欧拉角就能转换成初始四元数。在代码里这个初始化通常只做一次。2.2 核心较量重力与磁场的“参考力量”进入主循环后算法最精彩的部分来了。我们手里有来自陀螺仪的角速度[gx, gy, gz]这是我们的“预测”依据。但光靠它不行我们需要“参考真相”来修正。第一步用加速度计修正俯仰和横滚。我们当前有一个用四元数计算出来的旋转矩阵或等效的四元数操作这个矩阵代表了算法“认为”的从导航系到机体系的变换。如果我们把这个矩阵应用到导航系下的标准重力矢量[0, 0, -1]已归一化上就会得到算法“估计”出的在机体坐标系下应该看到的重力分量[vx, vy, vz]。 同时加速度计实际测量到的是[ax, ay, az]也已归一化。在理想静止状态下[vx, vy, vz]应该和[ax, ay, az]完全重合。但因为有误差它们不重合。它们的向量叉积[ex_acc, ey_acc, ez_acc] cross([ax,ay,az], [vx,vy,vz])的大小就代表了误差的角度方向则指出了修正陀螺仪的方向。这个叉积误差非常巧妙它直接给出了一个旋转轴和旋转量告诉陀螺仪“你该往这个方向转一点来弥补误差”。第二步用磁力计修正航向。单靠加速度计只能修正俯仰和横滚因为重力矢量不包含水平面内的方向信息航向的修正要靠磁力计。思路类似但多一步。先把磁力计测量值[mx, my, mz]用当前姿态四元数转换到导航系下得到[hx, hy, hz]。在导航系下地磁场矢量理论上应该是[bx, 0, bz]其中bx是水平北向分量bz是垂直向下分量。我们可以根据[hx, hy]的模长来得到bx sqrt(hx*hx hy*hy)bz直接等于hz。 然后我们把这个“理想”的导航系地磁场矢量[bx, 0, bz]再用姿态四元数转回到机体坐标系得到算法“估计”的磁力计读数[wx, wy, wz]。同样计算这个估计值[wx, wy, wz]与实际磁力计测量值[mx, my, mz]的向量叉积就得到了航向误差[ex_mag, ey_mag, ez_mag]。第三步误差融合与陀螺修正。现在我们有来自加速度计的误差e_acc和来自磁力计的误差e_mag。把它们简单相加就得到了总的误差向量[ex, ey, ez]。这个误差就是我们要用来“敲打”陀螺仪的依据。 修正公式就是经典的PI控制陀螺仪修正值 Kp * 当前误差 Ki * 误差积分。具体来说gyro_corrected_x gx_measured Kp * ex Ki * ex_integral; gyro_corrected_y gy_measured Kp * ey Ki * ey_integral; gyro_corrected_z gz_measured Kp * ez Ki * ez_integral;这里的ex_integral,ey_integral,ez_integral是误差ex, ey, ez的累积和积分。Kp大了修正猛收敛快但可能引入震动Ki大了消除静态误差能力强但反应慢调大了容易不稳定。第四步四元数更新与归一化。用修正后的角速度gyro_corrected按照四元数的微分方程或一阶近似去更新四元数。这个更新过程就是积分。代码里通常是一小段基于采样周期dt的运算。更新完的四元数必须进行归一化保证其模长为1因为四元数表示旋转时必须是单位四元数。这一步千万不能省否则数值误差会累积导致算法发散。整个流程走下来你会发现它就像一个负反馈系统传感器测量值不断与基于当前姿态的“理论预测值”比较产生误差再用这个误差去修正导致姿态预测的源头——陀螺仪的读数从而让姿态估计不断逼近真实值。理解了这个闭环再看代码就清晰多了。3. 源码实战逐行解析一个经典实现理论说得再透不如一行代码。我们找一个非常经典且清晰的Mahony算法C语言实现源自x-IMU开源项目来拆解。我会把关键部分拿出来加上详细的中文注释让你知道每一行在干什么。// 假设已经定义好的变量 // float q0, q1, q2, q3; // 当前姿态四元数 // float exInt, eyInt, ezInt; // 误差积分项 // float Kp, Ki; // 比例、积分系数 // float dt; // 采样周期秒 // float gx, gy, gz; // 陀螺仪原始读数弧度/秒 // float ax, ay, az; // 加速度计读数已归一化 // float mx, my, mz; // 磁力计读数已归一化 void MahonyAHRSupdate(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) { float norm; float hx, hy, hz, bx, bz; float vx, vy, vz, wx, wy, wz; float ex, ey, ez; // 临时变量用于四元数乘法计算避免重复计算提升效率 float q0q0 q0 * q0; float q0q1 q0 * q1; float q0q2 q0 * q2; float q0q3 q0 * q3; float q1q1 q1 * q1; float q1q2 q1 * q2; float q1q3 q1 * q3; float q2q2 q2 * q2; float q2q3 q2 * q3; float q3q3 q3 * q3; // 1. 归一化加速度计和磁力计数据至关重要 norm sqrt(ax * ax ay * ay az * az); if (norm 0.0f) return; // 防止除以零 norm 1.0f / norm; ax * norm; ay * norm; az * norm; norm sqrt(mx * mx my * my mz * mz); if (norm 0.0f) return; norm 1.0f / norm; mx * norm; my * norm; mz * norm; // 2. 将磁力计测量值从机体坐标系转换到导航坐标系使用当前姿态四元数 // 计算导航系下的地磁场分量 hx, hy, hz hx 2.0f * (mx * (0.5f - q2q2 - q3q3) my * (q1q2 - q0q3) mz * (q1q3 q0q2)); hy 2.0f * (mx * (q1q2 q0q3) my * (0.5f - q1q1 - q3q3) mz * (q2q3 - q0q1)); hz 2.0f * (mx * (q1q3 - q0q2) my * (q2q3 q0q1) mz * (0.5f - q1q1 - q2q2)); // 3. 在导航系下将地磁场矢量投影到水平面得到北向分量bx并保持垂直分量bz // 这一步是“航向归一化”的关键它消除了磁力计水平分量对俯仰/横滚估计的影响 bx sqrt(hx * hx hy * hy); bz hz; // 4. 将“理想”的导航系地磁场[bx, 0, bz]转换回机体坐标系得到估计值wx, wy, wz wx 2.0f * (bx * (0.5f - q2q2 - q3q3) bz * (q1q3 - q0q2)); wy 2.0f * (bx * (q1q2 - q0q3) bz * (q0q1 q2q3)); wz 2.0f * (bx * (q0q2 q1q3) bz * (0.5f - q1q1 - q2q2)); // 5. 计算算法估计出的重力方向在机体坐标系下的分量 vx, vy, vz // 这是从四元数直接推导出的重力矢量导航系[0,0,1]转到机体系 vx 2.0f * (q1q3 - q0q2); vy 2.0f * (q0q1 q2q3); vz q0q0 - q1q1 - q2q2 q3q3; // 6. 计算误差测量值与估计值的向量叉积 // 加速度计误差 磁力计误差 ex (ay * vz - az * vy) (my * wz - mz * wy); ey (az * vx - ax * vz) (mz * wx - mx * wz); ez (ax * vy - ay * vx) (mx * wy - my * wx); // 7. 误差积分如果Ki 0 if(Ki 0.0f) { exInt ex * Ki * dt; // 注意这里通常积分的是误差本身后续乘以Ki。有些实现会把Ki乘在积分项上。 eyInt ey * Ki * dt; ezInt ez * Ki * dt; } else { exInt 0.0f; eyInt 0.0f; ezInt 0.0f; // 防止积分饱和 } // 8. PI补偿修正陀螺仪读数 gx gx Kp * ex exInt; // 注意这里exInt已经包含了Ki和积分过程 gy gy Kp * ey eyInt; gz gz Kp * ez ezInt; // 9. 利用修正后的角速度进行四元数的一阶积分更新 float q0_temp q0; float q1_temp q1; float q2_temp q2; float q3_temp q3; // 四元数微分方程的离散化形式 q0 q0_temp (-q1_temp * gx - q2_temp * gy - q3_temp * gz) * (0.5f * dt); q1 q1_temp ( q0_temp * gx q2_temp * gz - q3_temp * gy) * (0.5f * dt); q2 q2_temp ( q0_temp * gy - q1_temp * gz q3_temp * gx) * (0.5f * dt); q3 q3_temp ( q0_temp * gz q1_temp * gy - q2_temp * gx) * (0.5f * dt); // 10. 四元数归一化必须做 norm sqrt(q0 * q0 q1 * q1 q2 * q2 q3 * q3); norm 1.0f / norm; q0 * norm; q1 * norm; q2 * norm; q3 * norm; }看这段代码结合上一节的原理是不是感觉脉络清晰了很多有几个细节值得强调一是归一化操作出现了三次分别针对加速度计、磁力计和最终的四元数这保证了数值稳定性二是磁力计处理中那个bx sqrt(hx*hx hy*hy)的操作它强制水平磁场分量全部归到北向这步是解耦航向与水平姿态的关键三是误差积分项的处理方式不同实现略有差异有的在积分时乘了Ki有的在补偿时乘本质一样但写代码时要和你选择的公式对应。4. 调参的艺术让无人机飞得又稳又准算法实现好了烧录进去发现飞机姿态还是不对劲别急90%的问题出在参数Kp和Ki上。调这两个参数是Mahony算法从“能用”到“好用”的必经之路也是很多新手觉得最“玄学”的地方。我结合自己踩过的坑总结了一套比较实用的调参思路。首先理解Kp和Ki的物理意义。你可以把整个姿态估计系统想象成一辆车的方向盘。Kp是方向盘转动的灵敏度。误差车子偏离车道中心线的距离一出来Kp大了方向盘就猛打一下车子快速回正但可能回过头了产生振荡Kp小了方向盘转得慢车子回正速度慢感觉“肉”。Ki是方向盘对长期偏差的修正力。比如车子轮胎有点跑偏总是慢慢往右偏Ki大了系统会慢慢积累这个向右的偏差然后给方向盘一个持续的向左的力来抵消它最终让车子能走直线。但Ki太大这个积累的力会反应过度导致车子左右摇摆。一个实用的调试步骤静态调试飞机放桌上不动先把Ki设为0只调Kp。从一个小值开始比如0.5。观察俯仰角和横滚角。理想情况是你用手轻轻拨动飞机姿态角能快速跟随且没有明显超调松开手后姿态角应迅速稳定回水平0度且没有低频的来回摆动。如果回正过程振荡严重说明Kp太大了要减小。如果反应迟钝拨动后要很久才慢慢回到水平说明Kp太小了要增大。找到一个Kp值使得动态响应既快又稳静态时读数非常稳定没有抖动。这个值通常是基础。引入Ki消除静态漂移保持Kp不变给Ki一个非常小的正值比如0.001。长时间静止观察。如果陀螺仪有零偏不使用Ki时姿态角会非常缓慢地朝一个方向漂移可能几分钟几度。加入Ki后这个漂移应该被显著抑制甚至消除。关键陷阱Ki绝对不能大稍微大一点系统就容易在低频段产生振荡表现出来就是飞机静止时姿态角会以几秒甚至十几秒为周期非常缓慢地来回摆动。这是最危险的因为飞行中很难察觉但会严重影响控制稳定性。我的经验是Ki的值通常比Kp小两个数量级左右。动态调试小心进行手持飞机进行缓慢的旋转和倾斜运动。观察姿态角输出是否平滑能否跟上你的动作并且在动作停止后能否快速稳定。尝试快速晃动。此时加速度计数据会因为运动加速度而严重失真算法应该主要依赖陀螺仪。观察姿态角是否出现剧烈的、不合理的跳变。如果出现说明Kp可能还是偏大导致对加速度计噪声过于敏感。有些高级实现会引入自适应机制在检测到高动态时自动减小Kp。参数推荐与经验值严恭敏老师在他的博客里给过一个基于时间常数tau的设定公式Kp 2.0 * beta,Ki beta * beta其中beta 2.146 / tau。tau可以理解为系统收敛的时间常数比如设为0.5秒算出来的Kp大约在8-9Ki在20左右。这是一个比较激进的参数响应很快。 而在Aceinna的开源导航算法中我看到他们设置了高低两组Kp_acc和Ki_acc高值用于静态或低速Kp1, Ki0.5低值用于高动态Kp0.01, Ki0.001并设计了创新性阈值进行切换这大大提升了动态性能。 对于初学者我建议从一个中等保守的值开始比如Kp2.0, Ki0.05然后根据上述步骤微调。记住一个原则在保证静态不振荡的前提下尽量增大Kp以获得快速响应Ki从极小值开始只要能抑制住长期漂移就行宁小勿大。5. 进阶与避坑提升实战表现的关键细节调好了Kp、Ki你的Mahony算法应该能在一个相对理想的环境下工作了。但想把它真正用到飞控上还得过几道坎。这里分享几个实战中容易忽略却又至关重要的细节。传感器校准是地基再好的算法也救不了垃圾数据。上算法前必须校准传感器。加速度计需要校准零偏和标度因数。最简单的六面法把设备六个面分别朝下静止放置记录每个面的输出计算平均值。理想情况下静止时模长应为1g。如果偏差大就需要一个3x3的校正矩阵和偏移向量。陀螺仪最关键的是零偏校准。设备静止放置一段时间几十秒把这期间陀螺仪输出的平均值记下来作为零偏值。后续所有读数都要先减去这个零偏。温度变化会引起零偏漂移高级的飞控会有在线温度补偿。磁力计最麻烦需要做硬铁和软铁校准。通常需要设备在三维空间中进行“画8字”或旋转运动采集大量数据然后拟合出一个椭球将其校正到单位球。很多开源飞控地面站如QGroundControl都自带这个校准向导。没校准的磁力计航向角基本不可用。采样时间dt要精确算法中的dt是采样周期必须精确。最好用硬件定时器中断来触发姿态解算保证固定的频率如500Hz。如果是在主循环里跑要用高精度时钟如gettimeofday或std::chrono测量上一次解算到现在的实际时间差作为dt。用一个固定的、不准确的值比如简单用1/500会导致动态性能变差尤其在处理器负载变化时。处理异常情况加速度计失效剧烈运动时加速度计测量值包含大量运动加速度不再是单纯的重力。此时用它来修正姿态会引入巨大误差。一个简单的策略是计算加速度计矢量的模长如果它与1g相差超过一个阈值比如0.2g就认为处于高动态暂时禁用或减弱加速度计的修正例如将Kp临时调小。这就是所谓的“动态权重”或“自适应增益”。磁力计干扰室内环境、靠近电机、电池、金属结构都会干扰地磁场。可以监测磁力计读数的模长或变化率如果异常则暂时只用加速度计和陀螺仪进行姿态解算失去绝对航向但横滚俯仰仍可用或者切换到纯陀螺积分模式姿态会漂移但短时间内可用。坐标系与符号这是最容易出错的地方不同厂家的传感器其机体坐标系定义可能不同前左上右前下。不同算法对旋转方向正负号的约定也可能不同。务必仔细阅读传感器数据手册和算法源码的注释。一个检查方法将飞机水平静止算法解算出的横滚角、俯仰角应在0度附近。轻轻抬起机头俯仰角应变正或变负取决于约定。将飞机向右倾斜横滚角应变正。如果符号反了检查你的坐标系转换或算法中的叉积顺序。从四元数到欧拉角飞控的控制律通常需要欧拉角俯仰、横滚、偏航。需要将最终的四元数[q0, q1, q2, q3]转换成欧拉角。转换公式需要根据你的坐标系约定来选择。一个常见的公式NED导航系FRD机体系旋转顺序Z-Y-X即先偏航、再俯仰、后横滚如下roll atan2(2*(q0*q1 q2*q3), 1 - 2*(q1*q1 q2*q2)); pitch asin(2*(q0*q2 - q3*q1)); yaw atan2(2*(q0*q3 q1*q2), 1 - 2*(q2*q2 q3*q3));注意atan2和asin函数的输出范围yaw偏航角的范围是-π到π。把这些细节都处理好你的Mahony姿态解算模块才算真正具备了上天的资格。它可能没有卡尔曼滤波那么“高大上”但以其简洁、高效、易于理解和调试的特点在计算资源有限的嵌入式平台如STM32上依然是很多成熟飞控的可靠选择。理解它掌握它是进入无人机和机器人姿态感知世界的一块坚实敲门砖。

相关新闻

突破传统!3步实现宝可梦数据自动化合法性验证

突破传统!3步实现宝可梦数据自动化合法性验证

突破传统!3步实现宝可梦数据自动化合法性验证 【免费下载链接】PKHeX-Plugins Plugins for PKHeX 项目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 在宝可梦游戏的世界里,每一只宝可梦的数据都如同一份精密的身份档案,记录…

2026/5/17 10:56:26 阅读更多 →
告别繁琐操作:这款轻量级Android管理工具让应用管理效率提升300%

告别繁琐操作:这款轻量级Android管理工具让应用管理效率提升300%

告别繁琐操作:这款轻量级Android管理工具让应用管理效率提升300% 【免费下载链接】vmqApk V免签监控端 项目地址: https://gitcode.com/gh_mirrors/vm/vmqApk 在移动应用爆炸式增长的今天,无论是普通用户还是开发者,都面临着APK文件管…

2026/7/10 6:29:57 阅读更多 →
企业级知识库构建实战:基于Spring AI与ChromaDB的私有化RAG系统落地

企业级知识库构建实战:基于Spring AI与ChromaDB的私有化RAG系统落地

1. 为什么企业需要一个私有化的RAG知识库? 最近几年,大语言模型(LLM)的能力大家有目共睹,但真正在企业里用起来,总会遇到几个绕不开的坎。比如,你问它公司最新的产品定价策略,它可能…

2026/7/8 22:31:29 阅读更多 →

最新新闻

基于TPS61170与PIC18F86J50的高效DC-DC升压方案设计

基于TPS61170与PIC18F86J50的高效DC-DC升压方案设计

1. 项目背景与核心器件选型 在工业控制、医疗设备和新能源系统中,经常需要将较低的直流电压(如3.3V或5V)升压至更高电压(如12V/24V)为特定负载供电。TPS61170作为TI推出的高压升压转换器芯片,配合PIC18F86J…

2026/7/10 10:03:13 阅读更多 →
LabelImg 1.8.6 跨平台部署:Windows/Linux/Mac 三系统 5 步安装与常见依赖报错解决

LabelImg 1.8.6 跨平台部署:Windows/Linux/Mac 三系统 5 步安装与常见依赖报错解决

LabelImg 1.8.6 跨平台部署指南:从安装到排错的完整解决方案在计算机视觉项目的开发流程中,高质量的数据标注是模型训练成功的关键前提。作为业界广泛使用的开源图像标注工具,LabelImg以其简洁的界面设计和灵活的标注格式支持,成为…

2026/7/10 9:59:10 阅读更多 →
Claude Fable 5人像生成:从提示词工程到高级感塑造实战

Claude Fable 5人像生成:从提示词工程到高级感塑造实战

那天下午,我正为一个项目焦头烂额——需要快速生成一批风格统一、细节精致的人物插画。试了几个常见的图像生成模型,要么人物表情僵硬得像蜡像,要么对“高级感”“氛围感”这种抽象要求完全无动于衷。就在几乎要放弃的时候,偶然点…

2026/7/10 9:59:10 阅读更多 →
它们由权重构成:揭秘大模型背后的灵魂架构

它们由权重构成:揭秘大模型背后的灵魂架构

它们由权重构成:揭秘大模型背后的灵魂架构 在当下的技术圈,有一个话题正悄然引发深思。当我们凝视那些能够写出绝美诗篇、生成复杂代码的大模型时,我们究竟在看什么?有人给出了一个极具哲学意味的答案:“They’re mad…

2026/7/10 9:57:06 阅读更多 →
3分钟掌握气动气缸Web模拟:前端技术实现工业自动化仿真

3分钟掌握气动气缸Web模拟:前端技术实现工业自动化仿真

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 背景与核心概念 在工业自动化、机器人仿真以及机电一体化教学领域,我们经常需要在不依赖真实物理硬件的情况下&#xf…

2026/7/10 9:55:05 阅读更多 →
SQL注入实战:从Pikachu靶场搭建到手工与自动化利用

SQL注入实战:从Pikachu靶场搭建到手工与自动化利用

1. 项目概述:为什么选择Pikachu作为你的第一个SQL注入实战场?如果你刚踏入Web安全领域,面对“SQL注入”这个名词,可能会觉得它既神秘又危险。教科书上的原理讲得头头是道,但真让你上手去“注入”一下,却不知…

2026/7/10 9:55:05 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻