def METHOD_NAME(self, path):
    cx = np.array([state[0] for state in path])[::-1]
    cy = np.array([state[1] for state in path])[::-1]
    cyaw = np.array([state[2] for state in path])[::-1]
    goal = [cx[-1], cy[-1], cyaw[-1]]
    cx, cy, cyaw = pure_pursuit.extend_path(cx, cy, cyaw)
    speed_profile = pure_pursuit.calc_speed_profile(
        cx, cy, cyaw, self.target_speed)
    t, x, y, yaw, v, a, d, find_goal = pure_pursuit.closed_loop_prediction(
        cx, cy, cyaw, speed_profile, goal)
    yaw = [reeds_shepp_path_planning.pi_2_pi(iyaw) for iyaw in yaw]
    if not find_goal:
        print("cannot reach goal")
    if abs(yaw[-1] - goal[2]) >= self.yaw_th * 10.0:
        print("final angle is bad")
        find_goal = False
    travel = unicycle_model.dt * sum(np.abs(v))
    origin_travel = sum(np.hypot(np.diff(cx), np.diff(cy)))
    if (travel / origin_travel) >= self.invalid_travel_ratio:
        print("path is too long")
        find_goal = False
    tmp_node = self.Node(x, y, 0)
    tmp_node.path_x = x
    tmp_node.path_y = y
    if not self.check_collision(
            tmp_node, self.obstacle_list, self.robot_radius):
        print("This path is collision")
        find_goal = False
    return find_goal, x, y, yaw, v, t, a, d