news 2026/8/19 23:30:48

Hil-SERL真机复现思路及框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hil-SERL真机复现思路及框架

项目介绍

项目采用UC伯克利罗剑岚博士发表的HIL-SERL及SERL框架尝试通过“仿真经验 + 真实经验联合回放”的方式提升学习效率。

项目地址:

SERL(项目):https://serl-robot.github.io/

SERL(代码):https://github.com/rail-berkeley/serl

HIL-SERL(项目):https://hil-serl.github.io/

HIL-SERL(代码):https://github.com/rail-berkeley/hil-serl

Lerobot框架:https://github.com/huggingface/lerobot

一、项目简介:Human-in-the-LoopSERL 具身操作学习系统

1.项目概述

本项目围绕真实机械臂场景下的具身操作学习问题,构建了一套融合人类示教(Human-in-the-Loop模仿学习(Behavior Cloning, BC)与强化学习Reinforcement Learning,RL)的完整系统框架,目标是在真实机器人硬件上实现可训练、可扩展、可闭环的操作策略学习流程。

2.重点突破

传统强化学习方法在真实机器人上面临三大核心困难:

1)试错代价高,纯 RL 探索存在安全与效率问题;

2)仿真到真实(Sim-to-Real)迁移误差大;

3)策略训练与真实控制系统之间存在明显工程割裂。

针对上述问题,本项目以SERL(Simulated Experience Replay Learning)为基础,引入Human-in-the-Loop思想,形成一套从人类示教 → 数据采集 → 策略训练 → 真机执行 → 人工干预修正的闭环学习系统,即HIL-SERL

二、核心思想与方法

项目的核心思想不是“让机器人自己瞎学”,而是让人类在关键时刻介入学习过程,用最少的人工成本显著提升真实环境下的学习效率与稳定性。

具体而言,系统包含以下关键机制:

  • 人类示教与数据采集通过 VR / 键盘 / 手柄等方式对真实机械臂进行遥操作,采集多模态示教数据,包括:

    • 关节空间状态(Joint State)

    • 末端位姿(TCP Pose)

    • RGB 视觉观测

  • 模仿学习初始化(BC Pretraining)使用示教数据对策略网络进行行为克隆训练,使策略具备可执行的基础操作能力,避免随机初始化导致的无效探索。

  • 奖励分类器与反馈建模通过训练奖励分类器(Reward Classifier),将人类偏好或成功/失败判断引入强化学习过程,降低对手工奖励函数的依赖。

  • Human-in-the-Loop强化学习在真实执行过程中,允许人类对策略行为进行实时或离线干预,将干预数据再次回流至经验池,实现“纠偏式学习”。

  • 策略—控制桥接(Policy-to-RobotBridge打通 Python 侧策略输出与 ROS2 / C++ 控制节点之间的接口,实现策略直接驱动真实机械臂运动,而非仅停留在仿真或数据层面。

三、系统架构概览

1.整体架构

(1)机器人与感知执行层(Robot & Execution Layer)

系统底层为真实机械臂及其控制系统,主要负责状态获取与动作执行,包括:

  • 机械臂关节状态、末端位姿反馈

  • 相机(RGB / RGB-D)等视觉传感器

  • 基于 ROS2 的通信接口

  • C++ 轨迹规划与控制节点

该层保证策略输出能够安全、稳定地驱动真实机器人运动


(2)策略推理与接口层(Policy Inference & Bridge Layer)

该层是学习算法与真实控制之间的桥梁,核心功能包括:

  • 策略网络的实时推理(Python)

  • 动作尺度变换与安全约束

  • 策略动作到机器人控制指令的映射

  • ROS2 → C++ 控制接口对接

该层解决“策略能不能真的动机器人”这一工程关键问题。


(3)学习与数据管理层(Learning & Data Layer)

该层负责策略训练与经验管理,是系统的“智能中枢”,包括:

  • 示教数据采集与存储

  • 行为克隆(BC)策略训练

  • 奖励分类器训练

  • SERL / HIL-SERL 强化学习

  • 经验回放与数据再利用机制

学习层既可使用离线数据,也可吸收真实执行中的新经验。


(4)Human-in-the-Loop 交互层(Human Interaction Layer)

人类通过该层参与系统运行,主要体现在三个方面:

  • 示教阶段:遥操作生成高质量初始数据

  • 执行阶段:对策略行为进行干预或纠正

  • 学习阶段:通过反馈影响奖励建模与策略更新

该层使系统具备可控探索、可纠偏学习的能力。

(5)结构框图
┌──────────────────────────────────────────────────────────────────────────────┐ │ HIL-SERL 工程总览 │ └──────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────┐ │ Human Operator (Teleop) │ │ VR / 手柄 / 键盘 / 其它输入 │ └───────────────┬──────────────┘ │ intervention action / 示教动作 │ + is_intervention 标记 v ┌──────────────────────────────────────────────────────────────────────────────┐ │ Data Recorder / Episode Logger │ │ 记录:obs(视觉/关节/位姿) + action + reward/label + is_intervention + time │ │ 输出:dataset / replay buffer(离线训练 + 在线回放共用) │ └───────────────────────────────────┬──────────────────────────────────────────┘ │ │ dataset / replay buffer v ┌──────────────────────────────────────────────────────────────────────────────┐ │ Learner (训练端,离线/在线) │ │ • BC 预训练 │ │ • RL (SAC/DrQ 等) + Replay ----改进SAC -> RLPD │ │ │ • Reward Classifier │ │ • 输出:policy checkpoint / weights │ └───────────────────────────────────┬──────────────────────────────────────────┘ │ policy weights v ┌──────────────────────────────────────────────────────────────────────────────┐ │ Actor / Inference (运行端,实时) │ │ 输入:当前 obs │ │ 输出:policy action(例如 7DoF 关节增量 or 关节目标 or 末端增量) │ │ 逻辑:policy action 与 teleop action 的仲裁(人类优先 / 安全回退) │ └───────────────────────────────────┬──────────────────────────────────────────┘ │ selected action v ┌──────────────────────────────────────────────────────────────────────────────┐ │ Policy-to-Robot Bridge(桥接层) │ │ • 动作格式映射:policy output → ROS2 msg │ │ • 单位/坐标变换:rad/deg、关节顺序、夹爪等 │ │ • 频率控制:rate limiting / hold-last │ │ • 安全约束:clip / workspace / joint-limit / E-stop gate │ └───────────────────────────────────┬──────────────────────────────────────────┘ │ ROS2 topics/services/actions v ┌──────────────────────────────────────────────────────────────────────────────┐ │ C++ Control Node(底层控制与规划) │ │ • 轨迹规划/插补:planner / trajectory execution │ │ • 控制模式:joint-space / cartesian-space │ │ • 状态发布:joint_state / tcp_pose / tool_in_world │ └───────────────────────────────────┬──────────────────────────────────────────┘ │ command v ┌──────────────────────┐ │ Real Robot Arm │ └──────────┬───────────┘ │ state / sensor feedback v ┌──────────────────────────────────────────────────────────────────────────────┐ │ Observations / Sensors(观测层) │ │ • /joint_states /tcp_pose /tool_in_world │ │ • cameras: RGB / Depth / multi-view (可选) │ │ • 时间同步与对齐:timestamp / frame_id │ └───────────────────────────────────┬──────────────────────────────────────────┘ │ obs └──────────────→ 回到 Actor / Recorder / Buffer

2.Policy-to-Robot Bridge 细化链路

┌───────────────────────────────┐ │ Policy (Python/JAX) │ │ 输入:obs │ │ 输出:a_policy (rad) │ └───────────────┬───────────────┘ │ │ a_policy v ┌───────────────────────────────┐ │ Action Adapter / Validator │ │ • rad↔deg、关节顺序映射 │ │ • clip 限幅、速度/加速度约束 │ │ • workspace/joint-limit gate │ └───────────────┬───────────────┘ │ a_policy_safe │ ┌─────────┴─────────┐ │ │ │ │ v v ┌─────────────────┐ ┌──────────────────────────┐ │ Teleop Action │ │ Arbitration (人类优先) │ │ a_human + flag │ │ if is_intervention: │ │ is_intervention │ │ a = a_human │ └─────────┬────────┘ │ else: a = a_policy_safe │ │ └───────────┬──────────────┘ └────────────────────────┘ │ selected action a v ┌───────────────────────────────┐ │ ROS2 Publisher / Action Client│ │ • 发布目标关节/增量 │ │ • 发布夹爪命令 │ │ • 处理 ack/超时/重发 │ └───────────────┬───────────────┘ │ v ┌───────────────────────────────┐ │ C++ Controller / Planner │ │ • trajectory generation │ │ • execution + monitoring │ └───────────────┬───────────────┘ │ v ┌───────────────────────────────┐ │ Real Robot Arm │ └───────────────┬───────────────┘ │ state feedback v ┌───────────────────────────────┐ │ ROS2 State Topics (obs) │ │ /joint_states / tcp_pose ... │ └───────────────────────────────┘

四、项目任务列表

对于机械臂抓取工作计划进行仿真+真机两个方案,达成对于某类别物品的抓取工作,要求成功率100%:

仿真环境(基于Lerobot框架):

  • 利用Keyboards/Gamepad录制20-30条数据集(包含头部+腕部的观测及末端xyz)

  • 修改config文件中训练参数,配置wandb、huggingface

  • 进行Learner-Actor分布训练,观察Loss曲线及机器人抓取方块效果

真机部署(基于真实机器人):

  • 完成真实机械臂的示教数据采集与多模态数据记录

  • 实现 BC 策略训练并在真机上稳定执行

  • 训练奖励分类器,支持非显式奖励建模

  • 打通策略推理 → ROS2 → C++ 控制节点的执行链路

  • 在真实硬件上完成基础操作任务的闭环验证

系统具备从“人类操作”到“策略接管”再到“人类纠偏”的完整闭环能力

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 16:25:52

制造业如传统车企如何数字化转型实践?

曾今有幸做过宁波某车企二级供应商的数字化转型整体解决方案(包含企业精益生产管理以及数字化系统WMS\MES\APS三个系统的集成)我想我应该很有发言权! 是2022年接手项目,一开始面临质量追溯严苛、信息孤岛、效率瓶颈等行业共性挑战…

作者头像 李华
网站建设 2026/7/14 16:25:51

Agent如何自我进化?Autoresearch用“最小可控”给出答案

曾几何时,前沿AI研究是由血肉计算机(指人脑)在吃饭、睡觉、娱乐之余,偶尔通过声波互联在“小组会议”的仪式中同步完成的。那个时代早已远去。如今,研究完全由自主AI代理集群主导,它们运行于天空中的计算集群巨型结构之上。这些代理声称,代码库现已演进至第10,205代;无…

作者头像 李华
网站建设 2026/7/14 16:25:49

[算法][力扣3]无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。示例 2…

作者头像 李华
网站建设 2026/7/14 16:25:51

矿用本安型全景雷达物位扫描仪的应用

唐山大方汇中仪表研发的GUL系列矿用本安型全景雷达物位扫描仪(3D雷达物位扫描仪)为非接触计量级测量仪表,具有数字信号、图像输出功能。3D雷达物位扫描仪基于雷达信号时间行程原理对多个测量点进行测距,其内部的扫描机构可对料仓内…

作者头像 李华
网站建设 2026/7/14 16:26:05

linux awk使用

1.概述awk 是 Linux 系统中一个非常强大的文本处理工具,常被称为“三剑客”之一(另外两个是 grep 和 sed)。它主要用于从文本文件中提取、过滤和处理数据,尤其适合处理结构化数据,例如日志文件、CSV 文件等。2.基本语法…

作者头像 李华
网站建设 2026/7/14 16:26:02

揭秘 GEO AI 搜索排名的商业价值

揭秘 GEO AI 搜索排名的商业价值在数字化浪潮中,企业如何快速抢占流量高地?太原千里之眼智能科技有限公司给出了答案。作为山西人工智能公司排名靠前的技术供应商,其核心产品GEO AI 搜索排名正在重塑企业获客逻辑。一、为什么选择 GEO AI 搜索…

作者头像 李华