在 Franka 上使用灵巧手#
搭配睿研五指灵巧手进行真机操作训练的 Franka 机械臂。#
将 Franka 真机流程适配到睿研五指灵巧手。你将保留相同的集群与 reward-model 流程,并替换末端执行器、遥操作输入、动作布局和灵巧手配置。
概览#
使用灵巧手末端执行器运行 Franka 真机流程。
CNN policy · reward model
SAC/RLPD · reward-model assist
Dexterous pick-and-place
Franka · Ruiyan dex hand · glove
任务#
任务 |
配置 / 入口 |
说明 |
|---|---|---|
Collection |
|
采集灵巧手示教。 |
Training |
|
用灵巧手动作训练 CNN policy。 |
Reward model |
Franka reward-model workflow |
复用 reward-model 路径完成灵巧操作。 |
观测与动作#
字段 |
说明 |
|---|---|
Observation |
Franka 相机帧,以及配置中的灵巧手/glove 状态。 |
Action |
机械臂动作加灵巧手关节或命令向量。 |
Reward |
任务完成信号或 reward-model 预测。 |
Prompt |
来自真机 env config 的任务文本。 |
安装#
先按 Franka 真机强化学习 安装基础 Franka 依赖,再按下方流程安装灵巧手运行环境。
遥操作#
灵巧手遥操作使用:
SpaceMouse 控制机械臂 6 维位姿
数据手套控制 6 维手指动作
SpaceMouse 左键用于启用相对手套控制
Reward Model#
reward model 侧与 在 Franka 上使用 Reward Model 中的 Franka 真机流程一致。
对当前灵巧手抓放环境:
reward 图像默认沿用
env.main_image_keyexamples/embodiment/config/env/realworld_dex_pnp.yaml中的main_image_key默认为wrist_1examples/embodiment/config/realworld_dexpnp_rlpd_cnn_async.yaml通过reward段接入 reward model
配置文件#
数据采集使用 examples/embodiment/config/realworld_collect_dexhand_data.yaml。
该配置包含:
end_effector_type: "ruiyan_hand"数据手套遥操作参数
data_collection,用于以pickle格式导出原始 episode
RL 训练使用 examples/embodiment/config/realworld_dexpnp_rlpd_cnn_async.yaml。
启动前需要填写:
robot_iptarget_ee_pose策略
model_pathreward
model.model_pathend_effector_config与glove_config中的串口参数
如果需要自定义相机命名或 crop,请直接在 override_cfg 中按序列号 serial
填写;本 PR 默认不提交任何特定 serial 的配置,避免影响其他项目。不配置
camera_names 时,默认命名会按照 camera_serials 列表顺序分配:第一个
serial 是 wrist_1,第二个 serial 是 wrist_2,不会按序列号排序。例如:
camera_names:
"SERIAL1": global
"SERIAL2": wrist_1
camera_crop_regions:
"SERIAL1": [0.4, 0.3, 0.85, 0.7]
如果你把某个相机命名成 global,记得同时把任务 YAML 中的
main_image_key 改成 global。
运行#
在 Franka 控制节点安装 Franka DexHand 环境:
bash requirements/install.sh embodied --env franka-dexhand
该命令会安装 Franka 基础依赖和
RLinf-dexterous-hands,后者包含睿研灵巧手与数据手套驱动。将 Franka 机器人切换到可编程模式,手动移动到任务目标位姿,然后在 Franka 控制节点运行脚本获取目标末端位姿:
python -m toolkits.realworld_check.test_franka_controller \ --robot-ip <FRANKA_IP> \ --end-effector-type ruiyan_hand \ --hand-port /dev/ttyUSB0
脚本启动后输入
getpos_euler,记录输出的欧拉角位姿,并填入配置中的target_ee_pose。在 Franka 控制节点配好采集任务参数,包括
robot_ip、target_ee_pose、end_effector_config、glove_config等。在 Franka 控制节点采集专家 demo:
bash examples/embodiment/collect_data.sh realworld_collect_dexhand_data
在 Franka 控制节点使用同一个入口再次采集 reward 原始 episode;这一轮建议调大
env.eval.override_cfg.success_hold_steps,并使用单独的日志目录。将 reward 原始数据从 Franka 控制节点传到训练节点,或者提前写入共享存储。
在训练节点按照 在 Franka 上使用 Reward Model 中的方法,用
examples/reward/preprocess_reward_dataset.py生成 reward dataset。在训练节点使用
examples/reward/run_reward_training.sh训练 reward model。在启动 RL 之前,按照 Franka 真机强化学习 的集群配置说明,启动由训练节点和 Franka 控制节点组成的双机 Ray 集群。
在训练节点启动 RL:
bash examples/embodiment/run_realworld_async.sh realworld_dexpnp_rlpd_cnn_async