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

HOVER:人形机器人的多功能神经网络全身控制器

编辑:陈萍萍的公主@一点人工一点智能

HOVER:人形机器人的多功能神经网络全身控制器HOVER通过策略蒸馏和统一命令空间设计,为人形机器人提供了通用、高效的全身控制框架。https://mp.weixin.qq.com/s/R1cw47I4BOi2UfF_m-KzWg

01  介绍

1.1 摘要概述

论文《HOVER: Versatile Neural Whole-Body Controller for Humanoid Robots》提出了一种新型的多模态神经网络控制器HOVER,旨在解决人形机器人全身控制中不同任务模式(如导航、操作、桌面操控等)的兼容性问题。现有方法通常为每个控制模式单独训练策略,导致控制器缺乏通用性。HOVER通过引入运动模仿和策略蒸馏技术,将多个控制模式整合到一个统一策略中,实现了跨模式的技能共享与无缝切换。实验表明,HOVER不仅在单一模式上超越专家策略,还能在仿真和真实硬件中实现鲁棒的多模态控制。

1.2 核心贡献

· 统一控制框架:HOVER首次将超过15种控制模式(如关节角度跟踪、根节点跟踪、关键点位置跟踪等)整合到一个策略中,覆盖了现有文献中的主流设计。

· 策略蒸馏优化:通过从“Oracle策略”(基于大规模人类运动数据训练的模仿策略)中蒸馏知识,HOVER在多个控制模式上的性能均优于独立训练的专家策略。

· 实际验证:在Unitree H1等真实人形机器人平台上,HOVER展示了动态模式切换能力和高精度运动跟踪性能。

02  引言

Humanoid机器人因其在多种任务和应用中的潜在用途而备受关注,包括双臂操作、两足行走以及敏捷的全身控制。然而,现有的方法通常为特定的任务需求设计了不同的全身体控制器,例如基于根速度跟踪以支持移动或关节角度跟踪以实现表达性动作。

尽管这些方法在最终目标上都是为了追踪运动轨迹,但它们需要针对具体任务设计特定的控制器接口和奖励机制。这种方法不仅使得开发过程重复且耗时,还限制了全身体控制器的多功能性。举例来说,一个使用根速度跟踪进行不平地形两足行走的机器人难以无缝切换到需要精确双臂操作的任务中,这时可能需要关节角度或末端效应器跟踪。

图片

HOVER(Humanoid Versatile Controller)提出了一种多模式策略蒸馏框架,将多样化的控制模式整合成统一的策略,从而实现了不同控制模式之间的无缝过渡,同时保留了每种模式的独特优势。

通过这种方式,HOVER提供了一个强大且可扩展的人形机器人控制解决方案,覆盖了广泛的应用场景。该系统不仅消除了为每个控制模式重新训练策略的需求,提高了未来人形机器人应用的效率和灵活性,而且还展示了如何利用共享的身体知识来增强跨模式的泛化能力。

此外,HOVER通过对大规模人类运动数据的学习,建立了稳健的基础运动技能库,这些技能可以在多个控制模式间复用,进一步增强了其适应性和通用性。

论文的贡献主要体现在三个方面:

首先,提出了一个支持多种控制模式的人形机器人的统一神经控制器——HOVER;

其次,通过策略蒸馏技术,证明了HOVER能够有效地在不同模式之间分享运动技能,并优于单独训练的策略;

最后,实验结果显示,在模拟环境和真实人形机器人上的测试均表明,与其它基准相比,HOVER能够在不同模式间实现无缝转换,并提供卓越的多模式控制性能。

03  方法详析

在HOVER的方法部分,研究者们采取了一个目标条件强化学习(Goal-Conditioned Reinforcement Learning, RL)的方式为人形机器人制定控制策略。这个方法的核心在于让策略π学习实时追踪人类动作的能力。状态st由代理的本体感受s^{\text{p}}_t和目标状态s^{\text{g}}_t组成,其中s^{\text{g}}_t提供了目标动作的一个统一表示。根据代理的本体感受和目标状态,定义了用于策略优化的奖励r_t=\mathcal{R}(s^{\text{p}}_t,s^{\text{g}}_t )。在这个设定中,动作\pmb{a}_t\in \mathbb{R}^{19}代表目标关节位置,这些位置被馈送到PD控制器以激活机器人的自由度。研究团队采用了近端策略优化(PPO)算法来最大化累积折扣奖励\mathbb{E}[\sum^T_{t=1}\gamma^{t-1}r_t]。此设置被视为一项命令跟踪任务,其中人形机器人学习跟随每个时间步长的目标命令。

为了确保所提出的HOVER策略能够在多样化控制模式之间灵活转换并保持高精度的动作再现,研究者们还精心设计了命令空间。传统的腿部运动控制通常采用根速度或位置跟踪作为命令空间,但仅关注根部跟踪会限制人形机器人的全部潜力,特别是在需要全身协调的情况下。因此,HOVER引入了一个全面的控制框架,该框架不仅涵盖了现有配置,而且允许任意组合控制选项以支持各种模式。

具体来说,它包括三个不同的控制模式:动力学位置跟踪、局部关节角度跟踪以及根跟踪。通过这种方式,HOVER能够处理从上身到下身的不同控制需求,并通过一种称为“命令掩码”的机制动态调整哪些控制元素处于活动状态,从而实现对复杂任务的高效管理。

3.1 状态空间与目标条件强化学习

HOVER基于目标条件强化学习(Goal-Conditioned RL)设计,其状态空间和奖励函数如下:

3.1.1 状态空间设计

本体感知状态s^{\text{p}}_t:

包括关节位置q、速度\dot{q}、基座角速度\omega ^{base}、重力向量g,以及历史动作a(堆叠25帧以捕捉动态特性)。

目标状态s^{\text{g}}_t

由掩码机制选择的目标参数,例如手部关键点的3D坐标或根节点的目标速度。

图片

3.1.2 奖励函数设计

奖励函数

图片

分为三类(权重见表II):

· 惩罚项:关节力矩超限(权重-2)、动作速率超限(权重-6.28e⁻¹)。

· 正则项:关节加速度平滑性(权重-1.0e⁻⁸)。

· 任务项:关节位置跟踪(权重32)、全局身体位置误差(权重80)。

任务项的权重显著高于其他项,确保跟踪精度优先。

3.1.3 动作空间与训练算法

动作\pmb{a}_t\in\mathbb{R}^{19}表示目标关节位置,通过PD控制器转换为电机指令。采用PPO算法最大化累积折扣奖励\mathbb{E}[\sum^T_{t=1}\gamma^{t-1}r_t],折扣因子γ设为0.99以平衡短期与长期奖励。

3.2 命令空间设计

图片

3.2.1 HOVER的命令空间设计

遵循两大原则:

1)原子性(Atomicity):将控制模式分解为独立维度,例如:

· 关键点位置跟踪:手部、头部等3D坐标。

· 关节角度跟踪:各关节的目标角度。

· 根节点跟踪:速度、高度、姿态角(滚转、俯仰、偏航)。

2)通用性(Generality):支持与多种输入设备(如VR手柄、运动捕捉系统)对接。

3.2.2 掩码机制

通过模式掩码(Mode Mask)和稀疏掩码(Sparsity Mask)动态激活命令子集:

· 模式掩码:选择控制模式(如上半身关键点跟踪,下半身关节角度跟踪)。

· 稀疏掩码:在选定模式下进一步筛选目标(如仅跟踪左手关键点)。

掩码在每回合开始时随机采样(伯努利分布B(0.5)),迫使策略学习跨模式的鲁棒性。

3.3 运动重定向与Oracle策略训练

HOVER中另一个重要组成部分是动作重定向过程,这是将大规模人体动作数据集转化为适合人形机器人的动作数据集的关键步骤。动作重定向流程分为三步:

首先,计算人形机器人的关键点位置,使用前向运动学将其关节配置映射到工作空间坐标;

其次,通过优化SMPL模型参数以匹配前向运动学计算出的关键点,使人形机器人的运动学特性与人体模型相吻合;

最后,采用梯度下降法将AMASS数据集中对应的关节点匹配到拟合后的SMPL模型和人形机器人之间,完成动作数据集的重定向。

这一过程确保了HOVER可以从大量人体运动数据中学习稳健的全身控制策略,为后续的策略蒸馏提供了高质量的数据基础。

图片

Oracle策略的训练是HOVER方法中的核心环节之一,它旨在从大规模人体动作数据集中提炼出优质的运动模仿能力。为了实现这一点,研究者们定义了一个名为Oracle的运动模仿器\pi^\text{oracle}(a_t|s^{\text{p-oracle}}_t,s^{\text{g-oracle}}_t),其中包含了代理的本体感觉信息s^{\text{p-oracle}}_t\triangleq [\pmb{p}_t,\pmb{\theta}_t,\pmb{\dot{p}{}_t},\pmb{\omega} _t,\pmb{a}_{t-1}],涉及人形机器人的刚体位置、方向、线速度、角速度以及之前的动作。目标状态sg-oracle t则包含了参考姿势及其与当前状态之间的差异,用于指导策略的学习。

在训练过程中,研究团队使用了一个三层MLP网络结构,层维度分别为[512, 256, 128],并通过奖励函数rt的优化来驱动策略的学习。该奖励函数由惩罚项、正则化项和任务奖励项构成,涵盖了关节限位、姿态误差、身体位置和旋转等多个方面,确保策略能在模拟环境中有效学习并迁移到真实世界中。

3.4 多模态策略蒸馏

在HOVER的方法论中,策略蒸馏是一个至关重要的步骤,它将从Oracle教师策略πoracle中学到的丰富运动技能转移到学生策略\pi^{\text{student}}中,形成一个能够处理多种控制模式的多模式全能策略。对于学生策略而言,其本体感觉输入s^{\text{p-student}}_t被定义为过去25个时间步长内的关节位置q、关节速度\dot{q}、基座角速度\omega ^{base}、重力矢量g以及动作历史a的集合。这样做的目的是为了更好地捕捉环境动态变化的信息,从而提高学生策略对复杂环境的适应能力。

学生策略πstudent的输入为掩码后的命令和本体感知,其训练目标是最小化与Oracle动作的均方误差:

图片

其中\hat{\pmb{\text{a}}}_t由Oracle策略生成,{\pmb{\text{a}}}_t为学生策略的输出。

接下来,通过引入模式掩码Mmode和稀疏性掩码Msparsity来定义学生的任务命令输入s^{\text{g-student}}_t。模式掩码用于选择具体的任务命令模式,而稀疏性掩码则允许在特定场景下只激活部分控制选项,比如上身仅追踪手部的动力学位置,而下身则专注于关节角度追踪。这种灵活的命令输入方式不仅增强了HOVER的多功能性,还促进了其在不同控制模式间的平滑过渡。在整个蒸馏过程中,研究者们利用DAgger框架不断更新学生策略,使其逐步逼近Oracle教师策略的行为表现,从而实现高效的策略学习和迁移。

04  实验与结果分析

在实验部分,HOVER展示了其在IsaacGym仿真环境和Unitree H1真实机器人上的卓越性能。

4.1 实验设置

· 仿真环境:IsaacGym,使用重定向后的AMASS数据集\hat{Q}

· 真实平台:Unitree H1(19自由度,1.8米高,51.5千克)。

· 基线方法:包括ExBody(关节角度+根节点跟踪)、H2O(关键点跟踪)等专家策略,以及从头训练的多模态RL策略。

图片

4.2 性能评估

Q1:HOVER是否优于专家策略?

表III显示,在ExBody模式(上半身关节角度+下半身根节点跟踪)下,HOVER的全局位置误差(185mm vs. 275mm)和关节角度误差(0.148rad vs. 0.166rad)均优于专家策略。类似趋势在其他模式(如H2O、OmniH2O)中一致存在,表明蒸馏过程有效共享了跨模式技能(如平衡维持)。

图片

研究团队对比了HOVER与ExBody、HumanPlus、H2O和OmniH2O等多种专家策略在不同控制模式下的表现。结果显示,HOVER在所有评估指标上均表现出色,尤其在全局身体位置误差Eg-mpjpe、关节角度误差Empjpe等方面领先于其他专家策略。这些发现表明,即便是在专注于单一控制模式的情境下,HOVER依旧能够凭借从Oracle策略中提炼出的技能超越专门为此模式训练的策略。此外,HOVER还证明了其在左/右手模式、双手模式及头部模式等额外控制模式下的优越性,持续显示出比特定任务训练的专家策略更好的追踪精度。

Q2:HOVER是否优于其他多模态训练方法?

图4的雷达图显示,HOVER在32/32的指标上优于多模态RL基线。例如,根节点姿态误差降低20%,关键点位置误差降低15%。这表明直接训练多模态策略容易陷入局部最优,而蒸馏通过模仿Oracle策略的动作分布避免了这一问题。

图片

文中比较了HOVER与另一种采用相同命令掩码但完全从零开始训练的多模式RL基准策略。实验结果揭示,在多个关键指标如根部旋转误差Eroot-rpy、上身关节角度误差Eupper-j等方面,HOVER再次展现出明显的优势。这表明,通过策略蒸馏而非从头开始的强化学习训练,HOVER能够更加高效地掌握复杂的多模式控制任务。

图片

Q3:HOVER能否迁移到真实机器人?

表V显示,在20组站立动作中,HOVER的全局位置误差(48.9mm vs. 51.3mm)和关节角度误差(0.126rad vs. 0.131rad)优于ExBody专家策略。图6展示了动态模式切换能力:从行走中的ExBody模式切换到H2O模式(手部跟踪),机器人能平滑过渡而无明显抖动。

图片

研究人员在Unitree H1平台上进行了测试,结果证实了HOVER不仅能在仿真环境中取得优异成绩,也能在实际操作中稳定运行,顺利完成站立序列、定量追踪及定性多模式控制任务。综合来看,HOVER通过一系列严谨的实验验证了其在多功能性、性能优化及实际应用方面的巨大潜力。

4.3 鲁棒性验证

· 遮挡测试(图6c):在头部跟踪模式下,策略忽略手部动作,仅响应头部参考,模拟了传感器部分失效的场景。

· 物理真实性:HOVER的关节加速度误差(2.31mm/frame²)接近Oracle策略(2.63mm/frame²),表明动作平滑性接近人类运动。

05  相关工作与创新点

5.1 现有研究对比

· 经典方法:如Atlas的模型预测控制(MPC)依赖精确动力学模型,难以适应多任务。

· 学习型方法:ExBody、H2O等专注于单一模式,缺乏通用性。

· 图形学领域:MaskedMimic等支持灵活运动约束,但未考虑真实机器人动力学。

图片

5.2 HOVER的创新性

· 统一命令空间:首次将关键点、关节角度、根节点跟踪整合,支持任意子集激活。

· 蒸馏驱动的多模态学习:通过模仿Oracle策略,避免多任务RL的探索-利用困境。

· 实际部署验证:在复杂硬件(Unitree H1)上实现低延迟(<10ms)控制。

06  结论与展望

HOVER通过策略蒸馏和统一命令空间设计,为人形机器人提供了通用、高效的全身控制框架。其核心优势在于:

· 性能提升:跨模式技能共享使单一策略在多个任务上超越专家。

· 部署便捷性:无需为每个任务重新训练策略,降低开发成本。

未来方向包括:

· 自动化模式切换:根据任务上下文动态调整掩码。

· 扩展控制模式:纳入力控、触觉反馈等维度。

· 长期运动规划:结合高层任务规划器,实现复杂行为链。

HOVER的提出标志着人形机器人控制从“专精化”向“通用化”迈出了关键一步,为未来家庭服务、工业协作等场景提供了技术基础。

相关文章:

HOVER:人形机器人的多功能神经网络全身控制器

编辑&#xff1a;陈萍萍的公主一点人工一点智能 HOVER&#xff1a;人形机器人的多功能神经网络全身控制器HOVER通过策略蒸馏和统一命令空间设计&#xff0c;为人形机器人提供了通用、高效的全身控制框架。https://mp.weixin.qq.com/s/R1cw47I4BOi2UfF_m-KzWg 01 介绍 1.1 摘…...

SEO新手基础优化三步法

内容概要 在网站优化的初始阶段&#xff0c;新手常因缺乏系统性认知而陷入技术细节的误区。本文以“三步法”为核心框架&#xff0c;系统梳理从关键词定位到内容布局、再到外链构建的完整优化链路。通过拆解搜索引擎工作原理&#xff0c;重点阐明基础操作中容易被忽视的底层逻…...

遨游科普:三防平板是哪三防?有哪些应用场景?

在工业智能化与数字化转型的浪潮中&#xff0c;电子设备的耐用性和环境适应性成为关键需求。普通消费级平板电脑虽然功能强大&#xff0c;但在极端环境下往往“水土不服”。而三防平板凭借其独特的防护性能&#xff0c;正逐步成为“危、急、特”场景的核心工具。 AORO P300 Ult…...

Etcd 服务搭建

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 Etcd 服务搭建预编译的二进制文件安装下载 etcd 的…...

C++《红黑树》

在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树&#xff0c;那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树&#xff0c;在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点&#xff0c;接下来在试着实现红黑树的结构…...

Axios 请求取消:从原理到实践

Axios 请求取消&#xff1a;从原理到实践 在现代前端开发中&#xff0c;网络请求是不可或缺的一部分。Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;广泛应用于浏览器和 Node.js 环境中。然而&#xff0c;在某些场景下&#xff0c;我们可能需要取消正在进行的请求&…...

【css酷炫效果】纯CSS实现照片堆叠效果

【css酷炫效果】纯CSS实现照片堆叠效果 缘创作背景html结构css样式完整代码基础版进阶版(增加鼠标悬停查看) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492022 缘 创作随缘&#xff0c;不定时更新。 创…...

论文精度:Transformers without Normalization

前言 论文题目:Transformers without Normalization 作者:Jiachen Zhu 1,2 , Xinlei Chen 1 , Kaiming He 3 , Yann LeCun 1,2 , Zhuang Liu 1,4,† 论文地址:https://arxiv.org/pdf/2503.10282 摘要 这篇论文探讨了现代神经网络中广泛使用的归一化层是否是必不可少的。…...

基于香橙派 KunpengPro学习CANN(3)——pytorch 模型迁移

通用模型迁移适配可以分为四个阶段&#xff1a;迁移分析、迁移适配、精度调试与性能调优。 迁移分析 迁移支持度分析&#xff1a; 准备NPU环境&#xff0c;获取模型的源码、权重和数据集等文件&#xff1b;使用迁移分析工具采集目标网络中的模型/算子清单&#xff0c;识别第三方…...

微软远程桌面即将下架?Splashtop:更稳、更快、更安全的 RDP 替代方案

近日&#xff0c;Windows 官方博客宣布&#xff1a;将于2025年5月27日起&#xff0c;在 Windows 10 和 Windows 11 应用商店中下架“Microsoft 远程桌面”应用&#xff0c;建议用户迁移至新的 Windows App。这一变动引发了广大用户对远程访问解决方案的关注。作为全球领先的远程…...

【Python】Python与算法有应用关系吗?

李升伟 整理 是的&#xff0c;Python与算法有着密切的应用关系。Python作为一种高级编程语言&#xff0c;因其简洁的语法和强大的库支持&#xff0c;被广泛应用于算法设计、实现和应用中。以下是Python与算法之间的一些主要应用关系&#xff1a; 1. 算法学习与教学&#xff1…...

js,html,css,vuejs手搓级联单选

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>级联选择器</title><script src"h…...

将Django连接到mysql

将Django连接到mysql 文章目录 将Django连接到mysql一.按照我的文章 在Django模型中的Mysql安装 此篇 的步骤完成mysql的基础配置二.Django配置 一.按照我的文章 ‘在Django模型中的Mysql安装’ 此篇 的步骤完成mysql的基础配置 基础配置具体内容 1.打开PowerShell 安装mysql的…...

每天五分钟深度学习框架pytorch:基于pytorch搭建循环神经网络RNN

本文重点 我们前面介绍了循环神经网络RNN,主要分析了它的维度信息,其实它的维度信息是最重要的,一旦我们把维度弄清楚了,一起就很简单了,本文我们正式的来学习一下,如何使用pytorch搭建循环神经网络RNN。 RNN的搭建 在pytorch中我们使用nn.RNN()就可以创建出RNN神经网络…...

【力扣刷题实战】无重复的最长字串

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a; 无重复的最长字串 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C&#xff09; 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#x…...

vulhub/joker 靶机----练习攻略

1. 靶机下载地址 https://download.vulnhub.com/ha/joker.zip 下载下来是ova文件&#xff0c;直接双击&#xff0c;在VMware打开&#xff0c;选择保存位置&#xff0c;点击导入。 2. 设置网卡模式为NAT&#xff0c;打开靶机 3.老规矩&#xff0c;打开kali&#xff0c;扫同C…...

Nuxt2 vue 给特定的页面 body 设置 background 不影响其他页面

首先认识一下 BODY_ATTRS 他可以在页面单独设置 head () {return {bodyAttrs: {form: form-body}};},设置完效果是只有这个页面会加上 接下来在APP.vue中添加样式...

【Go】运算符笔记

基本数学运算 Go 语言支持常见的 算术运算符&#xff0c;用于执行数学计算。 运算符说明加法-减法*乘法/除法%取余自增--自减 整数运算只能得到整数部分 package mainimport ("fmt""math" )func main() {go_math() }func go_math() {x, y : 8, 5fmt.Pr…...

常见的前端安全问题

前端安全是 Web 开发中至关重要的一环&#xff0c;以下是常见的前端安全问题及对应的防御措施&#xff1a; 1. XSS&#xff08;跨站脚本攻击&#xff09; 攻击原理 攻击者向页面注入恶意脚本&#xff08;如 JavaScript&#xff09;&#xff0c;在用户浏览器中执行&#xff0c;…...

基于Spring Boot的项目申报系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

SPI驱动(九) -- SPI_Master驱动程序

文章目录 参考资料&#xff1a;一、SPI传输概述二、SPI传输的两种方法2.1 旧方法2.2 新方法 参考资料&#xff1a; 参考资料&#xff1a; 参考内核源码: drivers\spi\spi.c 一、SPI传输概述 SPI控制器的作用是发起与它下面挂接的SPI设备之间的数据传输&#xff0c;那么控制…...

Transformer网络发展概述2025.3.18

一.Transformer概述 1.1 定义与原理 Transformer是一种基于自注意力机制的深度学习模型&#xff0c;在处理序列数据时表现卓越。其核心原理包括&#xff1a; 自注意力机制 &#xff1a;允许模型同时考虑输入序列中的所有位置&#xff0c;捕捉语义关系多头注意力 &#xff1a…...

3.4 二分查找专题:LeetCode 69. x 的平方根

1. 题目链接 LeetCode 69. x 的平方根 2. 题目描述 给定一个非负整数 x&#xff0c;计算并返回 x 的平方根的整数部分&#xff08;向下取整&#xff09;。 示例&#xff1a; 输入&#xff1a;x 4 → 输出&#xff1a;2输入&#xff1a;x 8 → 输出&#xff1a;2&#xff0…...

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪&#xff08;Surface-Tracking&#xff09;是指机器人通过实时感知工件曲面的三维形貌&#xff0c;动态调整运动轨迹和位姿&#xff0c;以精确跟随曲面进行加工&#xff08;如打磨、抛光、喷涂等&#xff09;的技术。 力 - 位姿协同控制 力控模式&#xff…...

opencv中stitch图像融合

openv版本: opencv249 vs &#xff1a;2010 qt : 4.85 #include "quanjing.h"#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <open…...

深入解析ES6+新语法:复杂的迭代器与生成器

一、迭代器&#xff08;Iterator&#xff09;&#xff1a;数据遍历的统一协议 1. 迭代器协议的本质 **迭代器协议&#xff08;Iterator Protocol&#xff09;** 是一种标准化的数据访问接口&#xff0c;它要求对象实现一个 next() 方法&#xff0c;每次调用返回包含 { valu…...

【C语言】自定义类型:结构体

一、结构体类型的声明 我们前面学习操作符的时候已经接触过结构体了&#xff0c;下面我们回顾一下结构体的基本内容。 创建结构体的语法如上所示&#xff1a; struct是创建结构体的关键字&#xff0c;然后tag就是我们结构体的名称&#xff0c;member-list是结构体的成员列表&…...

微服务即时通信系统---(五)框架学习

目录 ODB 介绍 安装 build2安装 odb-compiler安装 ODB运行时库安装 mysql和客户端开发包安装 boost profile库安装 总体打包安装 总体卸载 总体升级 头文件包含和编译时指明库 ODB常见操作介绍 类型映射 ODB编程 类与接口介绍 mysql连接池对象类 mysql客户端…...

蓝桥杯练习day1:自除数

前言 自除数 是指可以被它包含的每一位数整除的数。 例如&#xff0c;128 是一个 自除数 &#xff0c;因为 128 % 1 0&#xff0c;128 % 2 0&#xff0c;128 % 8 0。 自除数 不允许包含 0 。 给定两个整数 left 和 right &#xff0c;返回一个列表&#xff0c;列表的元素…...

0基础 | 上下拉电阻典型应用场景

三极管典型运用&#xff1a; 上拉电阻 下拉电阻 限流电阻 此处开关为三极管 左侧电阻&#xff1a;驱动电阻【限流电阻】 &#xff08;控制mos管&#xff09; 下面电阻&#xff1a;下拉电阻【关断电阻】 %%作用1&#xff1a; &#xff08;因为IO口输出信号分为低电平&…...

MySQL数据高效同步到Elasticsearch的四大方案

目录 引言 一、为什么需要MySQL到ES的同步&#xff1f; 二、四大同步方案对比 三、方案详解与代码实战 1. 应用层双写&#xff1a;简单但强耦合 2. 定时任务同步&#xff1a;可控的准实时 3. Logstash JDBC&#xff1a;离线迁移利器 4. Binlog监听&#xff1a;生产级实…...

Docker详解

云是一种服务理念。在云里docker是业务的最小载体 doker是管理容器的引擎&#xff0c;为应用打包、部署平台、而非单纯的虚拟化技术 1.轻量级虚拟化 2.一致性 4.高效的资源利用 5.易于部署和扩展 docker和虚拟机的区别&#xff1a; 虚拟机&#xff1a;真机需要一个操作系…...

清晰易懂的Maven安装教程(含自定义依赖包位置)

初学者也能看懂的 Maven 安装教程&#xff08;含自定义依赖包位置&#xff09; Maven 是一个强大的项目管理和构建工具&#xff0c;广泛用于 Java 项目的依赖管理和构建自动化。本教程将手把手教你如何在 Windows 系统上安装 Maven&#xff0c;并配置环境变量&#xff0c;同时…...

王道数据结构6.3

顶点x的第一个邻接点以及下一个邻接点 int first_neighbor(Algraph G, int x){if(G.vertices[x].firstarc! nullptr){return G.vertices[x].firstarc->adjvex;}else return -1; }int next_neighbor(Algraph G,int x,int y){ArcNode *pG.vertices[x].firstarc;while(p! null…...

【Linux操作系统——学习笔记二】Linux简单导航命令操作

一、前言 学习Linux&#xff0c;本质上是学习在命令行下熟练使用Linux的各类命令。 命令行&#xff1a;是一种通过输入命令和参数与计算机系统进行交互的方式&#xff0c;可以使用各种字符化命令对系统发出操作指令&#xff0c;打开Linux终端&#xff0c;进入命令行界面。 …...

贪心算法——c#

贪心算法通俗解释 贪心算法是一种"每一步都选择当前最优解"的算法策略。它不关心全局是否最优&#xff0c;而是通过局部最优的累积来逼近最终解。优点是简单高效&#xff0c;缺点是可能无法得到全局最优解。 一句话秒懂 自动售货机找零钱&#xff1a;用最少数量的…...

SPI 总线协议

1、协议介绍 SPI&#xff0c;是英语 Serial Peripheral interface 的缩写&#xff0c;顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。 SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线。主节点或子节点的数据在…...

单片机开发资源分析的实战——以STM32G431RBT6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32G431RBT6 从资源手册拿到我们的对STM32G431RBT6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 第一点&#xff1a;为什么叫STM32G431RBT6 对于命名规则不太熟悉的朋友看这里…...

物联网(IoT)架构中,平台层的应用与技术

在物联网(IoT)架构中,平台层是连接物理设备(感知层)和应用服务(应用层)的核心部分。它负责数据的采集、处理、存储、分析以及设备管理等功能,是物联网系统的“大脑”。以下是平台层的主要功能及其技术实现手段: 平台层的主要功能 设备管理: 功能:管理物联网设备的注…...

大语言模型的压缩技术

尽管人们对越来越大的语言模型一直很感兴趣&#xff0c;但MistralAI 向我们表明&#xff0c;规模只是相对而言的&#xff0c;而对边缘计算日益增长的兴趣促使我们使用小型语言获得不错的结果。压缩技术提供了一种替代方法。在本文中&#xff0c;我将解释这些技术&#xff0c;并…...

JVM 2015/3/15

定义&#xff1a;Java Virtual Machine -java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&#xff0c;到处运行 自动内存管理&#xff0c;垃圾回收 数组下标越界检测 多态 比较&#xff1a;jvm/jre/jdk 常见的JVM&…...

DeepSeek辅助学术写作中期能力及提示词分享

目录 确立三论 收集资料 选取论据 展开论证 大家好这里是AIWritePaper官方账号&#xff01;更多内容&#x1f449;AIWritePaper~在如今这个学术圈的“快车道”上&#xff0c;时间就像是一场永不停歇的赛跑&#xff0c;而论文质量则是那颗我们拼命追逐的“金苹果”。最近一款…...

Git 实战指南:本地客户端连接 Gitee 全流程

本文将以 Gitee(码云)、系统Windows 11 为例,详细介绍从本地仓库初始化到远程协作的全流程操作 目录 1. 前期准备1.1 注册与配置 Gitee1.2 下载、安装、配置客户端1.3 配置公钥到 Gitee2. 本地仓库操作(PowerShell/Git Bash)2.1 初始化本地仓库2.2 关联 Gitee 远程仓库3. …...

汇编基础知识

机器语言 1、机器语言是机器指令的集合&#xff0c;机器指令就是机器可以正确执行的命令&#xff0c;由二进制数组成 2、当今我们常用的是pc机&#xff0c;由一个芯片完成上述功能&#xff0c;即CPU是一种微处理器&#xff0c;每一种微处理器由于自身硬件设计和内部构造不同都…...

线程池的拒绝策略适用场景思考

ThreadPoolExecutor有四种拒绝策略。刚开始学习线程池的时候我就觉得&#xff0c;就是应该当任务饱和&#xff08;达到拒绝策略&#xff09;时&#xff0c;就应该拒绝任务&#xff0c;抛出异常。最近仔细思考了下&#xff0c;既然线程池这么设计&#xff0c;也应该有一定的道理…...

on-policy对比off-policy

目录 持续更新。。。 on-policy与off-policy的定义 Q-learning属于on-policy算法还是off-policy算法&#xff1f; 为什么off-policy适用于从离线经验或多种探索策略中学习&#xff0c;明明 On-policy 也可以基于探索学习的啊&#xff1f; 重要性权重方法 off-policy方法可…...

如何记录Matlab程序运行过程中所占用的最大内存(续)

在上一篇博客中&#xff0c;我们讨论了如何记录Matlab程序运行过程中所占用的最大内存。 博客原文&#xff1a;如何记录Matlab程序运行过程中所占用的最大内存-CSDN博客 但经过测试发现&#xff0c;这与实际有非常大的差异。运行如下例子&#xff1a; clear;clc; profile on…...

解决MySQL字符集冲突引发的“Illegal mix of collations”错误

引言 在开发过程中&#xff0c;我们常常会遇到数据库层面的字符集兼容性问题。本文将通过一个典型的案例&#xff0c;分析因字符集不匹配导致的 Illegal mix of collations 错误&#xff0c;并提供完整的解决方案&#xff0c;帮助开发者彻底规避此类问题。 问题现象 假设我们…...

Vue3:F12后,页面弹出runtime errors及提示的解决办法

解决&#xff1a; vue.config.jsdevServer: {client: {overlay: false}, },关闭提示 main.js // 定义特性标志 window.__VUE_PROD_DEVTOOLS__ false window.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ false...

学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)

11.5 案例-文件上传-阿里云OSS-入门 出现报错&#xff1a;Process exited with an error: 1 (Exit value: 1)&#xff0c;点击exec那一行&#xff0c;出现错误原因&#xff1a;Command execution failed. 在CSDN上找到了解决方法&#xff1a; 之后出现新的报错&…...