main 分支同时包含四套面向 Marvin 双臂机器人的力反馈模型,可在同一个仓库中直接选择环境、数据、训练和
部署流程。原 main 中的 Force-conditioned ACT 独立版本已移至 fcact 分支。
| 选择 | 模型名 | Policy 类型 | 工作区 | Conda 环境 |
|---|---|---|---|---|
1 | Force-conditioned ACT | act | workspaces/fcact | lerobot_vlahost_fcact |
2 | Reactive Diffusion Policy | rdp | workspaces/rdp | lerobot_vlahost_rdp |
3 | ImplicitRDP | implicitrdp | workspaces/irdp | lerobot_vlahost_implicitrdp |
4 | ForceVLA | forcevla | workspaces/fvla | lerobot_vlahost_forcevla |
四个模型都读取 RGB、observation.state[16] 和由 m_FB_Joint_SToq 转换得到的
observation.effort[14],并输出 action[16] 关节位置目标。Policy 不向 Marvin 发送力矩动作。
| LeRobot 字段 | 固定语义 | 类型与形状 |
|---|---|---|
observation.state | 左臂 7 + 右臂 7 + 左夹爪 + 右夹爪位置 | float32[16] |
observation.velocity | 与 state 相同顺序的速度 | float32[16] |
observation.effort | m_FB_Joint_SToq:左臂 7 + 右臂 7 反馈关节扭矩 | float32[14] |
action | 左臂 7 + 右臂 7 + 左夹爪 + 右夹爪目标位置 | float32[16] |
observation.images.top | 顶部 RGB | video[480,640,3] |
observation.images.wrist_L | 左腕 RGB | video[480,640,3] |
observation.images.wrist_R | 右腕 RGB | video[480,640,3] |
训练预检会验证 dtype、shape、关节 names/order、有限值和 episode 连续性。任意 float32[14] 数据不能在
没有语义映射的情况下直接替代 Marvin effort。
git clone --branch main --single-branch git@github.com:expolrer/lerobot_vlahost_force.git
cd lerobot_vlahost_force
chmod +x run.sh workspaces/*/run.sh workspaces/*/scripts/*.sh workspaces/*/scripts/*.py scripts/*.py
需要 Ubuntu 22.04、NVIDIA/CUDA GPU 和 Conda。真机部署还需要已编译的 Marvin ROS2 工作区、三路相机及 VLAHost HTTP 服务。
统一入口:
./run.sh env 选择并安装模型环境
./run.sh data 转换/审查模型使用的数据
./run.sh train 选择模型和对应训练 YAML
./run.sh deploy 根据统一部署 YAML 选择模型和权重
运行:
./run.sh env
脚本显示:
1) Force-conditioned ACT (FCACT)
2) Reactive Diffusion Policy (RDP)
3) ImplicitRDP
4) ForceVLA
输入 1、2、3 或 4 后,脚本读取该模型的 config/environment.yaml,创建独立 Conda 环境,以
editable 方式安装当前 main,并只安装对应模型需要的依赖。安装结束后会自动执行 Policy 导入和环境检测。
无人值守时可直接指定模型:
./run.sh env --model fcact
./run.sh env --model rdp
./run.sh env --model implicitrdp
./run.sh env --model forcevla
指定模型后,统一入口会进入对应环境并使用该工作区的 data.yaml:
./run.sh data --model fcact
./run.sh data --model rdp
./run.sh data --model implicitrdp
./run.sh data --model forcevla
默认只审查 /home/zzx23457/Data/lerobot/zadai_200_with_effort。转换新 rosbag 时修改对应工作区的
config/data.yaml,设置 conversion.enabled: true、输入目录和输出目录。同一命令会完成 rosbag 检查、
velocity/effort 转换、可选 merge、严格数据审查和曲线生成。
可在不修改默认文件的情况下指定另一份配置:
./run.sh data --model rdp --config /绝对路径/其他_data.yaml
第 0 个 episode 的曲线:
| 左臂 7 通道 | 右臂 7 通道 |
|---|---|
![]() | ![]() |

统一训练入口会自动执行以下检查:
policy.type 与所选模型一致;四个模型的默认训练命令:
./run.sh train --model fcact
./run.sh train --model rdp
./run.sh train --model implicitrdp
./run.sh train --model forcevla
只检查环境、数据和最终命令,不启动训练:
./run.sh train --model rdp --dry-run
默认 YAML 映射:
| 模型 | 训练配置 |
|---|---|
| FCACT | workspaces/fcact/config/train.yaml |
| RDP | workspaces/rdp/config/train.yaml |
| ImplicitRDP | workspaces/irdp/config/train.yaml |
| ForceVLA | workspaces/fvla/config/train.yaml |
也可以直接指向自定义参数文件:
./run.sh train --model forcevla --config /绝对路径/forcevla_experiment.yaml
如果 YAML 中声明了另一个模型的 policy.type,环境检测会在训练开始前拒绝运行。
统一部署配置为 config/deploy.yaml:
model_name: fcact
weight_path: ${repo_root}/outputs/train/force_act_zadai_200/checkpoints/last/pretrained_model
model_name 可设置为 fcact、rdp、implicitrdp 或 forcevla;weight_path 设置为该模型的
pretrained_model 目录。例如部署 RDP:
model_name: rdp
weight_path: ${repo_root}/outputs/train/rdp_diffusion_zadai_200/checkpoints/last/pretrained_model
先做不连接机器人的完整选择、环境和配置预检:
./run.sh deploy --dry-run
入口会自动选择对应 Conda 环境、Policy、工作区 deploy_stage.yaml 和机器人配置,再把 YAML 中的
weight_path 注入临时配置。临时文件在运行结束后自动删除,不修改模型的默认 YAML。
真机服务可以由各工作区 deploy_stage.yaml 的 services.manage: true 自动启动。保持 false 时,在两个
终端启动:
cd /home/zzx23457/ws_apex
source install/setup.bash
ros2 launch node_manager bringup_all_dm_m696.launch.py
cd /home/zzx23457/ws_apex
source install/setup.bash
ros2 launch vlahost vlahost_server.launch.py
在 rqt 依次调用 /tj/control/set_ready;把 /tj/control/set_mode 设置为 data: 3;把
/tj/control/set_input 设置为 data: 1。确认 joint_states.efforts[14] 有效后正式运行:
./run.sh deploy
部署前应停止其他 rollout,把机器人置于无碰撞且可急停的位置。effort 缺失、非 14 维或含 NaN/Inf 时, 部署会在发送动作前退出。
workspaces/fcact:Force-conditioned ACT 原理与参数。workspaces/rdp:RDP 两阶段训练和慢/快闭环。workspaces/irdp:ImplicitRDP 端到端训练。workspaces/fvla:ForceVLA/PI0 force token 微调。四个工作区仍可单独使用自己的 run.sh;main 根目录的 run.sh 是推荐的统一入口。
9 commits
Python
99.1%
main 分支同时包含四套面向 Marvin 双臂机器人的力反馈模型,可在同一个仓库中直接选择环境、数据、训练和
部署流程。原 main 中的 Force-conditioned ACT 独立版本已移至 fcact 分支。
| 选择 | 模型名 | Policy 类型 | 工作区 | Conda 环境 |
|---|---|---|---|---|
1 | Force-conditioned ACT | act | workspaces/fcact | lerobot_vlahost_fcact |
2 | Reactive Diffusion Policy | rdp | workspaces/rdp | lerobot_vlahost_rdp |
3 | ImplicitRDP | implicitrdp | workspaces/irdp | lerobot_vlahost_implicitrdp |
4 | ForceVLA | forcevla | workspaces/fvla | lerobot_vlahost_forcevla |
四个模型都读取 RGB、observation.state[16] 和由 m_FB_Joint_SToq 转换得到的
observation.effort[14],并输出 action[16] 关节位置目标。Policy 不向 Marvin 发送力矩动作。
| LeRobot 字段 | 固定语义 | 类型与形状 |
|---|---|---|
observation.state | 左臂 7 + 右臂 7 + 左夹爪 + 右夹爪位置 | float32[16] |
observation.velocity | 与 state 相同顺序的速度 | float32[16] |
observation.effort | m_FB_Joint_SToq:左臂 7 + 右臂 7 反馈关节扭矩 | float32[14] |
action | 左臂 7 + 右臂 7 + 左夹爪 + 右夹爪目标位置 | float32[16] |
observation.images.top | 顶部 RGB | video[480,640,3] |
observation.images.wrist_L | 左腕 RGB | video[480,640,3] |
observation.images.wrist_R | 右腕 RGB | video[480,640,3] |
训练预检会验证 dtype、shape、关节 names/order、有限值和 episode 连续性。任意 float32[14] 数据不能在
没有语义映射的情况下直接替代 Marvin effort。
git clone --branch main --single-branch git@github.com:expolrer/lerobot_vlahost_force.git
cd lerobot_vlahost_force
chmod +x run.sh workspaces/*/run.sh workspaces/*/scripts/*.sh workspaces/*/scripts/*.py scripts/*.py
需要 Ubuntu 22.04、NVIDIA/CUDA GPU 和 Conda。真机部署还需要已编译的 Marvin ROS2 工作区、三路相机及 VLAHost HTTP 服务。
统一入口:
./run.sh env 选择并安装模型环境
./run.sh data 转换/审查模型使用的数据
./run.sh train 选择模型和对应训练 YAML
./run.sh deploy 根据统一部署 YAML 选择模型和权重
运行:
./run.sh env
脚本显示:
1) Force-conditioned ACT (FCACT)
2) Reactive Diffusion Policy (RDP)
3) ImplicitRDP
4) ForceVLA
输入 1、2、3 或 4 后,脚本读取该模型的 config/environment.yaml,创建独立 Conda 环境,以
editable 方式安装当前 main,并只安装对应模型需要的依赖。安装结束后会自动执行 Policy 导入和环境检测。
无人值守时可直接指定模型:
./run.sh env --model fcact
./run.sh env --model rdp
./run.sh env --model implicitrdp
./run.sh env --model forcevla
指定模型后,统一入口会进入对应环境并使用该工作区的 data.yaml:
./run.sh data --model fcact
./run.sh data --model rdp
./run.sh data --model implicitrdp
./run.sh data --model forcevla
默认只审查 /home/zzx23457/Data/lerobot/zadai_200_with_effort。转换新 rosbag 时修改对应工作区的
config/data.yaml,设置 conversion.enabled: true、输入目录和输出目录。同一命令会完成 rosbag 检查、
velocity/effort 转换、可选 merge、严格数据审查和曲线生成。
可在不修改默认文件的情况下指定另一份配置:
./run.sh data --model rdp --config /绝对路径/其他_data.yaml
第 0 个 episode 的曲线:
| 左臂 7 通道 | 右臂 7 通道 |
|---|---|
![]() | ![]() |

统一训练入口会自动执行以下检查:
policy.type 与所选模型一致;四个模型的默认训练命令:
./run.sh train --model fcact
./run.sh train --model rdp
./run.sh train --model implicitrdp
./run.sh train --model forcevla
只检查环境、数据和最终命令,不启动训练:
./run.sh train --model rdp --dry-run
默认 YAML 映射:
| 模型 | 训练配置 |
|---|---|
| FCACT | workspaces/fcact/config/train.yaml |
| RDP | workspaces/rdp/config/train.yaml |
| ImplicitRDP | workspaces/irdp/config/train.yaml |
| ForceVLA | workspaces/fvla/config/train.yaml |
也可以直接指向自定义参数文件:
./run.sh train --model forcevla --config /绝对路径/forcevla_experiment.yaml
如果 YAML 中声明了另一个模型的 policy.type,环境检测会在训练开始前拒绝运行。
统一部署配置为 config/deploy.yaml:
model_name: fcact
weight_path: ${repo_root}/outputs/train/force_act_zadai_200/checkpoints/last/pretrained_model
model_name 可设置为 fcact、rdp、implicitrdp 或 forcevla;weight_path 设置为该模型的
pretrained_model 目录。例如部署 RDP:
model_name: rdp
weight_path: ${repo_root}/outputs/train/rdp_diffusion_zadai_200/checkpoints/last/pretrained_model
先做不连接机器人的完整选择、环境和配置预检:
./run.sh deploy --dry-run
入口会自动选择对应 Conda 环境、Policy、工作区 deploy_stage.yaml 和机器人配置,再把 YAML 中的
weight_path 注入临时配置。临时文件在运行结束后自动删除,不修改模型的默认 YAML。
真机服务可以由各工作区 deploy_stage.yaml 的 services.manage: true 自动启动。保持 false 时,在两个
终端启动:
cd /home/zzx23457/ws_apex
source install/setup.bash
ros2 launch node_manager bringup_all_dm_m696.launch.py
cd /home/zzx23457/ws_apex
source install/setup.bash
ros2 launch vlahost vlahost_server.launch.py
在 rqt 依次调用 /tj/control/set_ready;把 /tj/control/set_mode 设置为 data: 3;把
/tj/control/set_input 设置为 data: 1。确认 joint_states.efforts[14] 有效后正式运行:
./run.sh deploy
部署前应停止其他 rollout,把机器人置于无碰撞且可急停的位置。effort 缺失、非 14 维或含 NaN/Inf 时, 部署会在发送动作前退出。
workspaces/fcact:Force-conditioned ACT 原理与参数。workspaces/rdp:RDP 两阶段训练和慢/快闭环。workspaces/irdp:ImplicitRDP 端到端训练。workspaces/fvla:ForceVLA/PI0 force token 微调。四个工作区仍可单独使用自己的 run.sh;main 根目录的 run.sh 是推荐的统一入口。
9 commits
Python
99.1%