from launch import LaunchDescription from launch_ros.actions import Node from launch.substitutions import LaunchConfiguration, Command, FindExecutable, PathJoinSubstitution from launch.actions import DeclareLaunchArgument from launch_ros.substitutions import FindPackageShare from launch_ros.descriptions import ParameterValue from launch_ros.actions import LifecycleNode import os from ament_index_python.packages import get_package_share_directory def generate_launch_description(): use_sim_time = LaunchConfiguration('use_sim_time') # joy_params = os.path.join(get_package_share_directory('cps_rmp220_support'),'config','joystick.yaml') # namespace = "/rmp" # joy_node = Node( # package='joy', # executable='joy_node', # parameters=[joy_params, {'use_sim_time': use_sim_time}], # namespace = namespace # ) # teleop_node = Node( # package='rmp220_teleop', # executable='rmp220_teleop', # name='rmp220_teleop', # parameters=[joy_params, {'use_sim_time': use_sim_time}], # remappings=[('/cmd_vel', 'cmd_vel_joy')], # namespace = namespace # ) # twist_mux_params = os.path.join(get_package_share_directory('cps_rmp220_support'),'config','twist_mux.yaml') # twist_mux = Node( # package="twist_mux", # executable="twist_mux", # parameters=[twist_mux_params, {'use_sim_time': False}], # #remappings=[('cmd_vel_joy','/rmp/cmd_vel_joy')], # namespace = namespace # ) # Using the more 'ROS' way: joy node publishes at 50Hz defined in the config and joy-teleop # node publishes the joy messages only when enable button is pressed. joy_params = os.path.join(get_package_share_directory('cps_rmp220_support'),'config','joystick.yaml') namespace = "/rmp" joy_node = Node( package='joy', executable='joy_node', parameters=[joy_params, {'use_sim_time': use_sim_time}], #namespace = namespace ) teleop_node = Node( package='teleop_twist_joy', executable='teleop_node', name='teleop_node', parameters=[joy_params, {'use_sim_time': use_sim_time}], remappings=[('cmd_vel', 'cmd_vel_joy')], #namespace = namespace ) twist_mux_params = os.path.join(get_package_share_directory('cps_rmp220_support'),'config','twist_mux.yaml') twist_mux_node = Node( package="twist_mux", executable="twist_mux", parameters=[twist_mux_params, {'use_sim_time': False}], remappings=[('/cmd_vel_out','/cmd_vel_mux')] ) rmp_teleop_node = Node( package='rmp220_teleop', executable='rmp220_teleop', name='rmp220_teleop', remappings=[('cmd_vel', 'cmd_vel_joy')], ) rmp_middleware_node = Node( package='rmp220_middleware', executable='rmp220_middleware', name='rmp220_middleware', #namespace = namespace ) return LaunchDescription([ DeclareLaunchArgument( 'use_sim_time', default_value='false', description='Use sim time if true'), joy_node, teleop_node, #rmp_teleop_node, twist_mux_node, rmp_middleware_node ])