def METHOD_NAME():
    package_dir = get_package_share_directory('webots_ros2_epuck')
    use_sim_time = LaunchConfiguration('use_sim_time', default=True)
    world = LaunchConfiguration('world', default='rats_life_benchmark.wbt')
    # Webots
    webots_launch = IncludeLaunchDescription(
        PythonLaunchDescriptionSource(
            os.path.join(package_dir, 'launch', 'robot_launch.py')
        ),
        launch_arguments={
            'use_sim_time': 'true',
            'world': world
        }.items()
    )
    # Launch Navigation2 without localization and without costmaps.
    # As the launch file is intended for mapping comparison only (real vs. physical) we want strictly to follow the waypoints
    # (without obstacle avoidance).
    # This way, mapping quality is not compromised by different paths.
    nav2 = IncludeLaunchDescription(
        PythonLaunchDescriptionSource(
            os.path.join(get_package_share_directory('nav2_bringup'), 'launch', 'navigation_launch.py')
        ),
        launch_arguments=[
            ('use_sim_time', use_sim_time),
            ('params_file', os.path.join(package_dir, 'resource', 'nav2_rats_life_waypoints.yaml'))
        ]
    )
    rviz = Node(
        package='rviz2',
        executable='rviz2',
        name='rviz2',
        arguments=['-d', os.path.join(package_dir, 'resource', 'all.rviz')],
        parameters=[{'use_sim_time': use_sim_time}],
        output='screen'
    )
    mapper = Node(
        package='webots_ros2_epuck',
        executable='simple_mapper',
        output='screen',
        parameters=[{'use_sim_time': use_sim_time, 'fill_map': True}],
    )
    # Send the waypoints to Navigation2 package once the corresponding node is ready.
    send_waypoints = ExecuteProcess(
        # The goal has to be sent once the simulation is up and running.
        # Therefore, we keep sending the goal until it is accepted.
        cmd=[
            'sleep 5;'
            'while [ -z '
            f'`ros2 action send_goal /follow_waypoints nav2_msgs/action/FollowWaypoints \'{get_waypoints()}\' | grep accepted`'
            ']; do'
            '  sleep 3;'
            'done'
        ],
        shell=True
    )
    return LaunchDescription([
        webots_launch,
        nav2,
        rviz,
        mapper,
        send_waypoints,
        DeclareLaunchArgument(
            'use_sim_time',
            default_value='true',
            description='Use simulation (Webots) clock if true'
        )
    ])