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') joy_node = Node( package='joy', executable='joy_node', parameters=[joy_params, {'use_sim_time': use_sim_time}], ) 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')] ) 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_out','/diffbot_base_controller/cmd_vel_unstamped')] ) return LaunchDescription([ DeclareLaunchArgument( 'use_sim_time', default_value='false', description='Use sim time if true'), joy_node, teleop_node, ]) def generate_launch_description(): robot_description_content = Command( [ PathJoinSubstitution([FindExecutable(name="xacro")]), " ", PathJoinSubstitution( [ FindPackageShare("bot_mini_description"), "urdf", "odrive_diffbot.urdf.xacro" ] ), ] ) robot_description = {"robot_description": ParameterValue(robot_description_content, value_type=str)} robot_controllers = PathJoinSubstitution( [ FindPackageShare("bot_mini_bringup"), "config", "diffbot_controllers.yaml", ] ) control_node = Node( package="controller_manager", executable="ros2_control_node", parameters=[robot_description, robot_controllers], output="both", ) robot_state_pub_node = Node( package="robot_state_publisher", executable="robot_state_publisher", output="both", parameters=[robot_description], ) joint_state_broadcaster_spawner = Node( package="controller_manager", executable="spawner", arguments=["joint_state_broadcaster", "-c", "/controller_manager"], ) robot_controller_spawner = Node( package="controller_manager", executable="spawner", arguments=["diffbot_base_controller", "-c", "/controller_manager"], ) joystick_spawner = Node( package="joy", executable="joy_node" ) teleop_spawner = Node( package="rmp220_teleop", executable="rmp220_teleop", remappings=[('/diffbot_base_controller/cmd_vel_unstamped','/cmd_vel_joy')] ) cam_node = Node( package="ros2_cam_openCV", executable="cam_node" ) lidar_dir = os.path.join(get_package_share_directory('lslidar_driver'), 'params', 'lsx10.yaml') lidar_node = LifecycleNode( package='lslidar_driver', executable='lslidar_driver_node', name='lslidar_driver_node', output='screen', emulate_tty=True, namespace='', parameters=[lidar_dir], ) twist_mux_params = os.path.join(get_package_share_directory('bot_mini_bringup'),'config','twist_mux.yaml') twist_mux = Node( package="twist_mux", executable="twist_mux", parameters=[twist_mux_params, {'use_sim_time': False}], remappings=[('/cmd_vel_out','/diffbot_base_controller/cmd_vel_unstamped')] ) return LaunchDescription([ twist_mux ])