import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
from launch.conditions import IfCondition
from launch.substitutions import LaunchConfiguration, Command, PythonExpression
from launch_ros.actions import Node
from launch.launch_description_sources import PythonLaunchDescriptionSource
def generate_launch_description():
arg_x = DeclareLaunchArgument('arg_x', default_value='0.00')
arg_y = DeclareLaunchArgument('arg_y', default_value='0.00')
arg_z = DeclareLaunchArgument('arg_z', default_value='0.00')
arg_R = DeclareLaunchArgument('arg_R', default_value='0.00')
arg_P = DeclareLaunchArgument('arg_P', default_value='0.00')
arg_Y = DeclareLaunchArgument('arg_Y', default_value='0.00')
pkg_dir = get_package_share_directory('robot_arm_urdf')
robot_description_content = Command([
'xacro ', os.path.join(pkg_dir, 'urdf', 'robot_arm_urdf.urdf')
])
robot_description = {'robot_description': robot_description_content}
gazebo_ros_dir = get_package_share_directory('gazebo_ros')
gazebo = IncludeLaunchDescription(
PythonLaunchDescriptionSource([os.path.join(gazebo_ros_dir, 'launch', 'gazebo.launch.py')]),
launch_arguments={'world': 'empty.world'}.items(),
)
static_tf = Node(
package='tf2_ros',
executable='static_transform_publisher',
name='static_tf_pub',
arguments=['0', '0', '0', '0', '0', '0', 'base_link', 'base_footprint', '40'],
)
spawn_entity = Node(
package='gazebo_ros',
executable='spawn_entity.py',
name='urdf_spawner',
arguments=[
'-entity', 'robot_arm_urdf',
'-topic', 'robot_description',
'-x', LaunchConfiguration('arg_x'),
'-y', LaunchConfiguration('arg_y'),
'-z', LaunchConfiguration('arg_z'),
'-Y', LaunchConfiguration('arg_Y'),
],
output='screen'
)
rsp = Node(
package='robot_state_publisher',
executable='robot_state_publisher',
output='screen',
parameters=[robot_description]
)
joint_traj_config = os.path.join(pkg_dir, 'config', 'joint_trajectory_controller.yaml')
controller_manager = Node(
package='controller_manager',
executable='ros2_control_node',
parameters=[robot_description, joint_traj_config],
output={
'stdout': 'screen',
'stderr': 'screen',
},
)
joint_state_broadcaster_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["joint_state_broadcaster", "--controller-manager", "/controller_manager"],
)
robot_arm_controller_spawner = Node(
package="controller_manager",
executable="spawner",
arguments=["robot_arm_controller", "--controller-manager", "/controller_manager"],
)
return LaunchDescription([
arg_x,
arg_y,
arg_z,
arg_R,
arg_P,
arg_Y,
gazebo,
static_tf,
rsp,
spawn_entity,
joint_state_broadcaster_spawner,
robot_arm_controller_spawner,
])