Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions robotiq_description/config/robotiq_2f_140_controllers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
controller_manager:
ros__parameters:
update_rate: 500 # Hz
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
robotiq_gripper_controller:
type: position_controllers/GripperActionController
robotiq_activation_controller:
type: robotiq_controllers/RobotiqActivationController

robotiq_gripper_controller:
ros__parameters:
default: true
joint: finger_joint
use_effort_interface: true
use_speed_interface: true

robotiq_activation_controller:
ros__parameters:
default: true
118 changes: 98 additions & 20 deletions robotiq_description/launch/robotiq_control.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,22 +34,44 @@
PathJoinSubstitution,
)
from launch.conditions import IfCondition
from launch_ros.substitutions import FindPackageShare
from launch_ros.parameter_descriptions import ParameterValue
import launch_ros
import os


def generate_launch_description():
description_pkg_share = launch_ros.substitutions.FindPackageShare(
package="robotiq_description"
).find("robotiq_description")
default_model_path = os.path.join(
description_pkg_share, "urdf", "robotiq_2f_85_gripper.urdf.xacro"
args = []
args.append(
launch.actions.DeclareLaunchArgument(
name="description_package",
default_value="robotiq_description",
description="Default description package with gripper URDF/XACRO files.",
)
)
default_rviz_config_path = os.path.join(
description_pkg_share, "rviz", "view_urdf.rviz"
args.append(
launch.actions.DeclareLaunchArgument(
name="description_file",
default_value="robotiq_2f_85_gripper.urdf.xacro",
description="Gripper description file name located in the 'urdf' folder of the description_package.",
)
)

default_model_path = PathJoinSubstitution(
[
FindPackageShare(package=LaunchConfiguration("description_package")),
"urdf",
LaunchConfiguration("description_file"),
]
)
default_rviz_config_path = PathJoinSubstitution(
[
FindPackageShare(package=LaunchConfiguration("description_package")),
"rviz",
"view_urdf.rviz",
]
)

args = []
args.append(
launch.actions.DeclareLaunchArgument(
name="model",
Expand All @@ -76,17 +98,70 @@ def generate_launch_description():
description="Port for communicating with Robotiq hardware",
)
)
args.append(
launch.actions.DeclareLaunchArgument(
name="parent",
default_value="world",
description="Parent link for the Robotiq gripper (default: world)",
)
)
args.append(
launch.actions.DeclareLaunchArgument(
name="origin",
default_value='"0 0 0 0 0 0"',
description="Gripper origin as 'x y z r p y' (default: 0 0 0 0 0 0)",
)
)
args.append(
launch.actions.DeclareLaunchArgument(
name="controllers_file",
default_value=PathJoinSubstitution(
[
FindPackageShare(package=LaunchConfiguration("description_package")),
"config",
"robotiq_2f_85_controllers.yaml",
]
),
description="Path to the controller YAML file",
)
)

args.append(
launch.actions.DeclareLaunchArgument(
name="tf_prefix",
default_value="",
description="tf_prefix of the joint names, useful for multi-robot setup.",
)
)

args.append(
launch.actions.DeclareLaunchArgument(
name="use_fake_hardware",
default_value="false",
description="Use fake/mock hardware for simulation (set to 'true' for simulation).",
)
)

robot_description_content = Command(
[
PathJoinSubstitution([FindExecutable(name="xacro")]),
" ",
LaunchConfiguration("model"),
" ",
"use_fake_hardware:=false",
"use_fake_hardware:=",
LaunchConfiguration("use_fake_hardware"),
" ",
"com_port:=",
LaunchConfiguration("com_port"),
" ",
"parent:=",
LaunchConfiguration("parent"),
" ",
"origin:=",
LaunchConfiguration("origin"),
" ",
"prefix:=",
LaunchConfiguration("tf_prefix"),
]
)

Expand All @@ -98,24 +173,19 @@ def generate_launch_description():

update_rate_config_file = PathJoinSubstitution(
[
description_pkg_share,
FindPackageShare(package=LaunchConfiguration("description_package")),
"config",
"robotiq_update_rate.yaml",
]
)

controllers_file = "robotiq_controllers.yaml"
initial_joint_controllers = PathJoinSubstitution(
[description_pkg_share, "config", controllers_file]
)

control_node = launch_ros.actions.Node(
package="controller_manager",
executable="ros2_control_node",
parameters=[
robot_description_param,
update_rate_config_file,
initial_joint_controllers,
LaunchConfiguration("controllers_file"),
],
)

Expand All @@ -140,20 +210,28 @@ def generate_launch_description():
arguments=[
"joint_state_broadcaster",
"--controller-manager",
"/controller_manager",
"controller_manager",
],
)

robotiq_gripper_controller_spawner = launch_ros.actions.Node(
package="controller_manager",
executable="spawner",
arguments=["robotiq_gripper_controller", "-c", "/controller_manager"],
arguments=[
"robotiq_gripper_controller",
"--controller-manager",
"controller_manager",
],
)

robotiq_activation_controller_spawner = launch_ros.actions.Node(
package="controller_manager",
executable="spawner",
arguments=["robotiq_activation_controller", "-c", "/controller_manager"],
arguments=[
"robotiq_activation_controller",
"--controller-manager",
"controller_manager",
],
)

nodes = [
Expand All @@ -165,4 +243,4 @@ def generate_launch_description():
rviz_node,
]

return launch.LaunchDescription(args + nodes)
return launch.LaunchDescription(args + nodes)
13 changes: 10 additions & 3 deletions robotiq_description/urdf/robotiq_2f_140_gripper.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,19 @@
<!-- parameters -->
<xacro:arg name="use_fake_hardware" default="true" />
<xacro:arg name="com_port" default="/dev/ttyUSB0" />
<xacro:arg name="parent" default="world" />
<xacro:arg name="origin" default="0 0 0 0 0 0" />
<xacro:arg name="prefix" default="" />
<!-- Split the origin into xyz and rpy -->
<xacro:property name="origin_clean" value="${'$(arg origin)'.replace('&quot;', '')}" />
<xacro:property name="origin_xyz" value="${origin_clean.split()[0:3]}" />
<xacro:property name="origin_rpy" value="${origin_clean.split()[3:6]}" />

<!-- Import macros -->
<xacro:include filename="$(find robotiq_description)/urdf/robotiq_2f_140_macro.urdf.xacro" />

<link name="world" />
<xacro:robotiq_gripper name="RobotiqGripperHardwareInterface" prefix="" parent="world" use_fake_hardware="$(arg use_fake_hardware)" com_port="$(arg com_port)">
<origin xyz="0 0 0" rpy="0 0 0" />
<link name="$(arg parent)" />
<xacro:robotiq_gripper name="RobotiqGripperHardwareInterface" prefix="$(arg prefix)" parent="$(arg parent)" use_fake_hardware="$(arg use_fake_hardware)" com_port="$(arg com_port)">
<origin xyz="${' '.join(origin_xyz)}" rpy="${' '.join(origin_rpy)}" />
</xacro:robotiq_gripper>
</robot>
13 changes: 10 additions & 3 deletions robotiq_description/urdf/robotiq_2f_85_gripper.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,19 @@
<!-- parameters -->
<xacro:arg name="use_fake_hardware" default="true" />
<xacro:arg name="com_port" default="/dev/ttyUSB0" />
<xacro:arg name="parent" default="world" />
<xacro:arg name="origin" default="0 0 0 0 0 0" />

<!-- Split the origin into xyz and rpy -->
<xacro:property name="origin_clean" value="${'$(arg origin)'.replace('&quot;', '')}" />
<xacro:property name="origin_xyz" value="${origin_clean.split()[0:3]}" />
<xacro:property name="origin_rpy" value="${origin_clean.split()[3:6]}" />

<!-- Import macros -->
<xacro:include filename="$(find robotiq_description)/urdf/robotiq_2f_85_macro.urdf.xacro" />

<link name="world" />
<xacro:robotiq_gripper name="RobotiqGripperHardwareInterface" prefix="" parent="world" use_fake_hardware="$(arg use_fake_hardware)" com_port="$(arg com_port)">
<origin xyz="0 0 0" rpy="0 0 0" />
<link name="$(arg parent)" />
<xacro:robotiq_gripper name="RobotiqGripperHardwareInterface" prefix="" parent="$(arg parent)" use_fake_hardware="$(arg use_fake_hardware)" com_port="$(arg com_port)">
<origin xyz="${' '.join(origin_xyz)}" rpy="${' '.join(origin_rpy)}" />
</xacro:robotiq_gripper>
</robot>