尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

技术拆解(十六)具身智能:ACT不是VLA,也不是Diffusion:动作块究竟怎么生成?

技术拆解(十六)具身智能:ACT不是VLA,也不是Diffusion:动作块究竟怎么生成? 目录一、ACT的提出背景与模型定位1.1 为什么单步动作预测不适合精细操作1.2 ACT是什么1.3 ACT和ALOHA是什么关系1.4 ACT不是VLA模型二、ACT的数据组织与动作分块2.1 一条示范Episode是什么2.2 状态、动作与下一状态的关系2.3 一条Episode怎样切成动作块样本2.4 动作块和训练批次的张量形状2.5 动作分块的作用2.6 ACT的输出形式连续动作块而不是动作Token三、ACT的模型结构3.1 先明确ACT中几个容易混淆的名称3.2 ACT完整结构3.3 第一部分CVAE Encoder负责提取动作风格3.4 第二部分ACT Policy负责预测动作块3.5 图像如何进入ACT Policy3.6 Policy内部的Transformer Encoder负责什么3.7 Policy内部的Transformer Decoder负责什么3.8 ACT到底有几个Encoder和Decoder四、ACT的训练过程4.1 ACT不是分成两个阶段分别训练4.2 一条训练样本的形状4.3 动作重建损失4.4 KL正则项4.5 为什么需要潜变量z4.6 推理时为什么z不在每一步随机采样为什么z04.7 能不能z随机采样一次并保持整条Episode不变4.8 ACT和Diffusion的噪声作用不同五、ACT的推理与时序集成Temporal Ensembling5.1 推理阶段保留哪些模块5.2 ACT实际会在每一步重新预测5.3 时序集成Temporal Ensembling是什么5.4 ACT仍然是闭环策略六、ACT的能力与实验意义6.1 少量示范学习精细任务6.2 为什么ACT适合双臂任务6.3 ACT解决了什么没解决什么七、ACT的贡献、局限与技术演进7.1 ACT的核心贡献7.2 ACT的主要局限7.3 ACT、RT-1和Diffusion Policy的区别7.4 整体总结哲学视角1.1 为什么单步动作预测不适合精细操作传统行为克隆通常根据机器人当前观察ot预测当前一步动作at这种方法在简单抓取任务中可以工作但在双臂协作、插入电池、打开杯盖和穿过魔术贴等精细任务中容易出现误差累积。模型在某一步产生较小误差后机器人就可能进入训练示范中很少出现的状态下一步预测误差继续增大最终偏离正确轨迹。ACT论文将这一问题称为模仿学习中的Compounding Error即误差随着任务时间不断累积。精细操作通常还需要较高控制频率。ALOHA系统以50Hz记录和执行动作一段10秒的操作轨迹就包含约500个时间步。如果策略每次只预测一个动作那么一个任务需要连续作出数百次决策任何一步的偏差都可能影响后续过程。ACT因此不再只预测当前一步而是一次预测未来一段动作序列。1.2 ACT是什么ACT全称为Action Chunking with Transformers由Tony Zhao等人在2023年随ALOHA双臂机器人系统提出。ACT是一种基于Transformer、CVAE和动作分块的模仿学习策略主要面向高频、双臂和精细接触操作。其核心映射不是而是其中表示从当前时刻开始的未来H步动作块。ACT通过一次预测多个连续动作将原本数百步的任务压缩成数量更少的高层决策单元从而降低任务的有效决策长度。1.3 ACT和ALOHA是什么关系ALOHA全称为A Low-cost Open-source Hardware System for Bimanual Teleoperation是一套低成本双臂遥操作和数据采集平台ACT则是使用ALOHA采集的数据训练出的模仿学习算法。二者不是同一个概念ALOHA机器人硬件与遥操作采集系统ACT根据示范学习动作序列的策略模型原始ALOHA系统使用两台ViperX机械臂作为执行端两台较小的WidowX机械臂作为人类操作端并通过关节空间映射进行遥操作。系统配有前方、顶部和两个腕部摄像头图像、机器人状态和遥操作动作以50Hz同步记录。1.4 ACT不是VLA模型ACT通常不接收自然语言指令也没有使用互联网预训练VLM。原始ACT一般针对一个具体任务单独训练例如“插入电池”或“打开杯盖”输入是多视角图像和机器人关节状态输出是未来连续动作块。因此更准确的定位是ACT任务专用的视觉—动作模仿学习策略ACT的重要意义主要在动作建模侧它证明了动作分块、CVAE和时序集成可以显著提升高频精细操作的稳定性。二、ACT的数据组织与动作分块2.1 一条示范Episode是什么一条ACT示范Episode是人类操作者通过遥操作控制机器人从任务开始到任务结束所记录的一段完整轨迹可以表示为其中T表示整条Episode包含的控制时间步数。在每一个时刻t系统同步记录原始ALOHA中观察由4路RGB图像和两条机械臂的当前关节位置组成动作标签采用两台Leader机械臂的目标关节位置而不是根据相邻图像计算出的视觉位移。ALOHA双臂系统中每条机械臂包含6个关节和1个夹爪维度左右两条机械臂合计7714维因此当前状态和动作通常都是其中因此qt和at虽然形状相同但含义不同qt当前实际关节位置at当前下发的目标关节位置动作标签采用Leader机械臂记录的目标关节位置而不是根据前后图像计算得到的视觉位移也不是电机电流或力矩。2.2 状态、动作与下一状态的关系在示范数据采集过程中人类操作者根据当前图像和机器人状态给出目标动作训练完成后ACT策略将代替人类操作者根据当前观察预测目标动作得到目标动作后底层位置控制器驱动机器人从当前实际状态qt向目标位置at移动当底层位置控制器跟踪速度较快、控制周期较短时可以近似认为但二者并不严格相等因此时间轴上的关系可以理解为随后在下一控制时刻继续记录整条Episode就是这些图像、实际状态和目标动作沿时间轴连续排列形成的轨迹。2.3 一条Episode怎样切成动作块样本首先定义当前观察其中ot包含时刻t的多视角图像和机器人当前实际关节状态。假设动作块长度为H从完整专家动作轨迹中截取从时刻t开始的未来H步动作一条完整Episode可以沿时间轴切成相邻两个动作块会重叠H−1个动作只沿时间轴向后移动一个控制步。因此在时刻t一条ACT训练样本可以写成展开为ACT从功能上学习的是也就是当前多视角图像当前实际关节状态→未来连续目标动作块因此每一个时间步都会对应一个从当前状态开始的未来动作块。训练标签直接来自人类示范中从当前时刻开始的真实目标关节位置序列ACT学习的是状态下的连续动作块而不是根据qt1−qt或相邻图像位移计算得到。注ot是状态At是连续动作块at是模型要求机器人执行的目标关节位置It是图像qt是机器人当前的关节位置。2.4 动作块和训练批次的张量形状ACT输出的是未来多步的双臂目标关节位置其中H是动作块包含多少个时间步D是每个时间步的动作维度。在原始ALOHA双臂机器人中H100,D14展开就是如果训练批次大小为32真正进入网络的数据形状通常是含义是32条训练样本×每条100个未来动作×每个动作14维。因此一条ACT训练样本可以写成这些目标位置由机器人底层高频PID控制器跟踪ACT本身不直接输出各电机的电流或力矩。原始ACT实验常使用H100在50Hz控制频率下100个动作点约覆盖未来2秒100÷502秒但ACT并不是每2秒才观察一次再完全开环执行100步。实际推理时模型会不断根据新图像和新关节状态重新预测相互重叠的动作块后续再通过Temporal Ensembling融合这些预测。2.5 动作分块的作用ACT不只预测当前一个动作而是根据当前观察一次预测未来H步连续动作动作分块主要有两个作用。第一它可以缩短任务的有效决策长度。假设一项任务包含T500个控制时间步单步策略需要连续进行约500次动作决策若动作块长度为H100模型每次可以同时学习未来100步动作之间的连续关系。从策略规划角度看任务可以被理解为约5个较长的动作阶段500个单步动作→约5个长度为100的动作段这并不代表机器人实际上只更新5次而是说明模型一次输出的内容覆盖更长时间范围不再把每一个动作都看成相互独立的决策而是能够整体学习“靠近目标—抓取—抬起”等连续动作结构从而降低长轨迹中的误差累积。第二动作块可以提供更完整的时间上下文。人类遥操作数据中经常包含短暂停顿例如操作者在对准目标时停顿或者在思考下一步时保持姿态。若模型只根据当前状态预测一个动作相似画面可能同时对应“继续移动”和“暂时保持不动”模型较难判断当前任务阶段。ACT一次学习完整动作块即使动作块中间出现停顿模型也能结合停顿前后的动作判断它是正常操作过程的一部分而不是机器人应该永久停止。论文指出动作分块有助于处理人类示范中的时间相关干扰和非马尔可夫行为。2.6 ACT的输出形式连续动作块而不是动作TokenACT与RT-1、RT-2不同。RT-1和RT-2先把动作离散化为动作Token而ACT直接输出连续目标关节位置其中一个at就包括当前的2个机械臂的14个动作信息是一个连续向量不是14个离散Token。因此ACT从输出形式上更接近连续回归模型而不是动作分类模型。它虽然通过CVAE建模动作分布但最终Decoder输出的是连续数值不需要经过256档离散化和反量化。三、ACT的模型结构3.1 先明确ACT中几个容易混淆的名称ACT的结构之所以容易理解混乱是因为同一个网络会从不同层级被赋予不同名称。首先需要明确四个概念名称实际作用训练时推理时CVAE Encoder从真实动作块中提取动作风格z使用删除ACT Policy根据图像、机器人状态和z预测动作块使用使用CVAE DecoderACT Policy在CVAE框架下的功能名称使用使用Transformer DecoderACT Policy内部负责生成动作块的具体模块使用使用Act的模型结构1个训练专用的CVAE Encoder1个作为CVAE Decoder的ACT PolicyACT官方项目将其描述为CVAE Encoder将动作序列和关节状态压缩成风格变量zACT Policy作为CVAE的Decoder根据多视角图像、关节状态和z预测动作序列。最关键的一点是ACT PolicyCVAE Decoder也就是说“CVAE Decoder”和“ACT Policy”指的是同一个整体策略网络只是命名角度不同从CVAE角度看它负责把条件和潜变量z解码成动作块从机器人控制角度看它就是根据当前观察预测未来动作的Policy。而在这个Policy内部又包含视觉编码器Transformer EncoderTransformer Decoder动作输出层3.2 ACT完整结构ACT训练阶段的整体结构可以表示为两条汇合路径。第一条路径负责提取动作风格第二条路径负责预测动作其中3.3 第一部分CVAE Encoder负责提取动作风格训练时ACT拥有真实专家动作块CVAE Encoder接收但通常不接收相机图像。它要解决的问题不是“画面里有什么”而是这一段专家动作采用了什么运动方式或动作风格例如同样完成抓取任务专家可能从左侧靠近也可能从右侧靠近可能先抬高手臂再横向移动也可能先横向移动再抬高。这些轨迹差异由潜变量z描述。CVAE Encoder的输入序列可以概括为其中14维关节状态和每一个14维动作向量都会先通过线性层转换为连续特征向量再送入Transformer Encoder。这里的“动作Token”只是Transformer内部的连续嵌入不是RT-1、RT-2那种离散动作Token。CVAE Encoder最后根据[CLS]位置的输出预测然后通过重参数化得到因此z是对整段动作轨迹风格的低维概括而不是未来某一个具体关节动作。官方说明中将z称为动作序列的Style并指出CVAE Encoder使用Transformer实现。3.4 第二部分ACT Policy负责预测动作块得到z之后ACT Policy接收三类信息然后直接输出未来动作块这个ACT Policy在CVAE框架中被称为CVAE Decoder因为它把观察条件和潜变量z解码成动作序列。但它不是一个简单的全连接Decoder而是由以下模块组成ResNet视觉编码器→Transformer Encoder→Transformer Decoder→连续动作输出层因此后文讨论“Policy内部的Transformer Decoder”时不要再把它理解成另一个CVAE Decoder。二者关系是3.5 图像如何进入ACT PolicyACT使用多台摄像头观察环境例如前方相机、顶部相机和左右腕部相机。每一路图像先经过ResNet-18其中c表示摄像头编号Ftc是保留空间位置的视觉特征图。特征图沿空间维度展开后形成视觉特征序列每个都是一个连续视觉Token。不同相机产生的视觉Token被组合起来为模型提供全局场景、目标物体位置以及夹爪附近的精细信息。原始ALOHA系统使用多视角RGB相机进行闭环视觉控制。3.6 Policy内部的Transformer Encoder负责什么当前机器人状态qt和动作风格z分别经过线性投影然后与多视角视觉Token一起进入Policy内部的Transformer Encoder其中可以称为Encoder Memory。它综合表示因此Policy内部的Transformer Encoder负责的是多模态信息融合而不是直接输出机器人动作。3.7 Policy内部的Transformer Decoder负责什么为了输出未来H个动作ACT设置H个可学习的Action Query每个Action Query对应动作块中的一个未来时间位置Transformer Decoder让这些Action Query读取Encoder Memory即Transformer Encoder编码器Mt输出Transformer Decoder解码器中的Q映射到特征hi其中每个表示未来第i个时间位置的动作特征。最后每个动作特征经过同一个连续动作输出层得到于是完整输出为这里没有256档离散化没有动作词表也没有从Token反量化的过程。Transformer Decoder输出的是动作隐藏向量最后由线性层直接变成连续关节目标。3.8 ACT到底有几个Encoder和Decoder从完整网络结构看ACT可以分为两个结构①1个CVAE Encoder它内部使用Transformer Encoder从真实动作块中提取z。②1个CVAE DecoderPolicy1个视觉Encoder1个Transformer Encoder1个Transformer Decoder1个动作输出头因此可以最终记成如下推理时用于提取z的CVAE Encoder会被删除。四、ACT的训练过程4.1 ACT不是分成两个阶段分别训练ACT虽然包含“提取z”和“预测动作块”两条处理路径但并不是先训练完CVAE Encoder再单独训练动作预测网络。一次完整训练前向过程为然后一次反向传播同时更新因此更准确的说法是ACT在结构上包含动作风格编码和动作预测两个功能模块但整个模型通过同一个总损失端到端联合训练。ACT的数据来自人类遥操作示范其核心训练目标仍属于模仿学习中的行为克隆。模型根据当前图像和关节状态预测人类接下来会执行的动作块并让预测结果接近真实示范。ACT不依赖机器人在线随机探索也不主要使用环境奖励训练策略。4.2 一条训练样本的形状对于一条训练样本输入观察为专家动作块为其中双臂ALOHA中如果训练批次大小为B动作数据形状为三个维度分别代表训练样本数量×未来动作数量×每个动作的维度4.3 动作重建损失ACT Policy输出然后与专家动作块逐时间步、逐动作维度计算L1损失例如会与专家示范中的进行比较。损失不仅要求当前动作正确还要求整个未来动作块都接近专家轨迹。ACT使用行为克隆学习专家动作序列并通过动作分块缩短策略的有效决策长度。L1损失会对每一个未来时间步、每一个关节维度计算绝对误差。论文作者报告使用L1比L2更有利于精确建模动作序列同时直接预测绝对目标关节位置比预测关节增量效果更好。4.4 KL正则项CVAE Encoder产生ACT还使用KL损失使该分布接近标准正态分布总损失可以写成其中重建损失要求z能够帮助Policy还原真实动作块KL损失则避免每条示范的z分布得过于分散使训练阶段得到的潜变量接近统一先验分布。β控制隐变量中可以携带多少动作风格信息。原始ACT实验中使用β10。4.5 为什么需要潜变量z同一幅画面、同一机器人状态下可能存在多条合理轨迹。例如如果直接使用普通回归模型可能把两条轨迹平均平均轨迹未必是一条合理轨迹。ACT使用z描述不同示范的整体动作风格使Policy能够根据当前观察动作风格重建对应的完整动作块。不过原始ACT在推理阶段并没有重点追求多样化采样而是更重视动作稳定和任务成功率。4.6 推理时为什么z不在每一步随机采样为什么z0①推理时为什么z不在每一步随机采样假设每一个控制时间步都重新采样可能出现t时刻zt代表从左侧靠近t1时刻zt1代表从右侧靠近这样两个连续动作块可能选择不同风格导致机械臂轨迹左右跳动。尤其ACT每个控制周期都会重新预测一个动作块如果每次z都随机变化策略会缺少时间一致性。②推理时为什么z0推理阶段没有真实未来动作因此无法再通过CVAE Encoder计算z。ACT直接丢弃Encoder并将z0也就是使用标准高斯先验的均值进行确定性动作解码。这样能够获得较稳定、可重复的动作轨迹可以得到确定性输出相同观察→相同动作块这对于真实机器人安全和动作平滑更加重要。但也意味着原始ACT在实际部署时没有充分随机采样多种动作模式。4.7 能不能z随机采样一次并保持整条Episode不变可以。这比每个时间步重新采样更合理然后整条Episode中固定这个zz0z1⋯zT这样可以让机器人选择一种动作风格并在整个任务中保持一致。不过原始ACT实验更关注任务成功率和稳定性而不是生成多样化行为所以直接采用z0使用先验均值进行确定性推理。4.8 ACT和Diffusion的噪声作用不同ACT的z和Diffusion Policy的随机噪声看起来相似但角色完全不同。①ACT中z低维动作风格条件策略直接一次输出动作块所以ACT中的z只是帮助Decoder选择动作模式不是需要被还原成动作的噪声本体。②Diffusion Policy中这里的随机噪声与最终动作块具有相同或相近的形状例如模型必须经过多轮去噪随机噪声是Diffusion生成过程必需的初始状态。没有这个随机噪声就没有“从噪声逐步生成动作”的过程。③两者综合比较五、ACT的推理与时序集成Temporal Ensembling5.1 推理阶段保留哪些模块推理阶段没有真实专家动作块因此删除CVAE Encoder只保留ACT Policy多视角图像当前关节状态z→视觉编码器→Transformer Encoder→Transformer Decoder→动作块完整映射为其中5.2 ACT实际会在每一步重新预测假设在时间tACT输出机器人并不是必须把整个动作块完全开环执行结束。到了时间t1模型读取新的图像和关节状态再输出因此相同的未来执行时刻会被不同时间生成的动作块重复预测。例如真实时间t2会得到5.3 时序集成Temporal Ensembling是什么需要注意Temporal Ensemblin不会只采用最新动作块中的预测而是对所有指向同一真实时间步的动作进行加权平均。例如在时间t模型预测到了时间t1模型根据最新观察又预测到了时间t2再次预测因此对于真实时间t2一共有三份预测时序集成将它们加权平均通常越新的预测权重越高因为它使用了更新的图像和机器人状态。所以Temporal Ensembling的本质是旧规划提供稳定性新规划提供最新环境反馈这样可以减少模型每次重新预测动作块时产生的轨迹跳变和机械臂抖动。5.4 ACT仍然是闭环策略ACT虽然一次输出未来多个动作但仍然会持续读取新观察观察→预测动作块→执行当前融合动作→新观察→重新预测因此ACT不是当前观察→一次输出2秒动作→完全不再观察而是动作块规划高频视觉反馈时序集成六、ACT的能力与实验意义6.1 少量示范学习精细任务原始论文使用ALOHA采集人类示范每个真实任务通常包含约50条示范单条示范持续8至14秒约相当于10分钟左右的总示范数据。ACT在打开透明调味杯、插入电池、打开拉链袋、准备胶带和穿鞋等高精度双臂任务上表现出明显优势论文报告多项任务达到约80%至90%的成功率。6.2 为什么ACT适合双臂任务一个时刻的动作同时包含左右两条机械臂因此模型不会分别独立预测左右手而是联合生成模型能够同时学习这比单独预测两条机械臂更容易保持双臂的时间协调。双臂操作要求两条机械臂在时间上保持一致例如一只手固定物体另一只手完成插入或者一只手交接胶带另一只手接住。如果左右手动作分别独立预测容易出现一只手先到、另一只手未准备好的问题。Transformer在生成时可以联合建模左右手在未来多个时间步的协调关系因此比逐手、逐步预测更适合双臂协作。6.3 ACT解决了什么没解决什么ACT重点解决的是高频长轨迹误差累积人类示范随机性双臂时序协调但它没有解决开放语言理解、跨机器人泛化和互联网知识迁移。原始模型每个任务从头训练主要学习固定机器人、固定相机和固定任务的数据分布。因此原始ACT更准确的定位仍然是任务专用的视觉—动作模仿学习策略而不是通用VLA或世界模型。七、ACT的贡献、局限与技术演进7.1 ACT的核心贡献第一ACT将机器人策略从单步动作预测改为未来动作块预测将高频长任务的有效决策长度明显缩短。第二它提出Temporal Ensembling将多个重叠动作块对同一时间步的预测融合提高动作平滑性和闭环响应能力。第三它通过CVAE潜变量z建模人类示范中的动作变化而不是只用普通单一回归。第四它证明低成本双臂硬件配合高质量示范和动作分块策略也能完成插接、开盖和柔性物体操作等精细任务。7.2 ACT的主要局限第一ACT通常针对单一任务从头训练不具备RT-2或π0那样的互联网视觉语言知识。第二行为克隆仍受训练分布限制机器人进入示范中没有覆盖的状态后可能无法恢复。第三动作块长度需要在连贯性和反馈速度之间权衡过长会削弱环境变化响应过短则失去分块优势。第四Temporal Ensembling要求每一步重新运行模型并维护重叠预测增加推理计算。第五虽然训练时使用CVAE描述动作变化但原始部署把z固定为0实际生成接近确定性策略没有充分利用CVAE生成多种行为的能力。第六视觉感知不清晰时动作分块无法解决目标位置本身难以识别的问题论文在穿魔术贴和打开扁平拉链袋等任务中仍观察到明显失败。7.3 ACT、RT-1和Diffusion Policy的区别对比项RT-1ACTDiffusion Policy模型定位多任务语言条件策略精细动作块策略扩散式视觉运动策略输入语言最近6帧图像当前多视角图像关节状态视觉或状态观察历史输出单步离散动作Token连续动作块连续动作块动作生成并行分类CVAETransformer直接解码从噪声迭代去噪多模态建模较弱CVAE隐变量扩散动作分布闭环方式每步重新预测重叠动作块时序集成Receding Horizon语言能力USE任务条件原始模型通常无语言原始模型通常无语言7.4 整体总结1.ACT训练阶段【CVAE编码】真实动作块当前关节状态→CVAE Encoder→z【CVAE解码】多视角图像→ResNet→视觉Token视觉Token当前关节状态z→Policy内部Transformer EncoderH个Action QueryEncoder Memory→Transformer DecoderH个动作隐藏向量→线性动作头→H×D预测的连续动作块动作重建损失KL损失→整个模型联合反向传播2.ACT推理阶段删除CVAE Encoderz0当前图像当前关节状态→ACT Policy→未来动作块不同时间产生的重叠动作预测→Temporal Ensembling→当前执行动作3.ACT需要重点记住八点①ACT从结构上是一个条件VAE但真正部署的机器人策略是CVAE的Decoder。②CVAE Decoder与ACT Policy是同一个整体模块不是两个不同的动作解码器。③ACT Policy内部包含视觉编码器、Transformer Encoder、Transformer Decoder和连续动作输出层。④训练时另外存在一个CVAE Encoder用真实动作块和当前关节状态提取潜变量z。⑤训练阶段一共有两个Transformer Encoder但只有一个Transformer Decoder。⑥推理阶段删除CVAE Encoder只保留Policy内部的Transformer Encoder和Transformer Decoder。⑦一个动作一个动作块双臂示例中可以写成⑧ACT最终直接输出连续动作向量不进行动作离散化也没有动作词表。⑨推理时使用z0是因为它是标准正态先验的均值可以提供稳定、确定的动作风格它与Diffusion Policy的动作噪声不是同一个概念。⑩Temporal Ensembling即“时序集成”平均的是不同时间对同一未来执行时刻的预测而不是把相邻时刻的动作直接平均。哲学视角“动作分块不是少做决策而是让决策彼此承担后果。”——当50Hz控制把一次精细操作拉成长达数百步的轨迹100步动作块便不再只是批量输出CVAE中的z也不只是随机变量Action Query、连续关节目标与Temporal Ensembling更不是彼此孤立的模块它们共同把容易累积的单步误差翻译成可被整体建模、持续校正的运动结构。ACT表面上是在预测双臂下一段怎么动本质上是在重新安排决策与反馈的边界旧动作块保留惯性新观察修正规划z0约束风格时序集成消解跳变。真正改变的不是机器人一次看得更远而是每一次新判断都能继承过去又允许现实及时改写未来。结尾语如果本文对您有帮助请点赞鼓励一下这对我真的很重要。您的每一次鼓励都是我继续创作的动力谢谢啦下次见。
返回列表