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 Per-wheel mecanum friction is emitted by the wheel macro when
gazebo_ignition (sim) is true, so it is NOT repeated here. gazebo_ignition (sim) is true, so it is NOT repeated here.
controllers_file : primary controller params (the AGV base controllers). controllers_file : primary controller params (the AGV base controllers).
controllers_file_extra : OPTIONAL second params file, loaded into the SAME controllers_file_arm : OPTIONAL per-function params files, each loaded into
controller_manager. Used when the AGV is composed controllers_file_gripper the SAME controller_manager. Used when the AGV is
into a larger robot (e.g. a mobile manipulator) so composed into a larger robot (e.g. a mobile
the additional controllers (e.g. an arm_controller) manipulator) so the additional controllers (e.g. an
share the single gz_ros2_control controller_manager. arm_controller / gripper_action_controller) share the
Empty by default -> standalone AGV unaffected. 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> <gazebo>
<plugin filename="gz_ros2_control-system" <plugin filename="gz_ros2_control-system"
name="gz_ros2_control::GazeboSimROS2ControlPlugin"> name="gz_ros2_control::GazeboSimROS2ControlPlugin">
<parameters>${controllers_file}</parameters> <parameters>${controllers_file}</parameters>
<xacro:if value="${controllers_file_extra != ''}"> <xacro:if value="${controllers_file_arm != ''}">
<parameters>${controllers_file_extra}</parameters> <parameters>${controllers_file_arm}</parameters>
</xacro:if>
<xacro:if value="${controllers_file_gripper != ''}">
<parameters>${controllers_file_gripper}</parameters>
</xacro:if> </xacro:if>
</plugin> </plugin>
</gazebo> </gazebo>
@@ -18,12 +18,16 @@
<xacro:arg name="controllers_file" default="" /> <xacro:arg name="controllers_file" default="" />
<xacro:property name="controllers_file" value="$(arg controllers_file)" /> <xacro:property name="controllers_file" value="$(arg controllers_file)" />
<!-- Optional second controller params file, loaded into the SAME <!-- Optional per-function controller params files, each loaded into the
gz_ros2_control controller_manager. Used when composing the AGV into a SAME gz_ros2_control controller_manager. Used when composing the AGV
larger robot (e.g. a mobile manipulator) so extra controllers share the into a larger robot (e.g. a mobile manipulator) so its controllers
single controller_manager. Empty -> standalone behaviour unchanged. --> share the single controller_manager. Named by function for clarity;
<xacro:arg name="controllers_file_extra" default="" /> empty -> standalone behaviour unchanged. -->
<xacro:property name="controllers_file_extra" value="$(arg controllers_file_extra)" /> <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" /> <link name="${prefix}base_footprint" />
@@ -154,7 +158,8 @@
<xacro:if value="${sim}"> <xacro:if value="${sim}">
<xacro:include filename="$(find agv_pro_description)/urdf/agv_pro.gazebo.xacro" /> <xacro:include filename="$(find agv_pro_description)/urdf/agv_pro.gazebo.xacro" />
<xacro:agv_pro_gazebo prefix="${prefix}" controllers_file="${controllers_file}" <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> </xacro:if>
</robot> </robot>