from launch_ros.actions import Node from launch_ros.parameter_descriptions import ParameterFile from launch_ros.substitutions import FindPackageShare from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, OpaqueFunction from launch.conditions import IfCondition, UnlessCondition from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution, TextSubstitution def launch_setup(context, *args, **kwargs): # Initialize Arguments robot_ip = LaunchConfiguration("robot_ip") tool_device_name = LaunchConfiguration("tool_device_name") tool_tcp_port = LaunchConfiguration("tool_tcp_port") tool_communication_node = Node( package="ur_robot_driver", executable="tool_communication.py", name="ur_tool_comm", output="screen", parameters=[ { "robot_ip": robot_ip, "tcp_port": tool_tcp_port, "device_name": tool_device_name, } ], ) nodes_to_start = [tool_communication_node] return nodes_to_start def generate_launch_description(): # Declare Arguments declared_arguments = [] # UR specific arguments declared_arguments.append( DeclareLaunchArgument( "robot_ip", description="IP address by which the robot can be reached." ) ) declared_arguments.append( DeclareLaunchArgument( "tool_device_name", default_value="/tmp/ttyUR", description="File descriptor that will be generated for the tool communication device. \ The user has be be allowed to write to this location. \ Only effective, if use_tool_communication is set to True.", ) ) declared_arguments.append( DeclareLaunchArgument( "tool_tcp_port", default_value="50006", description="Remote port that will be used for bridging the tool's serial device. \ Only effective, if use_tool_communication is set to True.", ) ) return LaunchDescription(declared_arguments + [OpaqueFunction(function=launch_setup)])