diff --git a/devices/sim/gazebo/config/controllers.yaml b/devices/sim/gazebo/config/controllers.yaml index 077f91a..d29fc22 100644 --- a/devices/sim/gazebo/config/controllers.yaml +++ b/devices/sim/gazebo/config/controllers.yaml @@ -37,6 +37,11 @@ controller_manager: rizon_arm_controller: type: joint_trajectory_controller/JointTrajectoryController + # 夹爪。名字是仿真内部的事(应用层通过 GripperExecute 服务访问夹爪, + # 不直接碰这个控制器),所以可以自由命名。 + gripper_controller: + type: position_controllers/JointGroupPositionController + # --- 关节状态广播 ------------------------------------------------------------- # TF 与 /joint_states 的来源。robot_state_publisher 靠 /joint_states 算 TF, # 少了它 RViz / 跟踪节点全都查不到 tcp 的位置。 @@ -76,3 +81,27 @@ rizon_arm_controller: # 与官方 joint_limits.yaml 的 soft 限位对齐(真机软限位)。 # 不设的话 JTC 只按硬限位卡,仿真里会走到真机不敢走的姿态。 stopped_velocity_tolerance: 0.05 + +# --- 夹爪控制器 --------------------------------------------------------------- +# ⚠️ 为什么这里要 7 个关节,而真机只需要 1 个"宽度"关节: +# Gazebo 不支持 URDF 的 (sdformat 转 SDF 时直接丢掉), +# 所以 6 个从动关节在仿真里不会自动跟随,必须由 sim_gripper_adapter +# 算出角度后**一起下发**。详见 arm.sim.ros2_control.xacro 里的长注释。 +# +# 用 JointGroupPositionController(一次收一组位置)而不是 JTC: +# 夹爪是"两态"动作(开/合),不需要轨迹插值和时间参数化, +# JointGroupPositionController 的语义更直接、也少一层容错。 +# 它订阅 ~/commands (std_msgs/Float64MultiArray),顺序 = 下面的 joints 顺序。 +# +# 顺序约定:第 0 个是主关节 finger_width_joint,其余 6 个从动关节按 +# 左右、由外到内排列。适配器按同一顺序填数组(它自己也会校验)。 +gripper_controller: + ros__parameters: + joints: + - sim_finger_width_joint + - sim_left_outer_knuckle_joint + - sim_left_inner_knuckle_joint + - sim_left_inner_finger_joint + - sim_right_outer_knuckle_joint + - sim_right_inner_knuckle_joint + - sim_right_inner_finger_joint diff --git a/devices/sim/gazebo/urdf/arm.sim.ros2_control.xacro b/devices/sim/gazebo/urdf/arm.sim.ros2_control.xacro index ee641c9..74eda0c 100644 --- a/devices/sim/gazebo/urdf/arm.sim.ros2_control.xacro +++ b/devices/sim/gazebo/urdf/arm.sim.ros2_control.xacro @@ -23,7 +23,7 @@ --> - + @@ -56,6 +56,50 @@ + + + + + + + + + + + diff --git a/devices/sim/gazebo/urdf/arm.sim.urdf.xacro b/devices/sim/gazebo/urdf/arm.sim.urdf.xacro index b425ac5..ce19498 100644 --- a/devices/sim/gazebo/urdf/arm.sim.urdf.xacro +++ b/devices/sim/gazebo/urdf/arm.sim.urdf.xacro @@ -131,7 +131,7 @@ ros2_control:gz_ros2_control 硬件(同目录) ========================================================================= --> - +