import os from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import ExecuteProcess, IncludeLaunchDescription from launch_ros.substitutions import FindPackageShare from launch.substitutions import Command from launch.launch_description_sources import PythonLaunchDescriptionSource def generate_launch_description(): robot_name = "iisy" package_name = "gaz_simulation" pkg_gazebo_ros = FindPackageShare(package='gazebo_ros').find('gazebo_ros') path = FindPackageShare(package=package_name).find(package_name) world_path = os.path.join(path, "world/test2.xml") urdf_path = os.path.join(path, "urdf/iisy.urdf") return LaunchDescription([ #IncludeLaunchDescription( # PythonLaunchDescriptionSource(os.path.join(pkg_gazebo_ros, 'launch', 'gzserver.launch.py')), # launch_arguments={'world': world_path}.items() #), ExecuteProcess( cmd=[[ 'LIBGL_ALWAYS_SOFTWARE=true ros2 launch gazebo_ros gzserver.launch.py "world:='+world_path+'"' ]], shell=True ), # Start Gazebo client IncludeLaunchDescription( PythonLaunchDescriptionSource(os.path.join(pkg_gazebo_ros, 'launch', 'gzclient.launch.py')) ), Node( package='tf2_ros', namespace='gaz_simulation', executable='static_transform_publisher', name='lidar_1_broadcaster', arguments=["1", "-1.9", "1", "1.5707963267949", "0", "0", "map", "lidar_1_link"] ), Node( package='tf2_ros', namespace='gaz_simulation', executable='static_transform_publisher', name='lidar_2_broadcaster', arguments=["-1.9", "1", "1", "0", "0", "0", "map", "lidar_2_link"] ), Node( package='gazebo_ros', executable='spawn_entity.py', arguments=['-entity', robot_name, '-topic', 'robot_description', '-x', '-1', '-y', '-1', '-z', '1', '-Y', '0'], # Yaw output='screen' ), # Subscribe to the joint states of the robot, and publish the 3D pose of each link. Node( package='robot_state_publisher', executable='robot_state_publisher', parameters=[{'robot_description': Command(['xacro ', urdf_path])}] ), # Publish the joint states of the robot Node( package='joint_state_publisher', executable='joint_state_publisher', name='joint_state_publisher' ) # , # Node( # namespace='turtlesim1', # executable='gazebo', # name='gazebo', # arguments=["test.xml"] # ) ])