Franka + 灵巧手真机强化学习#
本文档说明 Franka 机械臂接入睿研灵巧手时需要关注的配置差异。 完整的真机强化学习与 reward model 工作流请参考 Franka真机强化学习 和 Franka真机强化学习(基于 Reward Model )。
总览#
灵巧手方案沿用与 Franka 相同的真机强化学习和 reward model 工作流,主要差异集中在末端执行器、遥操作方式和动作空间:
动作空间为 12 维
前 6 维控制机械臂位姿增量
后 6 维控制灵巧手关节
RuiyanHand负责灵巧手硬件控制DexHandIntervention将 SpaceMouse 和数据手套输入组合为专家动作
遥操作#
灵巧手遥操作使用:
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