具身智能入门路线:从仿真平台到强化学习与VLA模型

具身智能入门路线:从仿真平台到强化学习与VLA模型 前阵子接手一个具身智能方向的入门项目本以为自己有机器学习和 ROS 基础能很快把仿真环境跑通结果还是在 MuJoCo 和 Gazebo 的版本兼容、强化学习 reward 设计上反复折腾了很多天。网上的资料大多只讲了某一个仿真器缺少一条从“物理仿真 → 感知 → 强化学习 → 具身大模型”的完整路线。这篇文章就把我整理过的入门路径、环境配置、最小实战代码和排错经验一次性梳理出来希望能帮你少走弯路。本文适合零基础入门具身智能、准备做机器人仿真实验、或者打算转行具身智能方向的开发者。读完你会掌握三大主流仿真平台MuJoCo、Gazebo、Isaac Sim的核心用法理解仿真环境里感知模块如何接入能搭一个简单的强化学习训练骨架并弄清具身大模型在整个技术栈中处于什么位置。1. 具身智能到底是什么1.1 从“会看”到“会动”的跨越传统的人工智能大多处理的是“感知”任务比如图像分类、目标检测、语音识别输入一张图片或一段文字输出一个标签或一句话。这类任务通常不涉及物理世界中的“身体”和“动作”。而具身智能Embodied Intelligence强调的是一个智能体需要拥有物理载体通过与真实或仿真环境的持续交互来获得感知、理解、决策和行动能力。通俗地理解具身智能不是让 AI “只看”而是让 AI “看了之后能动手操作”。比如机械臂看到桌面上有一个杯子需要规划手臂关节角度然后抓取并放到指定位置又比如四足机器人在起伏地形上行走需要根据身体姿态实时调整腿部发力。它的核心研究问题包括环境感知、状态估计、运动规划、强化学习、模仿学习和多模态大模型等。1.2 机器人学、深度学习和具身智能的关系很多初学者会把“具身智能”等同于“机器人学”也容易把它等同于“深度学习”。这里需要先做一个区分。机器人学偏重硬件和控制运动学、动力学、轨迹规划、PID 控制、逆运动学IK等。它强调模型的物理可解释性和控制的稳定性。深度学习偏重数据和表征通过大量数据训练神经网络提取视觉、语言等模态中的特征但它本身不负责输出物理世界中的力矩指令。具身智能把两者结合用深度强化学习或模仿学习来替代一部分传统控制策略让智能体在和环境的交互中自动学习行为。也就是说你既需要懂机器人学的坐标系、关节、动力学又需要懂深度学习的网络设计和训练方法还要会使用物理仿真器来高效采集数据。1.3 入门技术栈的全局地图一个完整的具身智能项目通常包含以下模块模块作用常见工具物理仿真提供可交互的虚拟环境MuJoCo、Gazebo、Isaac Sim感知模块获取视觉、深度、点云数据OpenCV、Open3D、YOLO控制模块输出关节力矩或位置指令ROS、MoveIt、传统控制器决策模块学习选择动作的策略PPO、SAC、IQL 等强化学习算法大模型模块自然语言理解与任务拆解VLA、RT 系列、OpenVLA入门阶段不要贪多先把“物理仿真 强化学习”这条主链路跑通再逐步加入感知和大模型。2. 三大仿真平台选型与对比市面上能用于具身智能的仿真器很多但讨论度最高、资料最全的是 MuJoCo、Gazebo 和 Isaac Sim。这三个平台定位不同适合的场景也不同。2.1 MuJoCo轻量、快速的接触仿真引擎MuJoCoMulti-Joint dynamics with Contact是一个开源物理引擎强调高精度接触仿真和计算速度。它最早由公司开发后开源现在由 DeepMind 维护已经被许多强化学习研究项目采用。MuJoCo 的优点非常明显轻量级Python API 简洁安装方便。计算效率高适合大规模并行强化学习训练。MJCF 模型描述语言直观方便修改机器人的关节、摩擦系数、质量等参数。社区研究论文多很多控制任务的 baselines 都基于 MuJoCo 环境。缺点在于渲染能力相对一般传感仿真不如 Gazebo 和 Isaac Sim 丰富和 ROS 生态的集成也没有 Gazebo 那么成熟。2.2 GazeboROS 生态中的经典搭档Gazebo 是一个开源 3D 机器人仿真器支持物理引擎、传感器模型和多种机器人模型文件格式URDF、SDF。它最大的优势是深度绑定 ROS 生态几乎所有 ROS 教程里的机器人仿真都会用到它。Gazebo 适合做以下事情SLAM 和导航算法验证比如小车建图、自主导航。多传感器融合测试比如激光雷达、RGB 深度相机、IMU。机械臂与 MoveIt 联动仿真。无人机、无人车、四足机器人的控制验证。很多初学者会在安装 Gazebo 和 ROS 的过程中踩坑尤其是版本匹配问题。比较老的 ROS Noetic 配 Gazebo 11 比较稳定较新的 ROS 2 版本则需要匹配 Gazebo Ignition 或 Gazebo Harmonic。2.3 Isaac SimGPU 加速与合成数据Isaac Sim 是 NVIDIA 基于 Omniverse 平台构建的机器人仿真应用提供高保真物理仿真、逼真渲染、合成数据生成以及通过 Isaac Lab 接入大规模并行强化学习训练的能力。Isaac Sim 的特点包括基于 USDUniversal Scene Description格式组织场景资源。支持 GPU 物理加速可以并行跑数千个仿真环境。与 NVIDIA Isaac ROS 集成适合做 sim-to-real。内置大量机器人模型如四足机器人、机械臂、人形机器人和传感器模块。对显卡性能要求较高官方推荐使用 RTX 系列显卡。如果你的目标是研究高保真视觉仿真、生成合成数据或训练需要大量并行环境的强化学习任务Isaac Sim 是更合适的选择。2.4 三个平台怎么选如果只是快速验证强化学习算法选 MuJoCo因为它最简单、最轻量如果做 ROS 机器人开发和导航避障实验选 Gazebo如果做高质量视觉仿真、多机并行训练或合成数据生成选 Isaac Sim。建议是入门先从 MuJoCo 开始跑通一个“状态观测 → 策略网络 → 动作输出 → 环境反馈”的最小闭环再根据项目需要切换到 Gazebo 或 Isaac Sim。3. 环境准备与安装3.1 统一个人环境建议三位仿真平台的安装要求差异较大建议把环境分为两类偏研究、轻量级使用 Ubuntu 22.04 或 Windows 11安装 Python 3.9 以上用 MuJoCo 做算法验证。偏 ROS 与硬件集成使用 Ubuntu 22.04安装 ROS 2再配合 Gazebo。偏高保真仿真使用 Ubuntu 22.04配备 NVIDIA RTX 显卡安装 Isaac Sim 和 Isaac Lab。本文不会把某个版本号写死因为仿真器和 ROS 的版本更新很快不同发行版的匹配关系也在变化。重点是理解安装思路实际安装时以官方文档为准。3.2 安装 MuJoCoMuJoCo 现在的 Python 包安装很简单直接使用 pip 即可。核心代码是官方维护的mujoco库它会自动下载对应的底层运行库。如果安装过程中遇到网络或权限问题优先检查 pip 源和 Python 版本。python -m pip install --upgrade pip python -m pip install mujoco安装完成后可以用下面这段代码验证版本import mujoco print(MuJoCo version:, mujoco.__version__)在 Windows 11 上安装 MuJoCo 一般不需要额外配置但如果遇到 DLL 加载失败通常是系统缺少 Microsoft Visual C Redistributable安装对应运行库即可。Linux 环境下需要确认 OpenGL 驱动可用因为即使不渲染窗口某些调试工具仍然依赖 GLFW。3.3 安装 Gazebo 与 ROS 环境如果使用 ROS 1 Noetic需要先配置 ROS 软件源再安装 Gazebo 11sudo apt update sudo apt install ros-noetic-desktop-full sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control如果使用 ROS 2版本匹配关系要特别小心。以 Ubuntu 22.04 ROS 2 Humble 为例常见做法是安装 Gazebo Harmonic并通过ros_gz桥接包把 ROS 2 和 Gazebo 通信连接起来sudo apt install ros-humble-ros-gzharmonic这里很容易踩坑ROS 2 的gazebo_ros_pkgs老包已经不再适配新的 Gazebo 版本直接照搬旧教程会报找不到包的错误。建议安装前先确认自己的 ROS 2 发行版官方推荐的是哪个 Gazebo 主版本。3.4 安装 Isaac Sim 与 Isaac LabIsaac Sim 的安装方式已经逐步统一到isaacsimpip 包模式。大体流程是检查 GPU 驱动和 CUDA 环境。安装isaacsimPython 包。安装 Isaac Lab它是基于 Isaac Sim 构建的强化学习框架。下载机器人资产或使用内置资产。python -m pip install isaacsim安装 Isaac Lab 时官方推荐使用 Conda 创建虚拟环境并克隆 Isaac Lab 仓库后执行安装脚本。由于该工具链更新频率高强烈建议以官方 README 为准。不要照搬旧版本的参数配置否则很容易出现 API 变更导致代码不可运行。4. 仿真平台最小实战示例4.1 MuJoCo 最小示例下面展示一个最简的 MuJoCo Python 示例创建一个单摆模型然后调用物理引擎步进一千步并打印关节位置和速度。# 文件路径mujoco_minimal.py import mujoco xml mujoco worldbody light nametop pos0 0 1.5/ body namependulum pos0 0 1 joint namehinge typehinge axis0 0 1/ geom namerod typecapsule size0.02 0.2 mass0.5 pos0 0 -0.2/ /body /worldbody /mujoco model mujoco.MjModel.from_xml_string(xml) data mujoco.MjData(model) for i in range(1000): mujoco.mj_step(model, data) print(qpos:, data.qpos) print(qvel:, data.qvel)在这段代码中MjModel是物理模型的静态描述MjData存放仿真状态。mj_step每调用一次物理引擎就推进一个控制周期。首次从零开始学 MuJoCo 时建议重点理解这三个对象的关系以及 MJCF 中body、joint、geom的含义body描述刚体。joint描述运动自由度。geom描述几何形状和碰撞属性。如果你想做机械臂的 PPO 强化学习实验通常会在这个基础之上添加多个关节、目标点、奖励函数然后接入策略网络。4.2 Gazebo 机械臂示例Gazebo 中启动一个机器人模型一般需要 URDF 或 SDF 文件。以经典的 Panda 机械臂为例如果你已经下载了对应的模型包可以通过 launch 文件启动!-- 文件路径gazebo_panda.launch -- launch arg namemodel defaultpanda/ param namerobot_description command$(find panda_description)/urdf/panda.urdf/ node namespawn_model pkggazebo_ros typespawn_model args-urdf -param robot_description -model panda outputscreen/ /launch启动后Gazebo 窗口中会出现机械臂模型。如果机械臂不受控制地坠落通常是缺少固定关节、摩擦系数设置不对或者gazebo_ros_control插件没有正确加载。对 Gazebo 新手来说建议先从无人车或差速小车模型练手因为轮式机器人控制链路简单更容易验证仿真器与 ROS 的通信是否正常。很多初学者遇到“gazebo 无人车不动”的问题根因往往是没发布/cmd_vel话题或者实时因子设置导致仿真推进缓慢。4.3 Isaac Sim 最小示例在 Isaac Sim 中最推荐的学习路径是直接使用 Isaac Lab 提供的 RL 环境。你不需要从零构建场景只需要在配置文件里指定机器人、环境和任务。# 文件路径isaac_lab_minimal.py from isaaclab.envs import ManagerBasedRLEnv # 这里演示的是环境初始化思路 # 实际使用时需要根据 Isaac Lab 版本引入对应的环境和任务 env ManagerBasedRLEnv(cfgyour_task_cfg) obs env.reset() for step in range(100): actions env.action_space.sample() obs, reward, terminated, truncated, info env.step(actions)需要注意的是Isaac Lab 的 API 变化比较频繁不同版本之间reset的返回格式可能不同。参考网上代码时要留意代码对应的版本。如果运行时报ImportError或参数不匹配优先查看 Isaac Lab 的官方示例文件。5. 感知模块给机器人一双眼睛5.1 仿真中的传感器类型在 Gazebo 中传感器的配置通常写在 URDF 或 SDF 里。最常用的传感器包括RGB 相机输出彩色图像用于目标检测、语义分割。深度相机输出深度图辅助估计物体距离。激光雷达输出点云或 2D 激光扫描数据用于 SLAM。IMU输出角速度和线性加速度用于状态估计。关节编码器输出关节角度和角速度用于控制。在 MuJoCo 中传感器通过sensor标签定义可以测量关节点位、速度、力、磁力计等。相比 Gazebo 自带视觉传感器渲染MuJoCo 更偏向底层状态测量。5.2 视觉感知的典型流程仿真中的视觉感知流程一般包括从仿真器获取图像或点云。对图像做预处理resize、归一化、数据增强。使用目标检测或语义分割模型识别物体。将识别结果与机器人状态结合生成控制信号。在 Gazebo 中通常可以通过 ROS 话题订阅图像数据例如ros2 topic echo /camera/image_raw或者使用 Python 脚本订阅# 文件路径camera_subscriber.py import rclpy from rclpy.node import Node from sensor_msgs.msg import Image class CameraSubscriber(Node): def __init__(self): super().__init__(camera_subscriber) self.sub self.create_subscription(Image, /camera/image_raw, self.callback, 10) def callback(self, msg): self.get_logger().info(Received image frame) rclpy.init() node CameraSubscriber() rclpy.spin(node)这里的核心思想是仿真器把相机数据发布成 ROS 话题感知节点订阅并处理再把处理结果发布给下游规划控制节点。5.3 点云与深度数据点云数据在机械臂抓取和避障任务中非常常见。拿到深度图后可以根据相机内参将像素坐标反投影为三维点云或者直接使用仿真器输出的点云话题。在 Isaac Sim 中可以使用传感器模块直接生成深度图和点云配合 NVIDIA 的渲染能力合成数据质量较高。如果你希望训练视觉抓取模型Isaac Sim 的优势会很明显。6. 强化学习让机器人学会决策6.1 机器人控制中的强化学习框架强化学习解决的是序列决策问题。一个典型的机器人控制任务可以抽象为马尔可夫决策过程MDP包含以下要素状态 S比如机械臂各个关节的角度、角速度末端位置目标位置。动作 A比如关节力矩或位置增量。奖励 R衡量智能体在当前状态下执行动作的好坏。状态转移概率 P描述从当前状态执行动作后到达下一状态的概率。折扣因子 gamma控制未来奖励的重要程度。在仿真环境中每一步执行以下流程从环境中获取当前状态。策略网络输出动作。执行动作环境推进一步。环境返回下一状态和奖励。将数据存入经验池用于更新策略。这个流程中的环境交互阶段通常称为 rollout。如果 rollout 计算太慢训练效率会非常低这也是为什么很多研究者转向 Isaac Sim 这种支持大规模并行的仿真器。6.2 一个最小 Actor-Critic 骨架下面给出一个最简单的 Actor-Critic 网络结构用于输出连续动作和多维状态的价值估计。这个骨架通常作为 PPO 等算法的组成部分。# 文件路径actor_critic.py import torch import torch.nn as nn class ActorCritic(nn.Module): def __init__(self, obs_dim, act_dim, hidden_dim256): super().__init__() self.common nn.Sequential( nn.Linear(obs_dim, hidden_dim), nn.Tanh(), nn.Linear(hidden_dim, hidden_dim), nn.Tanh(), ) self.actor nn.Linear(hidden_dim, act_dim) self.critic nn.Linear(hidden_dim, 1) def forward(self, obs): features self.common(obs) action_mean torch.tanh(self.actor(features)) value self.critic(features) return action_mean, value这里的action_mean是高斯策略的均值实际采样时需要加上一个可学习或固定的标准差再通过正态分布采样得到动作。对于 MuJoCo 中的控制任务动作通常需要被限制在 -1 到 1 范围内所以输出层使用了tanh激活函数。策略和价值共享底层的特征提取层可以提升训练效率但也可能造成梯度冲突。复杂任务中通常会拆成两个独立网络来训练。6.3 强化学习训练中的关键点在实际训练机器人控制策略时比网络结构更重要的是以下三点。第一奖励函数设计。如果你给机械臂设置的奖励过于稀疏比如只有抓取成功才给 1否则都是 0那么探索效率会非常低。常见做法是添加形状奖励shaping reward比如让末端执行器靠近目标物体时给一个小奖励靠近程度越高奖励越大。第二环境交互效率。MuJoCo 虽然轻量但单个环境交互依然可能成为瓶颈。可以考虑并行创建多个环境或者像 Isaac Sim 那样在 GPU 上并行 rollout。另一个方向是使用离线强化学习如 IQL利用已有数据集训练策略减少在线交互需求。第三稳定性问题。训练强化学习经常遇到“过早收敛到局部最优”或“训练分歧”的情况。PPO 之所以流行是因为它通过裁剪目标函数限制了策略更新的幅度让训练更稳定。实际项目中如果 PPO 训练效果不理想可以先检查 reward 量级、状态归一化和网络层数。7. 具身大模型从感知到操作的跃迁7.1 什么是 VLAVLAVision-Language-Action Model视觉-语言-动作模型是具身智能领域的最新热点。它把视觉、语言和动作统一到一个模型中输入一张图像和一段自然语言指令直接输出机器人可执行的动作序列。一个典型的流程是用户说“把桌子上的苹果放到篮子里”VLA 模型从图像中定位苹果和篮子规划机械臂的抓取位置和运动轨迹最终输出关节控制指令。这类模型通常基于大规模预训练的多模态模型例如 RT-2、OpenVLA 等。它们能利用互联网级的图像文本数据提高泛化能力再通过机器人操作数据进行微调完成具体的操作任务。7.2 学习资料与关键数据集如果你想进入这个方向建议掌握以下内容多模态模型的基础结构包括视觉编码器、语言模型和动作解码器。指令微调和偏好数据集的构造方式一句自然语言指令对应的图像和动作应该如何组织。数据采集工具链比如远程操作机械臂录制演示数据。模型部署和推理流程包括如何把模型输出转换为仿真器可执行的动作指令。近几年发布的 Opens X-Embodiment、BridgeData、RLDS 格式数据集是学习 VLA 的重要资源。建议先下载现有数据集跑一遍制作流程再尝试自己录制少量真实或仿真演示数据。另外人形机器人和具身智能相关的标准体系文档也在逐步推出比如《人形机器人与具身智能标准体系》这类参考文件可以了解工程落地中关于安全、接口和数据格式的标准趋势但具体的下载和发布渠道要以权威机构公开信息为准。8. 常见问题与排查思路8.1 安装类问题问题现象常见原因解决思路MuJoCo 安装后 import 报错Python 版本不兼容或缺少运行库使用 Python 3.9 以上版本检查 Visual C 运行库Gazebo 安装时找不到包软件源未配置或包名与 ROS 版本不匹配确认 ROS 发行版使用对应官方源Isaac Sim 启动后黑屏显卡驱动或 Vulkan 支持异常更新 NVIDIA 驱动检查 GPU 是否满足要求Isaac Sim 安装速度慢资源文件较大确认磁盘空间按官方镜像或加速方式处理8.2 仿真运行问题问题现象常见原因解决思路Gazebo 无人车不动没有发布速度指令或控制器插件未加载检查/cmd_vel话题查看模型是否有驱动轮插件机械臂模型坠落固定关节缺失或碰撞环境冲突检查 URDF 中fixed关节和底座位置仿真速度过慢实时因子过高或渲染负担大关闭渲染窗口降低图像分辨率MuJoCo 模型穿模碰撞几何设置不准确检查geom类型和摩擦参数8.3 强化学习训练问题问题现象常见原因解决思路奖励一直不增长奖励函数太稀疏或策略更新不稳定添加形状奖励降低学习率动作输出超出机器人关节限位网络输出未归一化在动作采样后 clip 或缩放rollout 太慢单环境串行交互使用并行环境或 GPU 仿真训练到一半 loss 变成 NaN学习率过大、状态分布异常检查状态归一化减小学习率9. 最佳实践与工程建议9.1 项目组织与实验管理具身智能项目涉及仿真、感知、强化学习、大模型多个模块建议从一开始就建立清晰的工程目录。推荐目录结构project/ ├── config/ # 环境配置、机器人参数、奖励权重 ├── envs/ # 仿真环境封装 ├── models/ # 策略网络、感知模型 ├── rl/ # 强化学习训练和 rollout 逻辑 ├── data/ # 演示数据、数据集 ├── scripts/ # 启动脚本、数据处理脚本 └── logs/ # 训练日志、TensorBoard 记录实验管理建议使用配置文件统一管理机器人模型路径、传感器配置、奖励系数、学习率、训练步数都应写在配置里而不是散落在代码中。这样每次调整实验参数时不需要改代码只需要改配置文件。奖励系数的调整要单独记录。很多强化学习项目中“上一版能收敛这版改了权重就训练失败”的情况很常见建议每一次 reward 修改都保存对应的实验版本和备注。9.2 从仿真到真机的现实沟壑仿真环境无论做得多逼真和真实世界之间总存在差距也就是 sim-to-real gap。缩小差距的常见措施包括在仿真中加入随机化比如随机化光照、摩擦力、物体质量、关节阻尼。使用域随机化方法让策略在面对不同物理参数时仍然有效。先学一个稳定的仿真策略再通过真机微调或系统辨识校准模型参数。使用高保真仿真器如 Isaac Sim降低视觉渲染和物理参数上的差距。在项目实际落地时不要忽略机制本身的安全性约束。如果需要把策略部署到真实机械臂或机器人上务必先在仿真中充分测试在真实环境中设置限位保护、急停开关并避免在未授权设备或敏感场景下进行操作测试。9.3 日志与可复现性建议每次训练都记录以下信息仿真器和相关库的版本号。随机种子seed。奖励函数的完整定义。状态和动作的归一化参数。训练曲线和模型 checkpoint。这样可以保证实验结果可以复现。机器人强化学习对随机种子非常敏感同样一份代码不同 seed 可能训练出完全不同的策略表现。10. 学习路线规划10.1 阶段安排第一阶段1-2 周掌握 Python、PyTorch 基础理解神经网络和反向传播原理。动手训练一个简单的分类或回归模型。第二阶段2-3 周上手 MuJoCo学习 MJCF 模型格式理解刚体、关节、接触仿真的概念。跑通至少一个 MuJoCo 控制环境尝试用随机动作与环境交互。第三阶段3-4 周学习强化学习基础重点理解 MDP、策略梯度、Actor-Critic 结构。实现 PPO 算法并在 MuJoCo 环境中训练一个简单机器人任务比如倒立摆或简易机械臂到达目标点。第四阶段3-4 周引入感知模块。在 Gazebo 中配置 RGB 相机和深度相机实现目标检测和深度估计把感知结果和机械臂控制串联起来。这个阶段需要熟悉 ROS 的基本通信机制。第五阶段4-8 周学习 Isaac Sim 和 Isaac Lab复现一个机械臂抓取或四足机器人行走任务。尝试并行训练记录训练曲线并调参优化。第六阶段进阶方向学习 VLA 模型原理了解多模态大模型如何输出动作。下载开源操作数据集尝试进行指令微调和偏好对齐有条件的话在仿真环境中采集自己的演示数据集。10.2 项目练习建议正式做项目之前建议让机器人在固定场景、固定初始状态下完成一个非常简单的动作比如“末端移动到某个点”。成功后再逐步增加随机初始位置、随机目标点、障碍物、复杂光照等干扰。不要一开始就追求“人形机器人全身控制”这样的大目标。从单机械臂、单一任务入手把数据链路和训练流程打通比追求复杂任务更重要。如果直接上手人形机器人相关实验会同时面对接触稳定性、全身动力学、算力资源等多个难点很容易劝退。逆运动学IK、动力学建模这些机器人学基础平时可以配合 MuJoCo 的关节数据一起理解。做强化学习实验时不一定要自己手动解 IK 矩阵但理解末端位置与关节角度的对应关系会在设计奖励函数和状态空间时非常有帮助。如果你对离线强化学习感兴趣也可以从 IQL 这类算法入手先在官方或开源数据集中训练验证策略能否复现数据集里的行为再逐步迁移到仿真环境。这样做的好处是可以减少在线探索对仿真资源的消耗同时更容易定位算法实现中的 bug。多智能体强化学习、无人机的深度强化学习控制、基于强化学习的 PID 参数调优等方向都是具身智能的延伸场景没必要一开始就全部接触。建议先把单智能体、单任务链路走通再根据实际项目需求拓展。具身智能领域变化非常快今天的最佳实践可能半年后就过时了你能做的就是不断重读官方文档、保持小步迭代实验。如果本文中的某些版本号或 API 已经变化以官方最新文档为准。希望对你的入门之路有一些帮助也欢迎在实践中随时回来对照排查。