Add gripper control for simulation.

This commit is contained in:
Matt Spencer
2026-08-06 18:07:11 +00:00
parent a27c7147c3
commit 40620300ed
2 changed files with 27 additions and 17 deletions
@@ -8,21 +8,26 @@
Per-wheel mecanum friction is emitted by the wheel macro when
gazebo_ignition (sim) is true, so it is NOT repeated here.
controllers_file : primary controller params (the AGV base controllers).
controllers_file_extra : OPTIONAL second params file, loaded into the SAME
controller_manager. Used when the AGV is composed
into a larger robot (e.g. a mobile manipulator) so
the additional controllers (e.g. an arm_controller)
share the single gz_ros2_control controller_manager.
Empty by default -> standalone AGV unaffected.
controllers_file : primary controller params (the AGV base controllers).
controllers_file_arm : OPTIONAL per-function params files, each loaded into
controllers_file_gripper the SAME controller_manager. Used when the AGV is
composed into a larger robot (e.g. a mobile
manipulator) so the additional controllers (e.g. an
arm_controller / gripper_action_controller) share the
single gz_ros2_control controller_manager. Named by
function for clarity; empty by default -> standalone
AGV unaffected.
-->
<xacro:macro name="agv_pro_gazebo" params="prefix controllers_file controllers_file_extra:=''">
<xacro:macro name="agv_pro_gazebo" params="prefix controllers_file controllers_file_arm:='' controllers_file_gripper:=''">
<gazebo>
<plugin filename="gz_ros2_control-system"
name="gz_ros2_control::GazeboSimROS2ControlPlugin">
<parameters>${controllers_file}</parameters>
<xacro:if value="${controllers_file_extra != ''}">
<parameters>${controllers_file_extra}</parameters>
<xacro:if value="${controllers_file_arm != ''}">
<parameters>${controllers_file_arm}</parameters>
</xacro:if>
<xacro:if value="${controllers_file_gripper != ''}">
<parameters>${controllers_file_gripper}</parameters>
</xacro:if>
</plugin>
</gazebo>
@@ -18,12 +18,16 @@
<xacro:arg name="controllers_file" default="" />
<xacro:property name="controllers_file" value="$(arg controllers_file)" />
<!-- Optional second controller params file, loaded into the SAME
gz_ros2_control controller_manager. Used when composing the AGV into a
larger robot (e.g. a mobile manipulator) so extra controllers share the
single controller_manager. Empty -> standalone behaviour unchanged. -->
<xacro:arg name="controllers_file_extra" default="" />
<xacro:property name="controllers_file_extra" value="$(arg controllers_file_extra)" />
<!-- Optional per-function controller params files, each loaded into the
SAME gz_ros2_control controller_manager. Used when composing the AGV
into a larger robot (e.g. a mobile manipulator) so its controllers
share the single controller_manager. Named by function for clarity;
empty -> standalone behaviour unchanged. -->
<xacro:arg name="controllers_file_arm" default="" />
<xacro:property name="controllers_file_arm" value="$(arg controllers_file_arm)" />
<xacro:arg name="controllers_file_gripper" default="" />
<xacro:property name="controllers_file_gripper" value="$(arg controllers_file_gripper)" />
<link name="${prefix}base_footprint" />
@@ -154,7 +158,8 @@
<xacro:if value="${sim}">
<xacro:include filename="$(find agv_pro_description)/urdf/agv_pro.gazebo.xacro" />
<xacro:agv_pro_gazebo prefix="${prefix}" controllers_file="${controllers_file}"
controllers_file_extra="${controllers_file_extra}" />
controllers_file_arm="${controllers_file_arm}"
controllers_file_gripper="${controllers_file_gripper}" />
</xacro:if>
</robot>