import os from launch import LaunchDescription from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource from launch_ros.actions import Node from launch.substitutions import Command from ament_index_python.packages import get_package_share_directory def generate_launch_description(): pkg_dir = get_package_share_directory('agv_pro_description') xacro_file = os.path.join(pkg_dir, 'urdf', 'minimal_robot.xacro') world_file = os.path.join(pkg_dir, 'worlds', 'empty.world') robot_description = {'robot_description': Command(['xacro ', xacro_file])} return LaunchDescription([ IncludeLaunchDescription( PythonLaunchDescriptionSource( os.path.join(get_package_share_directory('gazebo_ros'), 'launch', 'gazebo.launch.py') ), launch_arguments={'world': world_file}.items() ), Node( package='robot_state_publisher', executable='robot_state_publisher', parameters=[robot_description], output='screen' ), Node( package='gazebo_ros', executable='spawn_entity.py', arguments=['-topic', 'robot_description', '-entity', 'minimal_bot'], output='screen' ) ])