麦克纳姆轮运动学原理与Arduino实现:从几何推导到全向移动实战
1. 项目概述从“能跑”到“会漂”的跨越搞智能小车的朋友从四轮差速转向升级到麦克纳姆轮全向移动那种感觉就像从开普通轿车换成了能横着走的“螃蟹车”操控自由度直接拉满。我最早接触麦轮是在一个工创赛的智能物流小车项目里当时的需求是在狭窄的仓库通道里实现货物的精准搬运和原地转向差速小车根本转不开麦轮就成了唯一解。但真上手才发现让四个轮子协调工作实现理论上平滑的任意方向移动远不是接上电机给PWM那么简单。核心难点就在于“运动学解算”——如何将我们想要的车体运动速度矢量精确地分解成四个轮子各自独立且可能转速、方向都不同的转动。网上很多资料要么只给个最终公式要么用一堆矩阵和偏微分方程对新手和急于实现功能的开发者来说门槛太高。这次我就以最直白的“几何物理”视角拆解麦克纳姆轮最常见的“X型”布局即左前轮和右后轮辊子方向为45°右前轮和左后轮辊子方向为135°的运动学原理。我们会从轮子怎么产生力开始一步步推导出那个关键的“运动学逆解矩阵”并用Arduino代码示例说明如何实现。无论你是准备参加智能车竞赛还是自己做着玩想实现炫酷的全向移动这篇都能帮你把原理吃透避开我当年踩过的那些坑。2. 核心原理麦克纳姆轮如何实现“斜着走”在深入公式之前我们必须先搞懂麦克纳姆轮Mecanum Wheel到底特殊在哪。它看起来像个斜着装了无数个小辊子的轮子。这些辊子的旋转轴与轮毂平面呈45度角。这个设计是精髓所在当轮子被电机驱动主动旋转时它产生一个沿轮子切线方向的驱动力同时那些小辊子可以自由滚动这意味着在垂直于辊子轴的方向上轮子几乎不受阻力可以自由滑动。2.1 单个轮子的速度合成与分解想象一个右前轮辊子方向135°。当电机驱动它顺时针旋转时轮子边缘有一个向后的速度V_wheel。由于辊子的存在这个速度可以沿两个方向分解沿辊子轴向135°方向这个分量会被辊子的自由滚动“吸收”轮子在这个方向上可以自由滑动不产生有效的推进力。垂直于辊子轴向45°方向这个分量是“有效”的它推动地面从而给车体提供一个向前45°方向的力。关键结论每个麦克纳姆轮对车体运动的贡献是其轮心速度在垂直于其辊子轴线方向上的分量。对于X型布局四个轮子的“有效推进方向”两两对称左前轮和右后轮是向前偏左45度右前轮和左后轮是向前偏右45度。2.2 从车体运动到轮子转速的逆向思维我们通常的思考方式是想让小车怎么动车体运动指令 - 每个轮子该怎么转电机控制指令。这就是“运动学逆解”。假设我们定义车体坐标系X轴向前Y轴向左原点在车体几何中心。车体运动状态沿X轴的速度Vx沿Y轴的速度Vy以及绕原点的旋转角速度ω。目标是求解四个轮子的转速ω1, ω2, ω3, ω4。推导过程可以不用矩阵用矢量合成来理解平动贡献车体以Vx向前运动这个速度会传递到每个轮心。对于右前轮这个Vx矢量需要投影到该轮的有效方向45°上才能知道需要多少轮速来“匹配”这个平动。转动贡献车体以ω自转每个轮子因为位置不同会有一个额外的线速度。比如右前轮在车体右前方自转会给它带来一个向后的速度分量如果ω是逆时针。这个速度同样需要投影到轮子的有效方向上。合成与求解每个轮子的最终所需转速是“平动投影分量”与“转动投影分量”的代数和。把四个轮子的方程列出来进行整理就能得到那个经典的矩阵形式。经过推导这里省略具体三角函数运算对于轮子半径为R轮子到车体中心距离在X、Y方向分量分别为Lx, Ly的X型麦轮小车其运动学逆解方程为[ω1] [1, -1, -(LxLy)] [Vx] [ω2] [1, 1, (LxLy)] * [Vy] / R [ω3] [1, 1, -(LxLy)] [ω ] [ω4] [1, -1, (LxLy)]公式解读输入是车体的三个速度[Vx, Vy, ω]。输出是四个轮子的角速度[ω1, ω2, ω3, ω4]通常假设从左前轮开始顺时针编号。矩阵中的正负号由轮子布局X型和有效方向决定。(LxLy)项代表了轮子位置对旋转运动的力臂影响。最后除以轮子半径R将线速度需求转换为电机角速度需求。注意这个矩阵是“理想模型”下的结果。它假设轮子与地面接触为点接触、无滑动且车体为刚体。实际应用中因加工精度、装配误差、地面摩擦系数不均等必然存在偏差需要通过后续的标定和闭环控制来补偿。3. 从理论到代码Arduino上的运动解算实现理解了公式在微控制器如Arduino上实现就清晰了。我们通常的任务是接收来自遥控器或上位机的运动指令Vx, Vy, ω解算出四个电机的PWM占空比。3.1 参数测量与初始化首先需要精确测量小车的物理参数轮子半径R用游标卡尺测量轮子外径含辊子除以2。精确到0.1mm。轮距Lx和Ly测量车体几何中心到四个轮子中心在X和Y方向的距离。对于对称小车Lx是前后轮中心距的一半Ly是左右轮中心距的一半。将这些参数定义为常量并计算好(LxLy)这个组合值避免在循环中重复计算。// 定义小车物理参数 const float WHEEL_RADIUS 0.0325; // 轮子半径单位米 const float LX 0.075; // 前后轮半轴距单位米 const float LY 0.095; // 左右轮半轴距单位米 const float L_SUM LX LY; // 预计算提高效率 // 定义电机引脚假设使用L298N等驱动模块 int motorPins[4][2] {{5, 6}, {9, 10}, {11, 12}, {7, 8}}; // {IN1, IN2} for M1, M2, M3, M43.2 运动解算函数核心实现接下来是核心的解算函数。输入是归一化的速度指令例如从摇杆的-255到255映射到-1.0到1.0的浮点数输出是四个电机的速度值。void mecanumKinematics(float vx, float vy, float omega, float wheelSpeeds[4]) { // 1. 将车体速度从“归一化值”转换为“实际线速度米/秒” // 这里假设最大速度 MAX_SPEED 0.5 m/s const float MAX_SPEED 0.5; float Vx vx * MAX_SPEED; float Vy vy * MAX_SPEED; // 角速度也需要一个最大限制例如 MAX_OMEGA 2.0 rad/s const float MAX_OMEGA 2.0; float Omega omega * MAX_OMEGA; // 2. 应用运动学逆解矩阵公式 wheelSpeeds[0] ( Vx - Vy - Omega * L_SUM) / WHEEL_RADIUS; // 左前轮 M1 wheelSpeeds[1] ( Vx Vy Omega * L_SUM) / WHEEL_RADIUS; // 右前轮 M2 wheelSpeeds[2] ( Vx Vy - Omega * L_SUM) / WHEEL_RADIUS; // 左后轮 M3 wheelSpeeds[3] ( Vx - Vy Omega * L_SUM) / WHEEL_RADIUS; // 右后轮 M4 // 3. 速度归一化处理非常重要 // 解算后的轮速可能超出电机能力范围需要进行等比例缩放 float maxWheelSpeed 0; for(int i0; i4; i){ maxWheelSpeed max(maxWheelSpeed, abs(wheelSpeeds[i])); } if(maxWheelSpeed MAX_MOTOR_RAD_PER_SEC){ // 假设电机最大角速度 float scale MAX_MOTOR_RAD_PER_SEC / maxWheelSpeed; for(int i0; i4; i){ wheelSpeeds[i] * scale; } } }3.3 轮速到PWM的映射与控制得到轮子的目标角速度后需要将其转换为电机的PWM信号。这里涉及开环和闭环两种思路。开环控制简单精度低假设电机转速与PWM占空比成线性关系。通过实验测量建立一个简单的映射。例如PWM150时空载转速对应2 rad/s。void setMotorSpeed(int motorIndex, float targetRadPerSec) { // 简单的线性映射需根据自己电机实测校准 int pwmValue constrain((int)(targetRadPerSec * 75.0), -255, 255); // 假设比例系数为75 int pin1 motorPins[motorIndex][0]; int pin2 motorPins[motorIndex][1]; if(pwmValue 0){ analogWrite(pin1, pwmValue); analogWrite(pin2, 0); } else { analogWrite(pin1, 0); analogWrite(pin2, -pwmValue); } }闭环控制推荐精度高使用带编码器的电机通过PID控制器让电机实际转速精确跟踪解算出的目标转速。这是参加竞赛或要求精准移动的项目的标配。// 伪代码展示思路 float targetSpeed[4]; // 由运动学解算得出 float currentSpeed[4]; // 由编码器测量得出 float pwmOutput[4]; // PID计算输出 void pidControlLoop() { for(int i0; i4; i){ float error targetSpeed[i] - currentSpeed[i]; // 这里省略具体的PID计算过程积分、微分项 pwmOutput[i] kp * error; // 简单比例控制 setMotorPwm(i, pwmOutput[i]); } }实操心得开环控制下小车的平移和旋转动作会因电池电压下降、地面摩擦变化而漂移。务必上编码器做闭环即使是廉价的AB相增量式编码器每转几百线配合一个合适的PID控制器也能极大提升运动精度和一致性。初期调试可以先从P比例控制开始慢慢加入I积分消除静差。4. 运动模式解析与典型场景应用掌握了基础解算我们可以让小车子执行各种“舞步”。以下是一些典型运动模式及其对应的(Vx, Vy, ω)输入你可以把它们预设为遥控器上的一个按键或一个模式。运动模式Vx (前/后)Vy (左/右)ω (旋转)应用场景前进/后退1.0 / -1.000直线运输通过狭窄直道横向平移左/右01.0 / -1.00侧方入库横向对准目标原地旋转顺/逆时针001.0 / -1.0在极小空间内调整车头方向斜向45°移动0.7070.7070沿对角线高效移动“蟹行”转弯0.50.50.3在移动中平滑改变朝向适合跟踪移动目标场景应用示例工创赛智能物流小车在模拟仓库中小车需要从A点取货运送到B点货架。路径上可能有其他障碍物或小车。A点取货遥控或自动控制使用横向平移模式让小车侧身精准对齐货架取货口无需多次调整姿态。直线运输使用前进模式沿主通道快速移动。避障与调整遇到静态障碍结合横向平移和原地旋转快速绕开。遇到对向来车可以斜向移动暂时让出主路。B点卸货到达B点后可能货架空间狭窄。使用原地旋转调整车头方向再微调使用横向平移将货物对准卸货台。这种灵活的运动能力是传统差速小车无法比拟的也是麦轮在竞技和工业应用中的核心优势。5. 调试、标定与精度提升实战理论完美现实骨感。直接套用公式的小车运动起来很可能歪歪扭扭平移时带旋转旋转时带平移。这就需要调试和标定。5.1 基础调试验证运动方向首先进行单轴运动测试确保每个轮子的转向和你的代码逻辑匹配。纯Vx测试设置(Vx0.3, Vy0, ω0)。观察小车是否笔直前进。如果向左或向右偏说明四个轮子的“有效方向”投影不一致可能是轮子安装角度有偏差或正负号搞反。纯Vy测试设置(Vx0, Vy0.3, ω0)。观察小车是否完美横向平移。如果出现前进/后退分量问题同上。纯ω测试设置(Vx0, Vy0, ω0.5)。小车应绕中心原地旋转。如果旋转中心漂移说明Lx和Ly参数测量不准或者车体重心不在几何中心。5.2 参数标定让模型贴合实物理想矩阵中的系数“1”和“-1”是基于45°精确安装和轮子完全一致的假设。实际需要标定。标定方法平移标定让小车执行纯横向平移Vy指令。用手机慢动作录像或激光笔标记测量实际移动轨迹与期望轨迹的夹角θ。修正矩阵这个夹角反映了所有轮子有效方向的平均偏差。我们可以通过一个旋转矩阵来修正速度指令[Vx, Vy] [cosθ, -sinθ; sinθ, cosθ] * [Vx, Vy]然后再将修正后的Vx‘ Vy’代入原逆解矩阵。更简单粗暴但有效的方法是微调矩阵中的系数例如将第一行改为[1.05, -0.95, ...]通过多次试验逼近。旋转标定类似地通过测试纯旋转观察是否平移来微调与ω相关的系数(LxLy)。有时需要为四个轮子设置不同的力臂系数。5.3 高级话题运动学正解与里程计估算运动学逆解用于控制而运动学正解则用于感知——通过测量到的四个轮子转速编码器值来估算车体实际的运动状态(Vx, Vy, ω)。这是实现航迹推算Odometry的基础对于SLAM或自主导航至关重要。正解公式就是逆解矩阵的伪逆。在代码中我们可以直接使用逆矩阵或者根据编码器脉冲和轮径计算每个轮子的线速度再代入正解公式计算车体速度最后对时间积分得到位置和航向角。// 运动学正解示例通过编码器测速估算车体速度 void calculateOdometry(float wheelLinearSpeeds[4], float vx, float vy, float omega) { // wheelLinearSpeeds 是四个轮子中心当前的线速度米/秒 vx (wheelLinearSpeeds[0] wheelLinearSpeeds[1] wheelLinearSpeeds[2] wheelLinearSpeeds[3]) / 4.0; vy (-wheelLinearSpeeds[0] wheelLinearSpeeds[1] wheelLinearSpeeds[2] - wheelLinearSpeeds[3]) / 4.0; omega (-wheelLinearSpeeds[0] wheelLinearSpeeds[1] - wheelLinearSpeeds[2] wheelLinearSpeeds[3]) / (4.0 * L_SUM); }重要提醒麦轮里程计的累积误差非常大主要原因是辊子与地面的滑动无法避免尤其在加速、减速或转向时。切勿单纯依赖麦轮里程计进行长距离定位。它适合短距离相对移动估计必须与陀螺仪IMU进行传感器融合如互补滤波、卡尔曼滤波用IMU的角速度来修正ω用IMU的角度来修正航向才能得到相对可靠的位置估计。这也是智能车竞赛中解决“麦克纳姆轮横向移动定位问题”的关键。6. 常见问题排查与实战技巧最后分享一些调试过程中一定会遇到的坑和解决技巧。问题1小车平移时严重抖动或卡顿。可能原因1PID参数不当。特别是微分项D太大或积分项I在零速附近累积。尝试降低D或者加入积分限幅。可能原因2电机驱动频率太低。普通的ArduinoanalogWrite()默认频率约490Hz对于有些电机可能偏低会产生可闻噪音和抖动。可以尝试切换定时器将引脚910的频率提高到几千赫兹。可能原因3机械结构松动。麦轮对安装精度要求高检查轮子是否紧固辊子是否转动顺畅万向节或联轴器有无间隙。问题2电池电量下降后运动性能变差。原因电机KV值不变电压下降导致最大转速下降。开环控制下速度映射关系变了。解决必须采用闭环控制。编码器反馈的是实际转速PID控制器会自动调整PWM来维持目标转速从而抵消电压变化的影响。此外可以加入电池电压检测当电压低于阈值时等比例降低所有运动指令的最大速度上限避免控制器输出饱和。问题3在光滑地面如地砖上横向打滑严重。原因麦克纳姆轮的有效推力依赖于辊子与地面的摩擦力。光滑地面摩擦系数小特别是横向移动时垂直于辊子方向的分力很小容易打滑。解决更换轮胎使用橡胶材质、纹路更深的麦轮增加抓地力。降低加速度在控制指令中对速度变化率进行平滑滤波如梯形速度规划避免突然的加减速。调整重心确保小车重心尽量低且位于四轮中心。问题4代码跑起来单个轮子转向是反的。解决不要急着改复杂的方向矩阵。首先在setup()函数里写一个简单的测试程序单独测试每个电机。确认电机引脚逻辑IN1高IN2低正转还是反之与你的物理接线一致。然后在运动学解算函数输出的速度数组wheelSpeeds后对需要反转的轮子乘以-1。这是一个硬件/软件匹配问题与运动学模型本身无关。一个提升性能的实战技巧速度前馈在PID控制中单纯依靠编码器反馈后馈存在滞后。我们可以把运动学解算出的目标轮速乘以一个预估的“PWM/速度”系数直接作为PID控制器的前馈项输出。这样电机能更快地响应速度指令动态性能更好。公式大致为PWM_output FeedForward_gain * Target_Speed PID_correction。这个前馈系数需要通过实验测定。

相关新闻

Qt模拟鼠标点击:从内部事件到系统级自动化的完整实现方案

Qt模拟鼠标点击:从内部事件到系统级自动化的完整实现方案

1. 项目概述:为什么需要模拟鼠标点击?在桌面自动化、软件测试、辅助工具开发乃至游戏脚本编写中,模拟鼠标点击是一个高频且核心的需求。想象一下,你需要定时自动点击某个按钮、批量处理重复的界面操作,或者为不便使用鼠…

2026/8/7 3:58:16 阅读更多 →
OpenClaw五层架构解析:从零部署AI智能体工厂的实践指南

OpenClaw五层架构解析:从零部署AI智能体工厂的实践指南

1. 项目概述:从“小龙虾”到智能体工厂最近在折腾本地AI智能体部署的朋友,估计没少被“OpenClaw”这个名字刷屏。乍一听,这名字有点怪,像某种开源机械爪或者海鲜品牌,但它在AI智能体圈子里,已经成了一个绕不…

2026/8/7 3:57:15 阅读更多 →
雀魂牌谱分析终极指南:从数据小白到麻将高手的科学进阶之路

雀魂牌谱分析终极指南:从数据小白到麻将高手的科学进阶之路

雀魂牌谱分析终极指南:从数据小白到麻将高手的科学进阶之路 【免费下载链接】amae-koromo 雀魂牌谱屋 (See also: https://github.com/SAPikachu/amae-koromo-scripts ) 项目地址: https://gitcode.com/gh_mirrors/am/amae-koromo 你是否曾在雀魂对局后陷入迷…

2026/8/7 3:57:15 阅读更多 →

最新新闻

2026版二升三学霸数学计算大通关 人教版暑假计算专项三件套

2026版二升三学霸数学计算大通关 人教版暑假计算专项三件套

二升三是小学数学衔接中年级的关键节点,计算从单一运算升级为加减乘除混合运算,竖式、脱式计算要求逐步提高,假期放松练习很容易出现计算速度下降、步骤出错等问题。这套人教版计算大通关专项资料,聚焦暑假计算强化训练&#xff0…

2026/8/8 7:08:57 阅读更多 →
网络安全副业接单实战指南:风险规避与高效盈利

网络安全副业接单实战指南:风险规避与高效盈利

1. 网络安全副业接单的现状与风险全景作为一名在网络安全行业摸爬滚打十年的老兵,我见过太多同行在接私活时踩坑的血泪史。2023年OWASP发布的报告显示,全球43%的网络安全从业者曾通过副业接单,但其中68%遭遇过项目纠纷。这个看似遍地黄金的领…

2026/8/8 7:08:57 阅读更多 →
移动应用金额安全显示与加密实践指南

移动应用金额安全显示与加密实践指南

1. 项目背景与核心需求在移动应用开发领域,用户账户信息安全一直是重中之重。最近我在开发一款金融类APP时,遇到了一个看似简单却值得深究的问题:如何在界面上合理展示用户账户金额信息?这不仅仅是UI设计问题,更涉及到…

2026/8/8 7:08:56 阅读更多 →
TLS协议深度解析:从加密原理到HTTPS/MQTTS实战配置与错误排查

TLS协议深度解析:从加密原理到HTTPS/MQTTS实战配置与错误排查

1. 从“明文裸奔”到“加密铠甲”:TLS的诞生与使命如果你在2000年初上过网,可能还记得浏览器地址栏旁边那个小小的黄色锁头图标,或者更早的时候,连这个锁头都没有。那时候,你在论坛输入的账号密码、在购物网站填写的地…

2026/8/8 7:08:56 阅读更多 →
构建可中断恢复的AI Agent系统:人机协作架构与实战指南

构建可中断恢复的AI Agent系统:人机协作架构与实战指南

1. 从“单打独斗”到“团队协作”:AI Agent的范式转变 最近在折腾AI应用开发的朋友,可能都绕不开一个词: Agent 。从年初的AutoGPT爆火,到后来各种“自主智能体”框架层出不穷,大家似乎都在追求一个目标——让AI自己…

2026/8/8 7:08:56 阅读更多 →
Java Selenium自动化破解滑动验证码:从图像识别到轨迹模拟实战

Java Selenium自动化破解滑动验证码:从图像识别到轨迹模拟实战

1. 项目概述与核心价值最近在折腾一些自动化工具时,发现很多网站的登录环节都加上了滑动验证码,比如1688、一些电商后台或者社区论坛。手动操作不仅效率低,在需要批量处理任务时更是让人头疼。用Java配合WebDriver(比如Selenium&a…

2026/8/8 7:07:56 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →