使用 Basic Joint Controller¶
从 arms_ros2_control 运行关节位置控制器(HOME / HOLD / MOVEJ)— Basic Joint Controller(basic_joint_controller)。
权威来源
下列步骤和话题摘自 basic_joint_controller/README.md(及 README_zh.md)。
/fsm_command 是 std_msgs/Int32,不是 String。
在公开的 open-deploy-ws arx-lift2s 分支上,basic_joint_controller 出现在 README 的 colcon build --packages-up-to 列表中(仿真与真机)。Lift2S 的 分体 / 全身 在 ./quick_start.sh 中选择 — 见 ARX Lift 2S 和 分体控制 vs 全身控制。
前提条件¶
工作空间中已有
arms_ros2_control(例如执行./init_repo.sh之后的open-deploy-ws)已编译该软件包:
colcon build --packages-up-to basic_joint_controller --symlink-install
启动(README 演示)¶
source ~/open-deploy-ws/install/setup.bash # or your workspace install/
ros2 launch basic_joint_controller demo.launch.py robot:=fiveages_w1
# Head only
ros2 launch basic_joint_controller demo.launch.py robot:=fiveages_w1 enable_body:=false
# Body only
ros2 launch basic_joint_controller demo.launch.py robot:=fiveages_w1 enable_head:=false
参数 |
默认值(README / launch) |
|---|---|
|
|
|
空(末端 / 拓扑;为空时不向 xacro 传 |
|
|
|
|
此 demo 只声明 type,没有 left_type / right_type。左右不同末端在 OCS2 的 demo / split_body / full_body 上,见 robot_common_launch。
切换 FSM¶
ros2 topic pub --once /fsm_command std_msgs/msg/Int32 "data: 1" # HOLD → HOME
ros2 topic pub --once /fsm_command std_msgs/msg/Int32 "data: 2" # → HOLD
ros2 topic pub --once /fsm_command std_msgs/msg/Int32 "data: 4" # HOLD → MOVEJ (canonical)
取值 |
动作(README) |
|---|---|
|
HOME(仅能从 HOLD 进入) |
|
HOLD(从 HOME / MOVEJ 进入) |
|
MOVEJ(仅能从 HOLD 进入;与全身栈相同的规范值) |
|
本控制器独立运行时为 MOVEJ;在混合 OCS2/WBC 栈上 |
MOVEJ 只能回到 HOLD(2)。完整表与 Home 构型 100+ 命令见 Basic Joint Controller。
在 MOVEJ 中命令关节¶
话题带控制器名称空间。README 示例:
ros2 topic pub --once /my_controller/target_joint_position \
std_msgs/msg/Float64MultiArray "{data: [0.1, 0.2, 0.3]}"
类型是 std_msgs/Float64MultiArray,不是 sensor_msgs/JointState。可选轨迹:/{controller}/target_joint_trajectory(trajectory_msgs/JointTrajectory)。手 / 腰话题见参考页(README §5–6)。