from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.conditions import IfCondition, UnlessCondition from launch.substitutions import Command, LaunchConfiguration from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare import os def generate_launch_description(): pkg_share = FindPackageShare("").find('toid_bot_description') default_model_path = os.path.join(pkg_share, 'src', 'toid_bot_description.urdf') default_rviz_config_path = os.path.join(pkg_share, 'rviz', 'default.rviz') robot_state_publisher_node = Node( package='robot_state_publisher', executable='robot_state_publisher', parameters=[{'robot_description': Command(['xacro ', LaunchConfiguration('model')])}] ) joint_state_publisher_node = Node( package='joint_state_publisher', executable='joint_state_publisher', name='joint_state_publisher', parameters=[{'robot_description': Command(['xacro ', default_model_path])}], condition=UnlessCondition(LaunchConfiguration('gui')) ) joint_state_publisher_gui_node = Node( package='joint_state_publisher_gui', executable='joint_state_publisher_gui', name='joint_state_publisher_gui', condition=IfCondition(LaunchConfiguration('gui')) ) rviz_node = Node( package='rviz2', executable='rviz2', name='rviz2', output='screen', arguments=['-d', default_rviz_config_path] ) return LaunchDescription([ DeclareLaunchArgument(name='gui', default_value='True', description='Flag to enable joint_state_publisher'), DeclareLaunchArgument(name='model', default_value=default_model_path, description='Path to model'), robot_state_publisher_node, joint_state_publisher_node, joint_state_publisher_gui_node, rviz_node ])