ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

HIL-SERL 从零跑通:HIL-SERL 安装、入口脚本与配置一篇讲清

HIL-SERL 从零跑通:HIL-SERL 安装、入口脚本与配置一篇讲清 HIL-SERL 从零跑通HIL-SERL 安装、入口脚本与配置一篇讲清【免费下载链接】hil-serl项目地址: https://gitcode.com/gh_mirrors/hi/hil-serlHIL-SERL基于人机协作强化学习的精确与灵巧机器人操纵项目提供了一套完整工具链让你把人类演示 人在环纠正与强化学习训练结合在 Franka 机械臂上训练成功率接近 100% 的操纵策略。本文带你走完定位 → 装环境 → 找入口 → 拆模块 → 落配置的完整上手路径。 HIL-SERL 定位与能力边界它解决什么问题先说清楚它是什么、不是什么。纯 SERL 类方法完全依赖奖励信号和自主探索遇到精确对插这类任务时机械臂要在巨大动作空间里盲目摸索很久成功率爬升非常慢。HIL-SERL 的关键差异在于允许操作者在训练过程中直接接管训练初期你用手柄空间鼠标把机械臂拉到正确位置附近再放开让策略接管同时用少量人类演示数据做预训练。论文中的 RAM 插入、USB 拾取插入任务配合间歇性人工干预分别约 1.5 小时、2.5 小时收敛到 100% 成功率。它的能力边界大致是需要 Franka 机械臂 RealSense 相机的真机环境任务覆盖单臂对插、多阶段抓取插入、双臂交接object handover和动力学任务egg flip用一套专门的力控控制器实现。没有 Franka 硬件可以阅读代码和示例配置来学习设计但训练闭环跑不起来。️ 环境搭建与依赖安装conda 环境与硬件侧准备仓库没有一键的setup_conda.shREADME 把安装拆成了四步按顺序执行即可创建环境conda create -n hilserl python3.10安装 JAX这是项目底层的数组计算库训练速度几乎完全取决于 GPU 版 JAX。有 NVIDIA 显卡装jax[cuda12_pip]0.4.35并附加官方 CUDA 源参数纯 CPU 可用jax[cpu]但训练会慢到不可用安装算法侧主包进入serl_launcher目录执行pip install -e .再装pip install -r requirements.txt安装机器人侧基础包进入serl_robot_infra目录执行pip install -e .硬件侧还有两件事容易漏libfranka/franka_ros官方驱动以及基于阻抗控制的serl_franka_controllers控制器包按 serl_robot_infra/ 的 README 安装并编入 catkin 工作空间。上电后务必在 Franka Desk 网页界面里录入腕部相机质量做末端载荷标定否则阻抗控制精度会明显下降。常见报错集中在 JAX 与 GPU 驱动版本不匹配表现为jax.devices()只能看到 CPU按 JAX 官方要求对齐 CUDA 版本即可装完可用python -c import jax; print(jax.devices())验证。 三个入口脚本与调用链先奖励分类器再演示最后训练真正的入口在 examples/ 目录围绕实验文件夹组织每个任务如 ram_insertion有自己的配置和启动脚本。执行顺序有严格依赖1. 训练奖励分类器python record_success_fail.py --exp_name ram_insertion --successes_needed 200机器人任务的奖励往往无法从传感器直接读出RAM 到底插进插槽没有HIL-SERL 的做法是训练一个看相机图像的成功/失败图像分类器来发奖励。这个脚本负责收集它的训练数据默认全部记为负样本按住空格键的那一步记为正样本直到凑够指定数量。建议负样本收 2~3 倍于正样本覆盖各种看似成功其实没成功的失败形态能显著降低误报。然后python train_reward_classifier.py --exp_name ram_insertion训练模型存入classifier_ckpt/。2. 录制人类演示python record_demos.py --exp_name ram_insertion --successes_needed 20用空间鼠标手把手教机械臂完成 20 次成功轨迹。这里奖励分类器已经在工作——它判断你这条演示是否成功失败的会丢弃重来。数据存入demo_data/。3. 策略训练主训练循环是train_hgdagger.py每个实验文件夹里的run_actor.sh/run_learner.sh是对它的封装。actor 节点在环境里跑策略、采数据learner 节点在 GPU 上训练、定期同步参数两者异步运行另有train_bc.py行为克隆基线和train_rlpd.py在线模仿学习基线可作对照。训练时用空间鼠标在策略反复犯错时介入纠正。顺序脚本输入输出1record_success_fail.py→train_reward_classifier.py相机图像成功/失败标注classifier_ckpt/2record_demos.py空间鼠标演示轨迹demo_data/3run_actor.shrun_learner.sh演示数据 奖励分类器checkpoint_path/评估训练好的策略在run_actor.sh中加--eval_checkpoint_step与--eval_n_trajs两个参数只启动 actor 即可。 核心模块速览四个子目录各司其职仓库顶层就三块examples/、serl_launcher/算法侧、serl_robot_infra/硬件侧。模块路径职责examples/入口脚本与四个任务实验配置serl_launcher/serl_launcher/agents/SAC、BC 等策略实现serl_launcher/serl_launcher/wrappers/环境包装动作归一化、分块执行serl_launcher/serl_launcher/data/重放缓冲区与网络传输数据存储serl_launcher/serl_launcher/vision/ResNet 视觉骨干与数据增强serl_robot_infra/robot_servers/Flask 服务经 ROS 下发指令serl_robot_infra/franka_env/Franka 的 gym 环境整体训练拓扑是 actor-learner 异步结构actor 与 learner 通过 agentlace 走网络通信、周期性同步策略好处是推理机械臂实时动作和训练GPU 迭代互不阻塞。⚙️ 配置体系与硬件对接三个必须改的配置维度HIL-SERL 没有统一的config.yaml而是一个任务一个 Python 配置文件全部位于examples/experiments/任务名/下config.py环境与训练参数其中必改的三块——①EnvConfig里的SERVER_URL机器人服务器地址、REALSENSE_CAMERAS与IMAGE_CROP相机序列号与裁剪区域序列号在 RealSense Viewer 里查② 关键位姿TARGET_POSE/GRASP_POSE/RESET_POSE用curl -X POST http://服务器:5000/getpos_euler抓取当前末端位姿填入③ 安全动作边界ABS_POSE_LIMIT_HIGH/LOW限定策略探索范围必须保证边界内没有碰撞风险wrapper.py该任务的 gym 环境封装相机初始化、任务特有逻辑在这里一般只在换任务时参考run_actor.sh/run_learner.sh启动封装训练前要改checkpoint_path和demo_path两个路径硬件链路一句话讲完gym 环境发 HTTP POST 请求 → Flask 机器人服务 → ROS 驱动阻抗控制器 → 机械臂空间鼠标的人工干预走同一条链路。接下来可以做什么通读 docs/franka_walkthrough.mdRAM 插入任务的逐步骤说明最完整建议第一个任务从它开始对照 examples/experiments/ram_insertion/ 把三个必改配置项过一遍先跑通奖励分类器数据采集确认相机画面正常训练初期多干预、后期少干预是收敛的关键经验文档Additional Tips一节有详细的节奏建议【免费下载链接】hil-serl项目地址: https://gitcode.com/gh_mirrors/hi/hil-serl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表