def set_route(self, current_lane_index: str, destination: str):
        """
        Find the shortest path from start road to the end road.

        Args:
            current_lane_index: start road node
            destination: end road node or end lane index

        Returns:
            None
        """
        self.spawn_road = current_lane_index[:-1]
        self.checkpoints = self.map.road_network.shortest_path(current_lane_index, destination)
        self._target_checkpoints_index = [0, 1]
        # update routing info
        if len(self.checkpoints) <= 2:
            self.checkpoints = [current_lane_index[0], current_lane_index[1]]
            self._target_checkpoints_index = [0, 0]
        assert len(self.checkpoints
                   ) >= 2, "Can not find a route from {} to {}".format(current_lane_index[0], destination)
        self.final_road = Road(self.checkpoints[-2], self.checkpoints[-1])
        final_lanes = self.final_road.get_lanes(self.map.road_network)
        self.final_lane = final_lanes[-1]
        self._navi_info.fill(0.0)
        target_road_1_start = self.checkpoints[0]
        target_road_1_end = self.checkpoints[1]
        self.current_ref_lanes = self.map.road_network.graph[target_road_1_start][target_road_1_end]

        for l in self.current_ref_lanes:
            assert l.index is not None, self.current_ref_lanes

        self.next_ref_lanes = self.map.road_network.graph[self.checkpoints[1]][self.checkpoints[2]
                                                                               ] if len(self.checkpoints) > 2 else None
        self.current_road = Road(target_road_1_start, target_road_1_end)
        self.next_road = Road(self.checkpoints[1], self.checkpoints[2]) if len(self.checkpoints) > 2 else None
        if self._dest_node_path is not None:
            ref_lane = final_lanes[0]
            later_middle = (float(self.get_current_lane_num()) / 2 - 0.5) * self.get_current_lane_width()
            check_point = ref_lane.position(ref_lane.length, later_middle)
            self._dest_node_path.setPos(panda_vector(check_point[0], check_point[1], self.MARK_HEIGHT))

        # Compute the total length of the route for computing route completion
        self.total_length = 0.0
        self.travelled_length = 0.0
        self._last_long_in_ref_lane = 0.0
        for ckpt1, ckpt2 in zip(self.checkpoints[:-1], self.checkpoints[1:]):
            self.total_length += self.map.road_network.graph[ckpt1][ckpt2][0].length

        Find the shortest path from start road to the end road.

        Args:
            current_lane_index: start road node
            destination: end road node or end lane index

        Returns:
            None
        
metadrive/component/navigation_module/node_network_navigation.py