分体控制 vs 全身控制

ocs2_arm_controller 中有两条真实 launch 路径,在 open-deploy-ws arx-lift2s README 中也对应 分体 / 全身。

分体控制(split)

全身控制(whole-body)

含义

手臂与身体/头(通常还有手)由各自独立的控制器运行

一个统一的全身 MPC 控制器

手臂 / 身体

ocs2_arm_controller + basic_joint_controller(setup_body_controllers 用于 body 和 head)

ocs2_wbc_controller,使用 ocs2_wheel_humanoid

启动

ros2 launch ocs2_arm_controller split_body.launch.py(launch_mode split_body)

当机器人配置 type 为 ocs2_wbc_controller/Ocs2WbcController 时:ros2 launch ocs2_arm_controller full_body.launch.py(launch_mode full_body)

Lift2S 菜单

./quick_start.sh → Launch → Lift2S → 分体(菜单:split body)

同一菜单 → 全身(菜单:full body)

split_body.launch.py 是分体路径。全身控制用 full_body.launch.py(没有公开的单独 ros2 launch ocs2_wbc_controller … 入口)。

软件包

  • Basic Joint Controller(basic_joint_controller)— 关节 FSM HOME / HOLD / MOVEJ;/fsm_command 是 std_msgs/Int32。操作指南:使用 Basic Joint Controller。

  • OCS2 Arm Controller(ocs2_arm_controller)— 机械臂 MPC 的 FSM:HOME / OCS2 / HOLD(包 README)。

  • OCS2 WBC Controller(ocs2_wbc_controller)— 私有子模块;全身 MPC。状态与话题见开通后该包 README。

FSM 命令取值、Action / Service 表以及 WBC 笛卡尔话题:FSM 与话题。控制器索引:控制器参考。

/body_target*、/head_target*、/mode_command 以及 WbcCurrentState 需要 ocs2_wbc_controller 以及该机型的全身启动/配置。默认 mock 演示(demo.launch.py)和分体并不表示这些能力可用;能力位取决于机型。公开的 Taku mock 使用 split_body.launch.py robot:=taku;full_body.launch.py robot:=taku 仍需要私有 ocs2_wbc_controller 子模块(描述里有 config/ocs2/fixed_base_tcp.info 并不够)。