def METHOD_NAME(self, robots: List[RobotControlled2D], ball: Ball):
    self.screen.fill((0, 0, 0))
    self.screen.blit(self.screen_overlay_0, (0, 0))
    for robot in robots:
        x = robot.position[0]
        y = robot.position[1]
        position = (x, y)
        polygon_points = robot.get_robot_polygon()
        polygon_points_pixel = self.convert_list_of_points_to_pixel_coordinates(polygon_points)
        pygame.draw.polygon(self.screen, THECOLORS["white"], polygon_points_pixel)
        if robot.team == Robot.Team.OPPONENT:
            pygame.draw.circle(
                self.screen, THECOLORS["blue"], center=self.convert_point_to_pixel_coordinates(position), radius=self.meter_to_pixel_x * 0.05
            )
        else:
            pygame.draw.circle(
                self.screen, THECOLORS["red"], center=self.convert_point_to_pixel_coordinates(position), radius=self.meter_to_pixel_x * 0.05
            )
        text = self.font.render(f"{robot.robot_id}", True, THECOLORS["white"])
        textRect = text.get_rect()
        textRect.center = self.convert_point_to_pixel_coordinates(position)
        self.screen.blit(text, textRect)
        # Draw robot arrow
        theta = robot.position[2]
        arrow_len = 0.3
        arrow_end_x = math.cos(theta) * arrow_len
        arrow_end_y = math.sin(theta) * arrow_len
        direction = np.array([arrow_end_x, arrow_end_y])
        direction = direction / np.linalg.norm(direction)
        arrow_end = [position[0] + arrow_end_x, position[1] + arrow_end_y]
        pygame.draw.line(
            self.screen,
            THECOLORS["white"],
            start_pos=self.convert_point_to_pixel_coordinates(position),
            end_pos=self.convert_point_to_pixel_coordinates(arrow_end),
            width=2,
        )
        # Draw vision cone
        robot_pos = np.array([x, y])
        theta = -RobotControlled2D.ObservationConstants.FOV / 2
        c, s = np.cos(theta), np.sin(theta)
        R = np.array(((c, -s), (s, c)))
        vision_cone_right = np.matmul(R, direction) * RobotControlled2D.ObservationConstants.VISION_RANGE
        theta = RobotControlled2D.ObservationConstants.FOV / 2
        c, s = np.cos(theta), np.sin(theta)
        R = np.array(((c, -s), (s, c)))
        vision_cone_left = np.matmul(R, direction) * RobotControlled2D.ObservationConstants.VISION_RANGE
        vision_cone_right_end = [position[0] + vision_cone_right[0], position[1] + vision_cone_right[1]]
        vision_cone_left_end = [position[0] + vision_cone_left[0], position[1] + vision_cone_left[1]]
        pygame.draw.line(
            self.screen,
            THECOLORS["white"],
            start_pos=self.convert_point_to_pixel_coordinates(position),
            end_pos=self.convert_point_to_pixel_coordinates(vision_cone_right_end),
            width=2,
        )
        pygame.draw.line(
            self.screen,
            THECOLORS["white"],
            start_pos=self.convert_point_to_pixel_coordinates(position),
            end_pos=self.convert_point_to_pixel_coordinates(vision_cone_left_end),
            width=2,
        )
        for i, obstacle in enumerate(robot.observed_obstacles):
            if robot.team == Robot.Team.OPPONENT:
                color = (255, 0, 0, obstacle.probability * 0.5)
            else:
                color = (0, 0, 255, obstacle.probability * 0.5)
            pygame.draw.circle(
                self.screen, color, center=self.convert_point_to_pixel_coordinates(obstacle.position), radius=self.meter_to_pixel_x * 0.1, width=1
            )
        # Draw robot path
        if robot.path is not None:
            verts = []
            for j in range(0, 11):
                path_vert = robot.path.poseAtRatio(j / 10).position
                verts.append([path_vert[0], path_vert[1]])
            pygame.draw.lines(
                self.screen, THECOLORS["orange"], closed=False, points=self.convert_list_of_points_to_pixel_coordinates(verts), width=1
            )
    if ball.position is not None:
        x = ball.position[0]
        y = ball.position[1]
        pygame.draw.circle(
            self.screen, THECOLORS["yellow"], center=self.convert_point_to_pixel_coordinates((x, y)), radius=self.meter_to_pixel_x * 0.07
        )
    pygame.display.flip()
    pygame.event.get()