import os from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration, PathJoinSubstitution from launch.conditions import IfCondition from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare from ament_index_python.packages import get_package_share_directory from moveit_configs_utils import MoveItConfigsBuilder from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource def generate_launch_description(): # Command-line arguments rviz_config_arg = DeclareLaunchArgument( "rviz_config", default_value="/home/humble_ws/src/antworker_moveit_bringup/config/rviz_config.rviz", description="RViz configuration file", ) launch_arguments = { "robot_ip": "192.168.1.10", "use_fake_hardware": "false", "gripper": "robotiq_2f_85", "dof": "6" } kinova_pkg = "kinova_gen3_6dof_robotiq_2f_85_moveit_config" moveit_config = ( MoveItConfigsBuilder( "gen3", package_name = kinova_pkg ) .robot_description(mappings = launch_arguments) .trajectory_execution(file_path="config/moveit_controllers.yaml") .planning_scene_monitor( publish_robot_description=True, publish_robot_description_semantic=True ) .planning_pipelines( pipelines=["ompl", "pilz_industrial_motion_planner"] ) .to_moveit_configs() ) # # Start the actual move_group node/action server # run_move_group_node = Node( # package="moveit_ros_move_group", # executable="move_group", # output="screen", # parameters=[ # moveit_config.to_dict(), # { # "octomap_resolution": 0.05 # } # ], # arguments=["--ros-args", "--log-level", "info"], # ) # RViz rviz_base = LaunchConfiguration("rviz_config") rviz_node = Node( package="rviz2", executable="rviz2", name="rviz2", output="log", arguments=["-d", rviz_base], parameters=[ moveit_config.robot_description, moveit_config.robot_description_semantic, moveit_config.planning_pipelines, moveit_config.robot_description_kinematics, moveit_config.joint_limits ], ) static_tf = Node( package="tf2_ros", executable="static_transform_publisher", name="static_transform_publisher", output="log", arguments=["--frame-id", "world", "--child-frame-id", "kinova/base_link"], ) # Publish TF robot_state_publisher = Node( package="robot_state_publisher", executable="robot_state_publisher", name="robot_state_publisher", output="both", parameters=[moveit_config.robot_description], ) ros2_controllers_path = os.path.join( get_package_share_directory(kinova_pkg), "config", "ros2_controllers.yaml", ) ros2_control_node = Node( package="controller_manager", executable="ros2_control_node", parameters=[ ros2_controllers_path, {"update_rate": 100} ], remappings=[ ("/controller_manager/robot_description", "/robot_description"), ], output="both", ) joint_state_broadcaster_spawner = Node( package="controller_manager", executable="spawner", arguments=[ "joint_state_broadcaster", "--controller-manager", "/controller_manager", ], ) arm_controller_spawner = Node( package="controller_manager", executable="spawner", arguments=["joint_trajectory_controller", "-c", "/controller_manager"], ) hand_controller_spawner = Node( package="controller_manager", executable="spawner", arguments=["robotiq_gripper_controller", "-c", "/controller_manager"], ) hw_launch = [ rviz_config_arg, rviz_node, static_tf, robot_state_publisher, #run_move_group_node, ros2_control_node, joint_state_broadcaster_spawner, arm_controller_spawner, hand_controller_spawner ] return LaunchDescription( hw_launch )