93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
# Copyright (c) 2021 Franka Emika GmbH
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import os
|
|
|
|
from ament_index_python.packages import get_package_share_directory
|
|
from launch import LaunchDescription
|
|
from launch.actions import DeclareLaunchArgument
|
|
from launch.conditions import IfCondition, UnlessCondition
|
|
from launch.substitutions import LaunchConfiguration
|
|
from launch_ros.actions import Node
|
|
|
|
|
|
def generate_launch_description():
|
|
robot_ip_parameter_name = 'robot_ip'
|
|
use_fake_hardware_parameter_name = 'use_fake_hardware'
|
|
arm_parameter_name = 'arm_id'
|
|
joint_names_parameter_name = 'joint_names'
|
|
robot_ip = LaunchConfiguration(robot_ip_parameter_name)
|
|
use_fake_hardware = LaunchConfiguration(use_fake_hardware_parameter_name)
|
|
arm_id = LaunchConfiguration(arm_parameter_name)
|
|
joint_names = LaunchConfiguration(joint_names_parameter_name)
|
|
|
|
gripper_config = os.path.join(
|
|
get_package_share_directory('franka_gripper'), 'config', 'franka_gripper_node.yaml'
|
|
)
|
|
|
|
default_joint_name_postfix = '_finger_joint'
|
|
arm_default_argument = [
|
|
'[',
|
|
arm_id,
|
|
default_joint_name_postfix,
|
|
'1',
|
|
',',
|
|
arm_id,
|
|
default_joint_name_postfix,
|
|
'2',
|
|
']',
|
|
]
|
|
|
|
return LaunchDescription(
|
|
[
|
|
DeclareLaunchArgument(
|
|
robot_ip_parameter_name, description='Hostname or IP address of the robot.'
|
|
),
|
|
DeclareLaunchArgument(
|
|
use_fake_hardware_parameter_name,
|
|
default_value='false',
|
|
description=(
|
|
'Publish fake gripper joint states without connecting to a real gripper'
|
|
),
|
|
),
|
|
DeclareLaunchArgument(
|
|
arm_parameter_name,
|
|
default_value='panda',
|
|
description=(
|
|
'Name of the arm in the URDF file. This is used to generate the joint '
|
|
'names of the gripper.'
|
|
),
|
|
),
|
|
DeclareLaunchArgument(
|
|
joint_names_parameter_name,
|
|
default_value=arm_default_argument,
|
|
description='Names of the gripper joints in the URDF',
|
|
),
|
|
Node(
|
|
package='franka_gripper',
|
|
executable='franka_gripper_node',
|
|
name=[arm_id, '_gripper'],
|
|
parameters=[{'robot_ip': robot_ip, 'joint_names': joint_names}, gripper_config],
|
|
condition=UnlessCondition(use_fake_hardware),
|
|
),
|
|
Node(
|
|
package='franka_gripper',
|
|
executable='fake_gripper_state_publisher.py',
|
|
name=[arm_id, '_gripper'],
|
|
parameters=[{'robot_ip': robot_ip, 'joint_names': joint_names}, gripper_config],
|
|
condition=IfCondition(use_fake_hardware),
|
|
),
|
|
]
|
|
)
|