def METHOD_NAME():
    package_dir = get_package_share_directory(PACKAGE_NAME)
    world = LaunchConfiguration('world')
    # Starts Webots
    webots = WebotsLauncher(
        world=PathJoinSubstitution([package_dir, 'worlds', world]),
        ros2_supervisor=True
    )
    # Driver nodes
    # When having multiple robot it is mandatory to specify the robot name.
    ur5e_xacro_path = os.path.join(package_dir, 'resource', 'ur5e_with_gripper.urdf.xacro')
    ur5e_control_params = os.path.join(package_dir, 'resource', 'ros2_control_config.yaml')
    ur5e_driver = WebotsController(
        robot_name='UR5e',
        namespace='ur5e',
        parameters=[
            {'robot_description': ur5e_xacro_path},
            {'xacro_mappings': ['name:=UR5eWithGripper']},
            {'use_sim_time': True},
            ur5e_control_params
        ],
        respawn=True
    )
    # Standard Webots robot using driver node
    abb_description_path = os.path.join(package_dir, 'resource', 'webots_abb_description.urdf')
    abb_control_params = os.path.join(package_dir, 'resource', 'ros2_control_abb_config.yaml')
    abb_driver = WebotsController(
        robot_name='abbirb4600',
        namespace='abb',
        parameters=[
            {'robot_description': abb_description_path},
            {'use_sim_time': True},
            abb_control_params
        ],
        respawn=True
    )
    # The following line is important!
    # This event handler respawns the ROS 2 nodes on simulation reset (supervisor process ends).
    reset_handler = launch.actions.RegisterEventHandler(
        event_handler=launch.event_handlers.OnProcessExit(
            target_action=webots._supervisor,
            on_exit=get_ros2_nodes,
        )
    )
    return LaunchDescription([
        DeclareLaunchArgument(
            'world',
            default_value='robotic_arms.wbt',
            description='Choose one of the world files from `/webots_ros2_universal_robot/worlds` directory'
        ),
        webots,
        webots._supervisor,
        ur5e_driver,
        abb_driver,
        # This action will kill all nodes once the Webots simulation has exited
        launch.actions.RegisterEventHandler(
            event_handler=launch.event_handlers.OnProcessExit(
                target_action=webots,
                on_exit=[
                    launch.actions.UnregisterEventHandler(
                        event_handler=reset_handler.event_handler
                    ),
                    launch.actions.EmitEvent(event=launch.events.Shutdown())
                ],
            )
        ),
        # Add the reset event handler
        reset_handler
    ] + get_ros2_nodes())