Motion Tracks:少样本模仿学习中人-机器人之间迁移的统一表征
25年1月来自Cornell和Stanford的论文“MOTION TRACKS: A Unified Representation for Human-Robot Transfer in Few-Shot Imitation Learning”。
教会机器人自主完成日常任务仍然是一项挑战。模仿学习 (IL) 是一种强大的方法,它通过演示向机器人灌输技能,但受限于收集遥控机器人数据需要耗费大量的人力。人类视频提供一种可扩展的替代方案,但由于缺乏机器人动作标签,直接利用这些视频训练 IL 策略仍然困难重重。为了解决这个问题,将动作表示为图像上的短视域二维轨迹。这些动作,或Motion Tracks,捕捉人手或机器人末端执行器的预测运动方向。实例化一种名为运动轨迹策略 (MT-π) 的 IL 策略,它接收图像观测并将运动轨迹输出为动作。通过利用这个统一的跨具身动作空间,MT-π 仅需几分钟的人类视频和有限的额外机器人演示就能成功完成任务。在测试时,从两个摄像头视角预测运动轨迹,并通过多视角合成恢复六自由度轨迹。 MT-π 在 4 项真实世界任务中实现 86.5% 的平均成功率,比不利用人类数据或行动空间的最先进 IL 基线高出 40%,并且可泛化到仅在人类视频中看到的场景。
模仿学习 (IL) 是一种广泛采用的方法,用于通过人类演示训练机器人策略 [1, 2]。然而,即使是最先进的 IL 策略,在某些情况下也可能需要数百 [3, 4] 甚至数万 [5–7] 次众包遥操作演示才能达到良好的性能。这些演示通常由遥操作机器人通过虚拟现实设备 [8] 或木偶操控界面 [4, 9, 10] 收集。然而,某些设备不仅专用于机器人且并非普遍可用,而且长时间使用这些设备进行远程操作非常耗时耗力,并且通常需要大量练习才能开始收集数据集。
另一种方法是让机器人从被动观察中学习,例如从人类演示所需任务的视频中学习。人类视频数据更容易大规模收集,现有数据集提供数千小时的演示 [11, 12]。然而,这些真人视频缺乏训练模仿学习策略所必需的机器人动作标签,这对将真人视频中的知识迁移到机器人策略提出了挑战。
近期研究,通过对真人数据进行视觉表征预训练,解决了这一问题 [11, 13, 14]。然而,由于预训练数据的多样性 [15, 16],这些表征通常难以直接应用或针对特定任务进行微调。其他方法则侧重于收集特定任务的真人视频和遥控机器人演示,这些演示可以捕捉更广泛的动作。然后,这些方法通过逆强化学习 [21] 学习共享状态空间表征 [17–19]、共享潜嵌入 [20] 或奖励函数。虽然这些方法可以有效地对齐输入表征,但它们对输出动作对机器人数据集的依赖,限制它们的表达能力。例如,无论条件质量如何,仅接受向右关抽屉演示训练的机器人,可能无法泛化到向左关抽屉的动作。
其主要见解是,尽管人手和机器人末端执行器之间存在具身差距,但可以通过将它们的运动投影到图像平面作为 2D 轨迹来统一它们的动作空间。训练一个 IL 策略,它将图像观测作为输入,并将动作预测为运动轨迹或图像空间中的短视界 2D 轨迹,指示人手或机器人末端执行器上点的预测运动方向。这种重构使动作预测与人手和机器人末端执行器兼容。该方法需真值地面真实运动轨迹,并使用已知相机外参的正向运动学为机器人演示获得真值运动轨迹。在测试时,从两个摄像机视图预测运动轨迹并使用多视图几何在 3D 中重建可执行的 6DoF 末端执行器轨迹。
目标是学习一种视觉运动策略,该策略主要基于人类视频和少量机器人演示进行训练。为此,从像素级关键点的共享表征中提取动作,并训练一种直接在图像空间中输出动作的策略,从而使该流程与任一具身兼容。
给定图像 I_t(i) 和相应的 k 个末端执行器关键点 s_t^(i),我们的目标是学习一个关键点条件运动轨迹网络。
本文提出 MT-π(Motion Track 策略),这是一个旨在通过预测图像空间中的视觉运动控制动作来统一人类和机器人演示的框架。具体来说,将人类和机器人的演示映射到图像中机械臂上二维关键点的通用表示,并训练一个策略来预测这些关键点未来的像素位置。通过将人类和机器人的演示投射到这个统一的动作空间,在人类和机器人数据集上进行协同训练,可以促进人类和机器人运动之间的迁移。在推理时,只需将图像空间中的这些预测映射到三维空间,即可恢复机器人的动作。
MT-π 概述如图所示:
数据预处理
机器人演示。为了收集机器人演示,我们假设工作空间内有 ≥ 1个已标定的摄像头(摄像头到机器人的外参已知)以及机器人本体感受状态。对于每次演示,从每个可用视角捕捉图像轨迹 I_t(i)。利用机器人末端执行器的位置和已校准的外参,将末端执行器的三维位置投影到二维图像平面,得到 k 个关键点 s_t(i) = {(u_j(i),v_j(i))} 。实际应用中,取 k = 5,使夹持器上每个手指有两个点,中心有一个点(如图所示)。选择这种点定位方式,是因为它更适合夹持器在抓取动作中的定位。夹持器的打开/关闭状态表示为二元抓取变量 g_t^(i) ∈ {0, 1}。
人类演示。人类演示使用 RGB 摄像头采集,无需访问已标定的外参,从而可以利用大规模人体视频数据集。使用 HaMeR [22](一款现成的手势检测器)提取一组 21 个关键点 s_t(i) = {(u_j(i) , v_j(i) )}。为了粗略匹配机器人手爪的结构,选择 k = 5 个关键点的子集:手腕上一个,拇指和食指上各两个。为了从人体视频中推断每个时间步的抓取动作,使用一种基于手部关键点与被操作物体接近度的启发式算法。对于每个任务,首先使用 Grounding-DINO [62] 和 SAM-v2 [63] 获取物体的像素级掩码。然后,如果目标掩码与拇指加上任何其他指尖上的关键点之间的像素数低于某个阈值,则设置 g_t^(i) = 1。通过松散地匹配人手和机器人夹持器之间关键点的位置和顺序,在图像平面上创建人类和机器人动作表征之间的明确对应关系。
训练流程
关键点重定向网络。尽管人手和机器人夹持器上点之间存在明确的对应关系,但具身差距(例如,手和夹持器之间的尺寸差异)仍然会导致关键点间距明显不同。直接以这些点为条件可能会导致策略过度依赖这些差异,为每个具身生成不同的轨迹预测,从而无法生成在人类演示中捕捉到的动作。为了解决这个问题,引入一个关键点重定向网络(如上图所示),它将机器人关键点映射到与人手关键点更一致的位置。
对于每个人类演示,为除锚点(例如,手腕)之外的所有关键点添加均匀的噪声。训练一个小型多层感知器 (MLP),将这些带噪声的关键点映射回其原始位置。训练完成后,该网络将被冻结并在训练和测试中使用。由于该网络仅训练为将带噪声的关键点映射回其原始间距,因此它可以兼容人类或机器人关键点作为输入。也就是说,任何机器人的关键点都将被视为“噪声点”,并被映射到更接近人手位置的位置。对于人体关键点,该网络充当身份映射。
Motion Track 网络。使用扩散策略目标 [3] 来训练预测 Motion Track 的策略头。网络的输入是来自预训练 ResNet 编码器 [64] 的图像嵌入和像素空间中当前关键点位置 s_t(i) 的串联。然后,网络预测每个二维关键点的偏移量以及短视界 H 内每个未来时间步的夹持器状态 g_t^(i)。重要的是,该模型每次只拍摄一张视点图像,但与视点姿态无关,这使得它能够适应通常来自单个 RGB 视点、互联网规模的真人视频。
图像表示对齐。为了防止策略过度关注人机输入图像之间的视觉差异,使用两个辅助损失函数来促进视觉嵌入的对齐:
• l_KL:[20] 中的 KL 散度损失函数,用于最小化人机特征分布之间的散度
• l_DA:[65] 中的域自适应损失函数,用于通过欺骗判别器来鼓励策略生成难以区分的人机嵌入。
总训练损失函数是原始扩散策略目标函数与辅助损失函数加权和的组合,其中 l_KL 和 l_DA 是缩放因子。在实践中,使用 l_KL = 1.0,并根据人机演示的比例调整 l_DA ∈ [0, 1]。
动作推理
在推理过程中,假设可以访问 2 个已知外参的摄像头。首先利用相机到机器人的外部参数,获取每个视角的机器人夹爪的一组关键点 s_t^(i)。然后,将这些关键点传入冻结关键点重定向网络,以获得 sˆ_t^(i),其位置与训练期间看到的更相似。接下来,将 sˆ_t^(i) 与它的图像嵌入连接起来,并作为输入传入运动轨迹网络 π_θ,以获得每个视角的预测轨迹,以及每个步骤的夹爪状态 gˆ_t +1:t +H(如上图所示)。使用已知外参的立体三角测量,恢复每个时间步轨迹的 3D 位置(如下图所示)。给定当前和预测的未来 3D 关键点,计算一个由旋转矩阵 R 和平移向量 t 组成的刚性变换,以使连续时间步之间的 3D 关键点达到最佳对齐。这些相对变换随后可作为可直接执行的六自由度末端执行器增量动作 a_t:t+H。准确的动作恢复,取决于两个摄像机视图之间的运动轨迹是否一致。通过实证研究发现,以相对一致、单峰的方式收集人类和机器人的演示有助于维持视图之间的一致性,从而实现更可靠的动作恢复。
利用一系列桌面任务对 MT-π 进行评估,并与两种常用的基于图像的 IL 算法进行比较:扩散策略 (DP) [3] 和 ACT [4]。所有算法均基于 25 个遥控机器人演示进行训练。对于扩散策略和 ACT,使用与原始实现相同的输出空间,即 6DoF 末端执行器增量命令。此外,为所有基线配备来自额外腕部摄像头的观测数据(这可以提高性能)。MT-π 仅接收两个第三人称视角,但每个任务会提供大约 10 分钟的额外真人视频演示。
相关文章:
Motion Tracks:少样本模仿学习中人-机器人之间迁移的统一表征
25年1月来自Cornell和Stanford的论文“MOTION TRACKS: A Unified Representation for Human-Robot Transfer in Few-Shot Imitation Learning”。 教会机器人自主完成日常任务仍然是一项挑战。模仿学习 (IL) 是一种强大的方法,它通过演示向机器人灌输技能ÿ…...
【Spring Boot】MyBatis入门:连接Mysql数据库、测试单元、连接的常见错误
MyBatis入门 1.什么是MyBatis?2.准备工作2.1.创建项目2.2.MySQL数据准备2.3.创建对应的实体类 3.写配置文件和获取数据3.1写配置文件3.2 持久层代码 4.单元测试5.连接数据库时常见的错误5.1 url 配置错误5.2 MySQL账号密码错误5.3 找不到数据库5.4 表错误5.3 云服务…...
【AI插件开发】Notepad++ AI插件开发实践:支持配置界面
一、引用 此前的系列文章已基本完成了Notepad的AI插件的功能开发,但是此前使用的配置为JSON配置文件,不支持界面配置。 本章在此基础上集成支持配置界面,这样不需要手工修改配置文件,直接在界面上操作,方便快捷。 注…...
《Spring Boot 测试框架指南:@SpringBootTest与Mockito的最佳实践》
大家好呀!👋 今天我要和大家聊聊Spring Boot测试的那些事儿。作为一名Java开发者,写代码很重要,但写测试同样重要!💯 想象一下,你建了一座漂亮的房子🏠,但如果没有质量检…...
《数据结构初阶》【时间复杂度 + 空间复杂度】
《数据结构初阶》【时间复杂度 空间复杂度】 前言:-----------------------------------------1. 什么是数据结构?2. 什么是算法? -----------------------------------------算法的时间复杂度和空间复杂度1. 为什么要引入时间复杂度和空间复…...
【深度学习—李宏毅教程笔记】Self-attention
目录 一、Self-attention 的引入 1、多样化的输入形式 2、典型的下游任务下游任务 3、传统“全连接 窗口”方法的局限 4、Self‑Attention 的引入 二、Self-attention 的架构 1、Self-attention层的框图表示 2、Self-attention 层的矩阵运算过程 三、Multi-head Self…...
PHP腾讯云人脸核身获取Access Token
参考腾讯云官方文档: 人脸核身 获取 Access Token_腾讯云 public function getAccessToken(){$data [appId > , //WBappid,https://cloud.tencent.com/document/product/1007/49634secret > ,grant_type > client_credential, //授权类型version > 1…...
pytorch基本操作2
torch.clamp 主要用于对张量中的元素进行截断(clamping),将其限制在一个指定的区间范围内。 函数定义 torch.clamp(input, minNone, maxNone) → Tensor 参数说明 input 类型:Tensor 需要进行截断操作的输入张…...
Linux服务器配置Anaconda环境、Pytorch库(图文并茂的教程)
引言:为了方便后续新进组的 师弟/师妹 使用课题组的服务器,特此编文(ps:我导从教至今四年,还未招师妹) ✅ NLP 研 2 选手的学习笔记 笔者简介:Wang Linyong,NPU,2023级&a…...
idea 许可证过期
今天打开IDEA写代码突然提示:Your idea evaluation has expired. Your session will be limited to 30 minutes 评估已过期,您的会话将限制为 30 分钟。也就是说可以使用,但30min就会自动关闭 1 下载 ide-eval-resetter-2.1.6.zip https…...
Git常用命令分类汇总
Git常用命令分类汇总 一、基础操作 初始化仓库git init添加文件到暂存区git add file_name # 添加单个文件 git add . # 添加所有修改提交更改git commit -m "提交描述"查看仓库状态git status二、分支管理 创建/切换分支git branch branch_name …...
归并排序:数据排序的高效之道
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
分布式训练(记录)
为什么要分布式训练? 单机训练有物理上限: 显存不够(大模型根本放不下) 单机计算慢(数据量一多就耗时太长) 多卡并行性不高 分布式训练的常见方式 Data Parallel(数据并行) 每个G…...
vue3中使用拖拽组件vuedragable@next
vue3中使用拖拽组件vuedragablenext 官网传送门 下载 npm install vuedraggablenext基本使用 <script setup> import draggable from vuedraggable import { ref } from vue const list ref([{ id:1,name:第一个 },{ id:2,name:第二个 },{ id:3,name:第三个 }, ]) <…...
Oracle、MySQL、PostgreSQL三大数据库对比分析
Oracle、MySQL、PostgreSQL 三大数据库的对比分析,结合 Java SpringBoot 项目开发 的实际场景,重点说明分库分表、主从复制的实现难度及案例。 一、数据库核心对比 1. 核心区别与适用场景 维度OracleMySQLPostgreSQL定位企业级商业数据库轻量级开源数据…...
java八股之并发编程
1.java线程和操作系统线程之间的区别? 现在java线程本质上是操作系统线程,java中采用的是一对一的线程模型(一个用户线程对应一个内核进程) 2.什么是进程和线程? 1.进程是操作系统一次执行,资源分配和调度的…...
Qt 入门 5 之其他窗口部件
Qt 入门 5 之其他窗口部件 本文介绍的窗口部件直接或间接继承自 QWidget 类详细介绍其他部件的功能与使用方法 1. QFrame 类 QFrame类是带有边框的部件的基类。它的子类包括最常用的标签部件QLabel另外还有 QLCDNumber、QSplitter,QStackedWidget,QToolBox 和 QAbstractScrol…...
Linux系统之----冯诺依曼结构
1.简要描述 冯诺依曼体系结构是现代计算机的基本设计思想,其核心理念是将计算机的硬件和软件统一为一个整体,通过存储程序的方式实现计算。冯诺依曼体系结构的核心思想是通过存储程序实现自动计算,其五大部件协同工作,奠定了现代…...
C++11新特性
目录 引入 C11新特性 统一的初始化列表 一切皆可{}初始化 std::initializer_list 统一的声明 auto decltype nullptr 范围for STL新增容器 STL新增容器接口 左值引用和右值引用 左值和右值 左值引用和右值引用 右值引用的优势(移动语义) 右值引用的使用场景 …...
492Q 型气缸盖双端面铣削组合铣床总体设计
一、引言 492Q 型气缸盖是发动机的重要组成部分,其双端面的加工精度对发动机的性能和可靠性有着重要影响。设计一款适用于 492Q 型气缸盖双端面铣削的组合铣床,能够提高加工效率和质量,满足发动机生产的需求。 二、总体设计要求 加工精度&…...
《软件设计师》复习笔记(4.2)——关系代数、函数依赖、范式
目录 一、关系代数 基本运算 笛卡尔积() 投影(π) 选择(σ) 自然连接(⋈) 真题示例: 二、函数依赖 基本概念 Armstrong公理系统 键与约束 三、范式ÿ…...
IO流(二)
一、字符流 使用字节流可以读取文件中的字节数据。但是如果文件中有中文使用字节流来读取,就有可能读到半个汉字的情况,这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码,但是如果文件过大又不太合适。 所以Java专门为我们提供了另…...
#Linux动态大小裁剪以及包大小变大排查思路
1 动态库裁剪 库分为动态库和静态库,动态库是在程序运行时才加载,静态库是在编译时就加载到程序中。动态库的大小通常比静态库小,因为动态库只包含了程序需要的函数和数据,而静态库则包含了所有的函数和数据。静态库可以理解为引入…...
天梯赛数据结构合集
1.集合操作:PTA | 程序设计类实验辅助教学平台 主要是注意set的取交集操作,AC代码: #include<bits/stdc.h> using namespace std; int n,m,k; set<int> a[60]; int main(){cin>>n;for(int i1;i<n;i){cin>>m;for…...
pdfjs库使用记录1
import React, { useEffect, useState, useRef } from react; import * as pdfjsLib from pdfjs-dist; // 设置 worker 路径 pdfjsLib.GlobalWorkerOptions.workerSrc /pdf.worker.min.js; const PDFViewer ({ url }) > { const [pdf, setPdf] useState(null); const […...
LIMS引领综合质检中心数字化变革,赋能质量强国战略
在质量强国战略的深入推进下,我国综合质检机构迎来了前所未有的发展机遇,同时也面临着诸多严峻挑战。随着检测领域从传统的食品药品监督向环境监测、新材料检测等新兴领域不断拓展,跨领域协同管理的复杂度呈指数级增长。作为提升产品质量的关…...
MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复20250418
MySQLRedis实战教程:从Docker安装部署到自动化备份与数据恢复 一、前言 在企业应用中,对MySQL和Redis运维的要求越来越高: 不能仅是启动就算部署运行稳定、隔离、访问控制、备份恢复、安全可靠,才是 企业级的基本功能 本文将手…...
嵌入式音视频开发指南:从MPP框架到QT实战全解析
嵌入式音视频开发指南:从MPP框架到QT实战全解析 一、音视频技术全景概述 1.1 技术演进里程碑 2003-2010年:标清时代(H.264/AVC + RTMP)2011-2018年:高清时代(H.265/HEVC + WebRTC)2019-至今:智能时代(AV1 + AI编解码 + 低延迟传输)1.2 现代音视频技术栈 #mermaid-s…...
如何使用Python进行自动化的系统管理?
Python已经成为系统管理员最流行的编程语言之一,因为它简单、灵活,并且广泛支持各种系统管理任务。无论您是自动执行重复性任务,管理文件和目录,还是处理用户权限,Python都提供了一组强大的工具来简化您的工作流程。 …...
拆机装机,通电主板亮灯风扇不转无法开机解决办法
电源开机线 重启线 usb耳机模块 灯线 看来电源没问题 参考https://zhidao.baidu.com/question/83939532/answer/2321171868.html 买了个新主板过几天到看看会不会好...
IntelliSense 已完成初始化,但在尝试加载文档时出错
系列文章目录 文章目录 系列文章目录前言一、原因二、使用步骤 前言 IntelliSense 已完成初始化,但在尝试加载文档时出错 File path: E:\QtExercise\DigitalPlatform\DigitalPlatform\main\propertyWin.ui Frame GUID:96fe523d-6182-49f5-8992-3bea5f7e6ff6 Frame …...
SuperMap iClient3D for WebGL 如何加载WMTS服务
在 SuperMap iClient3D for WebGL 中加载WMTS服务时,参数配置很关键!下面我们详细介绍如何正确填写参数,确保影像服务完美加载。 一、数据制作 对于上述视频中的地图制作,此处不做讲述,如有需要可访问:Onl…...
[密码学实战]基于Python的国密算法与通用密码学工具箱
引言 在当今数字化浪潮中,信息安全已成为个人隐私保护与商业机密守护的核心议题。作为一位在密码学领域深耕多年的技术实践者,我深谙密码学工具在构建数字安全防线中的关键作用。正是基于这份认知与责任,我倾力打造了一款全方位、高性能的密…...
[密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案
[密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案 引言 国密算法(SM2/SM3/SM4)在金融、政务等领域广泛应用,但开发者在集成gmssl库实现SM2签名时,常遇到与第三方工具(如OpenSSL、国密网关)验证不…...
LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, stream 流操作
LIB-ZC, 一个跨平台(Linux)平台通用C/C扩展库, stream 流操作 lib-zc 封装了流操作命名空间 zcc基础类 stream(基类), iostream(io流封装) class stream 介绍 连接相关 // 都是虚函数, 为 iostream 等做准备virtual inline bool connect(const char *destination) { return …...
从零开始解剖Spring Boot启动流程:一个Java小白的奇幻冒险之旅
大家好呀!今天我们要一起探索一个神奇的话题——Spring Boot的启动流程。我知道很多小伙伴一听到"启动流程"四个字就开始头疼,别担心!我会用最通俗易懂的方式,带你从main()方法开始,一步步揭开Spring Boot的…...
概率多假设跟踪(PMHT):多目标跟踪中的概率软关联与高效跟踪算法解析
一、PMHT 的起源与核心定位 (一)背景 在多目标跟踪中,传统算法面临以下瓶颈: JPDA:单帧局部最优关联,无法处理跨帧长时间断联,且假设目标数固定(如雷达跟踪中预设目标数范围&…...
4.信号和槽|存在意义|信号和槽的连接方式|信号和槽断开|lambda表达式|信号和槽优缺点(C++)
信号和槽存在意义 所谓的信号槽,终究要解决的问题,就是响应用户的操作 信号槽,其实在GUI开发的各种框架中,是一个比较有特色的存在 其他的GUI开发框架,搞的方式都要更简洁一些~~ 网页开发 (js dom api) 网…...
电脑 BIOS 操作指南(Computer BIOS Operation Guide)
电脑 BIOS 操作指南 电脑的BIOS界面(应为“BIOS”)是一个固件界面,允许用户配置电脑的硬件设置。 进入BIOS后,你可以进行多种设置,具体包括: 1.启动配置 启动顺序:设置从哪个设备启动&#x…...
Scrapeless Scraping Browser: A high-concurrency automation solution for AI
介绍:升级无缝抓取浏览器的并发能力 作为 Scrapeless 的开发者和创始团队,我们对人工智能自动化的未来充满真诚的热情。我们的使命是创建一个真正为 AI 设计的自动化浏览器。在过去的几年中,从 Browserless.io 到众多云服务供应商推出的“浏…...
Java项目—— 拼图小游戏(进阶版)
项目需求 在拼图小游戏基础版的基础上,完成下列要求: 一、实现更换拼图图片功能 1,给美女,动物,运动菜单按钮添加单击事件(动作监听) 2,当我们点击了美女之后,就会从13…...
解析:深度优先搜索、广度优先搜索和回溯搜索
一、深度优先搜索(DFS) 1. 原理 思想:从起始节点出发,顺着一条路径不断深入,直到到达目标或无路可走,然后回溯到最近的分支点,继续探索其他分支。 应用场景:路径查找、连通性检测、…...
探索大语言模型(LLM):循环神经网络的深度解析与实战(RNN、LSTM 与 GRU)
一、循环神经网络(RNN) 1.1 基本原理 循环神经网络之所以得名,是因为它在处理序列数据时,隐藏层的节点之间存在循环连接。这意味着网络能够记住之前时间步的信息,并利用这些信息来处理当前的输入。 想象一下…...
从零开始开发 MCP Server
作者:张星宇 在大型语言模型(LLM)生态快速演进的今天,Model Context Protocol(MCP)作为连接 AI 能力与真实世界的标准化协议,正逐步成为智能体开发的事实标准。该协议通过定义 Resources&#…...
Oracle日志系统之重做日志和归档日志
Oracle日志系统之重做日志和归档日志 重做日志归档日志 本文讨论Oracle日志系统中对数据恢复非常重要的两个日志:重做日志和归档日志。 重做日志 重做日志,英文名Redo Log,顾名思义,是用来数据重做的,主要使用场景是事…...
嵌入式开发--STM32G4系列硬件CRC支持MODBUS和CRC32
需求 在项目中,需要用到MODBUS CRC16校验,也要用到CRC32的校验,出于效率的考虑,准备用硬件CRC。 CRC 16的参数模型有很多种,我这里用的是MODBUS,对于不同的参数模型,会有不同的参数设置和初值&a…...
基于尚硅谷FreeRTOS视频笔记——4—多任务处理
目录 多任务处理 任务调度 任务的调度策略 优先级不同 优先级相同 多任务处理 通俗来讲就是 能够在同一时间 同时 进行多个任务的处理,这就时多任务处理。 但是,单核处理器一次只能处理一个任务,就是说在while中,任务们只能…...
中小型及初创企业如何实现数字化转型?
在当今动态的商业环境中,财务团队开始肩负起推动企业数字化转型的重任,即从传统的财务规划系统稳步迈向基于商业智能平台和以创新技术为驱动的解决方案领域。这些举措有望提高运营和分析效率,同时依托数据驱动的决策机制,帮助企业…...
java输出、输入语句
先创建一个用于测试的java 编写程序 #java.util使java标准库的一个包,这里拉取Scanner类 import java.util.Scanner;public class VariableTest {public static void main(String[] args) {#创建一个 Scanner 对象Scanner scanner new Scanner(System.in);System.…...
Python基础知识语法归纳总结(数据类型-1)
Python基础知识&语法归纳总结(数据类型) 一、Python基本数据类型 尤其注意,Python中的变量不需要特定的去声明,每个变量在使用前都必须对其进行赋值,它没有类型,我们所说的“类型”是变量所指的内存中对…...