105 lines
3 KiB
Python
105 lines
3 KiB
Python
import os
|
|
from launch.launch_description import LaunchDescription
|
|
from launch.actions import DeclareLaunchArgument
|
|
from launch.conditions import UnlessCondition
|
|
from launch.substitutions import PathJoinSubstitution, LaunchConfiguration
|
|
from launch_ros.actions import Node
|
|
from launch_ros.substitutions import FindPackageShare
|
|
from ament_index_python.packages import get_package_share_directory
|
|
from launch.actions import ExecuteProcess
|
|
|
|
|
|
|
|
|
|
def generate_launch_description():
|
|
|
|
# Launch arguments
|
|
launch_args = []
|
|
|
|
launch_args.append(
|
|
DeclareLaunchArgument(
|
|
name="robot_description",
|
|
description="Robot description XML file."
|
|
)
|
|
)
|
|
|
|
# Configure robot_description
|
|
robot_description = {"robot_description": LaunchConfiguration("robot_description")}
|
|
|
|
# Load controllers from YAML configuration file
|
|
ros2_controllers_path = os.path.join(
|
|
get_package_share_directory("rasms_moveit_config"),
|
|
"config",
|
|
"rasms_controllers.yml",
|
|
)
|
|
|
|
# Prepare controller manager and other required nodes
|
|
controller_manager = Node(
|
|
package="controller_manager",
|
|
executable="ros2_control_node",
|
|
parameters=[robot_description, ros2_controllers_path],
|
|
output={
|
|
"stdout": "screen",
|
|
"stderr": "screen"
|
|
},
|
|
)
|
|
|
|
robot_state_publisher = Node(
|
|
package="robot_state_publisher",
|
|
executable="robot_state_publisher",
|
|
output="screen",
|
|
parameters=[robot_description]
|
|
)
|
|
|
|
static_tf = Node(
|
|
package="tf2_ros",
|
|
executable="static_transform_publisher",
|
|
name="static_transform_publisher",
|
|
output="log",
|
|
arguments=["0.0", "0.0", "0.0", "0.0", "0.0", "0.0", "world", "base"],
|
|
)
|
|
|
|
joint_state_broadcaster = Node(
|
|
package="controller_manager",
|
|
executable="spawner.py",
|
|
arguments=["joint_state_broadcaster", "--controller-manager", "/controller_manager"],
|
|
)
|
|
|
|
joint_state_publisher = Node(
|
|
package="joint_state_publisher",
|
|
executable="joint_state_publisher",
|
|
name="joint_state_publisher",
|
|
output="screen",
|
|
)
|
|
|
|
rasms_arm_controller = Node(
|
|
package="controller_manager",
|
|
executable="spawner.py",
|
|
arguments=["rasms_arm_controller", "--controller-manager", "/controller_manager"],
|
|
)
|
|
|
|
"""load_controllers = []
|
|
for controller in [
|
|
"rasms_arm_controller",
|
|
"joint_state_broadcaster",
|
|
]:
|
|
load_controllers += [
|
|
ExecuteProcess(
|
|
cmd=["ros2 run controller_manager spawner.py {}".format(controller)],
|
|
shell=True,
|
|
output="screen",
|
|
)
|
|
]"""
|
|
|
|
return LaunchDescription(
|
|
launch_args +
|
|
#load_controllers +
|
|
[
|
|
controller_manager,
|
|
robot_state_publisher,
|
|
#static_tf,
|
|
joint_state_broadcaster,
|
|
rasms_arm_controller,
|
|
#joint_state_publisher
|
|
]
|
|
)
|