Pullover location changes for autonomous vehicles

The autonomous vehicle's computing device allows passengers to select a new stop location in real-time, addressing inconvenient stops by evaluating safe alternatives and controlling the vehicle to the new location, enhancing convenience and safety.

JP2025172698APending Publication Date: 2025-11-26WAYMO LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025076919
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-05-13
Filing Date
2025-05-02
Publication Date
2025-11-26

AI Technical Summary

Technical Problem

Autonomous vehicles often stop at inconvenient locations for passengers to board or disembark due to obstacles like puddles, heavy traffic, or objects blocking the door, requiring passengers to manually change the destination or request human assistance, leading to delays and inconvenience.

Method used

A computing device in the autonomous vehicle determines if it is safe to offer passengers the option to move to a new stop location, evaluates candidate stop locations, and allows passengers to select a new stop via their device or the vehicle's display, controlling the vehicle to the new location.

Benefits of technology

Enables passengers to change the stop location in real-time, improving convenience and safety by avoiding obstacles, reducing passenger inconvenience, and minimizing delays.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025172698000001_ABST
    Figure 2025172698000001_ABST
Patent Text Reader

Abstract

To provide a change of a pullover location for an autonomous vehicle.SOLUTION: For instance, an autonomous vehicle may be controlled in an autonomous driving mode to stop at a pullover location. It may be determined whether a passenger should be provided with an option to cause the autonomous vehicle to move from the pullover location to a new pullover location. While the vehicle is stopped at the pullover location and based on the determination, a signal may be sent to provide the option to the passenger, and while the vehicle is stopped at the pullover location, an indication that the passenger has selected the option may be received. In response to receiving the indication, the vehicle may be controlled in the autonomous driving mode to the new pullover location.SELECTED DRAWING: Figure 20
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] For example, autonomous vehicles, e.g., vehicles that may not require a human driver, may be used to assist in the transportation of passengers or items from one location to another. Such vehicles may operate in a fully autonomous mode, where a passenger may provide some initial input, such as a pickup location or a destination location, and the autonomous vehicle maneuvers itself to that location. Autonomous vehicles are equipped with various types of sensors to detect surrounding objects. For example, autonomous vehicles may include sonar, radar, cameras, lidar, and other devices that scan, generate, and / or record data about the autonomous vehicle's surroundings. This data may be combined with pre-stored map information to enable the autonomous vehicle to plan a trajectory to maneuver itself through its surroundings.

[0002] In some instances, an autonomous vehicle may pull over and stop to pick up or drop off passengers at locations that are inconvenient for the passenger to board or disembark the autonomous vehicle. This can occur even when a user selects a stop location while traveling (e.g., when the vehicle "tells" where to stop). What qualifies such a location as an inconvenient location may include puddles immediately outside the autonomous vehicle, heavy traffic, heavy foot traffic, or any object next to the autonomous vehicle that may make it difficult to open the autonomous vehicle door (e.g., a wall, a plant, a trash can, trash, etc.). Similarly, passengers may need more space to board or disembark in certain situations, such as when the passenger has luggage or bags to unload or when a car seat is removed. Summary of the Invention

[0003] An aspect of the present disclosure provides a method that includes controlling, by one or more processors, an autonomous vehicle in an autonomous driving mode to stop at a stop location, determining, by the one or more processors, whether to offer a passenger an option to trigger the autonomous vehicle to move from the stop location to a new stop location, transmitting, by the one or more processors, a signal to offer the passenger the option while the autonomous vehicle is stopped at the stop location, receiving, by the one or more processors, an indication that the passenger has selected the option while the autonomous vehicle is stopped at the stop location, and controlling, by the one or more processors, in response to receiving the indication, to direct the autonomous vehicle in the autonomous driving mode to a new driving location.

[0004] In one example, determining whether to offer the option to the passenger occurs while the autonomous vehicle is stopped at the stop. In another example, determining whether to offer the option to the passenger includes determining whether the autonomous vehicle is stopped at the stop within an area that includes a particular type of road feature or within a predetermined distance of the area. In this example, the particular type of road feature includes an intersection. Additionally or alternatively, the particular type of road feature includes a bridge. Additionally or alternatively, the particular type of road feature includes a tunnel. Additionally or alternatively, the particular type of road feature includes a railroad track. In another example, transmitting the signal causes the option to be displayed on a display of the autonomous vehicle when the passenger is inside the autonomous vehicle. In another example, transmitting the signal causes the option to be displayed on a display of the passenger's client computing device when the passenger is not inside the autonomous vehicle.

[0005] Another aspect of the present disclosure provides a system including one or more processors configured to: control an autonomous vehicle in an autonomous driving mode to stop at a stop location; determine whether to offer a passenger an option to navigate the autonomous vehicle from the stop location to a new stop location; transmit a signal while the autonomous vehicle is stopped at the arrival location based on the determination to offer the option to the passenger; receive an indication that the passenger has selected the option while the autonomous vehicle is stopped at the stop location; and, in response to receiving the indication, control the autonomous vehicle in the autonomous driving mode to a new driving location.

[0006] In one example, the one or more processors are further configured to determine whether an option should be provided to the passenger while the autonomous vehicle is stopped at a stop. In another example, the one or more processors are further configured to determine whether an option should be provided to the passenger by determining whether the autonomous vehicle is stopped at the stop within or within a predetermined distance of an area that includes a certain type of road feature. In this example, the certain type of road feature includes an intersection. Additionally or alternatively, the certain type of road feature includes a bridge. Additionally or alternatively, the certain type of road feature includes a tunnel. Additionally or alternatively, the certain type of road feature includes a railroad track. In another example, the one or more processors are further configured to transmit the signal, thereby causing the option to be displayed on a display of the autonomous vehicle when the passenger is inside the autonomous vehicle. In another example, the one or more processors are further configured to transmit the signal, thereby causing the option to be displayed on a display of the passenger's client computing device when the passenger is not inside the autonomous vehicle. In another embodiment, the system also includes an autonomous vehicle. [Brief explanation of the drawings]

[0007] [Figure 1] FIG. 1 is a functional diagram of an exemplary vehicle, in accordance with an exemplary embodiment. [Figure 2] 2A-2B are examples of map information according to an embodiment of the present disclosure. [Figure 3] 3A-3B are exemplary exterior views of a vehicle according to an embodiment of the present disclosure. [Figure 4] FIG. 4 is a pictorial diagram of an exemplary system according to an embodiment of the present disclosure. [Figure 5] FIG. 5 is a functional diagram of the system of FIG. 4 according to an embodiment of the present disclosure. [Figure 6] FIG. 6 is an example of markers representing geographic regions and destination locations according to an embodiment of the present disclosure. [Figure 7] FIG. 7 is an example of a geographic region, a marker representing a destination location, and a route, according to an embodiment of the present disclosure. [Figure 8] FIG. 8 is an example of a geographic region, a marker representing a destination location, and a baseline, according to an embodiment of the present disclosure. [Figure 9] FIG. 9 is an example of a geographic region, a marker representing a destination location, a baseline, and a segmented region according to an embodiment of the present disclosure. [Figure 10] FIG. 10 is an example of a geographic region, a marker representing a destination location, a baseline, and various regions according to an embodiment of the present disclosure. [Figure 11] FIG. 11 is an example of a geographic region, a marker representing a destination location, a baseline, various regions, and a set of potential stop locations according to an embodiment of the present disclosure. [Figure 12] FIG. 12 is an example of a geographic region, a marker representing a destination location, a baseline, various regions, and a set of potential stop locations according to an embodiment of the present disclosure. [Figure 13] FIG. 13 is an example of a geographic region, markers representing destination locations, a route, and stop locations according to an embodiment of the present disclosure. [Figure 14] FIG. 14 is an example of a geographic region according to an embodiment of the present disclosure. [Figure 15] FIG. 15 is an exemplary image display and client computing device according to an aspect of the disclosure. [Figure 16] FIG. 16 is an exemplary image display and client computing device according to an aspect of the disclosure. [Figure 17] FIG. 17 is an example of a geographic region, a marker representing a destination location, and potential stop locations according to an embodiment of the present disclosure. [Figure 18] FIG. 18 is an example of a geographic region, markers representing destination locations, a route, and stop locations according to an embodiment of the present disclosure. [Figure 19] FIG. 19 is an example of a geographic region, a marker representing a destination location, and a stop location, according to an embodiment of the present disclosure. [Figure 20] FIG. 20 is an exemplary flow diagram according to an aspect of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0008] overview The present technology relates to enabling passengers of an autonomous vehicle to change the autonomous vehicle's stopping location. In some instances, an autonomous vehicle may pull over to stop to pick up or drop off passengers at a location that is inconvenient for the passenger to board or disembark the autonomous vehicle. This can occur even if the user selects a stopping location while traveling (e.g., the vehicle "tells" where to stop). What qualifies as an inconvenient location may include puddles immediately outside the autonomous vehicle, heavy traffic, heavy foot traffic, or an object next to the autonomous vehicle that may make it difficult to open the autonomous vehicle's door (e.g., a wall, plants, trash can, garbage, etc.). Similarly, passengers may need more space to disembark in certain situations, such as when they have luggage or bags to unload or when they remove a car seat. To address this, a configuration may be provided where passengers have the option to move the autonomous vehicle to a new location, allowing the passenger to board or disembark the autonomous vehicle.

[0009] Some systems may be configured to allow an autonomous vehicle to move if its current parked position is blocking another road user. For example, if a computing device on the autonomous vehicle determines that the autonomous vehicle is blocking another road user, this may be used to send a movement request to a remote computing device. Of course, the other road user may need to be close to the autonomous vehicle to avoid a false positive situation.

[0010] For example, an autonomous vehicle may be determined to be obstructing another road user if the autonomous vehicle's parked position prevents the other road user from passing or driving around the autonomous vehicle, or creates a "no-pass situation" for more than some predetermined period of time. In such a situation, the autonomous vehicle may be configured to distinguish between particular types of vehicles. For example, the predetermined period of time may be different for different types of vehicles. Again, once it is determined that the autonomous vehicle is obstructing another road user, the computing device may be configured to transmit a movement request.

[0011] In some instances, the remote computing device may be manned by a human operator who can verify the situation, for example, by reviewing camera images or other sensor data captured by the autonomous vehicle and determining that the autonomous vehicle should move from its current parked position. The remote computing device may then be configured to send a movement instruction signal to the autonomous vehicle, causing the autonomous vehicle to move from its current parked position. In other examples, the remote computing device may be configured to "auto-respond" to certain requests, responding with a movement instruction signal without waiting for a human operator to verify the situation.

[0012] In response to receiving the move instruction signal, the autonomous vehicle's computing device may be configured to search for a new stop location along the autonomous vehicle's current route that is at least some predetermined distance from the current stop location. This may involve performing a search of map information that bypasses the current stop location. However, performing this new search may result in a missed stop flag (described below) or in finding a new stop location that is far away from the destination. Furthermore, this approach does not consider the needs of passengers, only the needs of other road users.

[0013] In some instances, when faced with an inconvenient stop, a passenger may attempt to change the location of the stop, for example, by moving a destination marker (e.g., representing the passenger's pickup location, intermediate drop-off location, or final drop-off location) relative to a map or by requesting assistance from a human operator. Typically, moving the location of the destination marker may require a significant change (e.g., a change of one or two city blocks) before the trip is complete (e.g., while the autonomous vehicle is still moving) to actually move to the new stop location. Similarly, requesting assistance from a human operator may require establishing communication with a remote computing device between the passenger and the human operator, and for the human operator to set a new destination for the autonomous vehicle, which may cause unnecessary delays and inconvenience to the passenger.

[0014] To address these issues, as described above, a passenger may be provided with the option to move the autonomous vehicle to a new stop location to allow the passenger to board or disembark the autonomous vehicle. Before providing the option to the passenger, a computing device of the autonomous vehicle may first be configured to determine whether to offer the option to the passenger.

[0015] In this regard, the computing device of the autonomous vehicle may be configured to determine whether the autonomous vehicle is stopped in an area where it is safe to start again and stop. For example, offering an option may not be appropriate if the autonomous vehicle is located on or approaching a road feature. If not, the computing device may determine that the autonomous vehicle can stop at another location and, accordingly, may offer that option to the passenger.

[0016] Additionally or alternatively, the autonomous vehicle's computing device may determine whether the autonomous vehicle can stop at another location, which may include reviewing previously identified candidate stop locations. For example, the autonomous vehicle's routing system may search along a route to a destination and identify a set of candidate stop locations. This set of candidate stop locations may then be provided to the autonomous vehicle's planning system for evaluation and selection of a stop location. A stop location may then be selected from the set of candidate stop locations based on a number of different factors, which may be converted to costs and evaluated to identify the candidate stop location with the lowest cost.

[0017] Upon stopping at the selected stop location, the computing device may be configured to determine whether any of the other potential stop locations in the set of potential stop locations are feasible locations for stopping the autonomous vehicle. If so, the computing device may determine that the autonomous vehicle can stop at other locations and, therefore, may be configured to offer that option to the passenger. Otherwise, the computing device may determine that the autonomous vehicle cannot stop at other locations and, therefore, may not offer that option to the passenger.

[0018] Alternatively, rather than checking previously identified candidate locations, the autonomous vehicle's routing system may be used to determine a new route to the autonomous vehicle's original destination and search for stops along that route, and these candidate stops may then be provided to the autonomous vehicle's planning system for evaluation to determine whether to offer the option to the passenger.

[0019] The options may be provided to the passenger in various ways. For example, the options may be displayed on a display of the client computing device and / or the autonomous vehicle. For example, the options may be provided and displayed on the passenger's client computing device when the autonomous vehicle stops at a pickup location. The options may be provided and displayed on the passenger's client computing device and / or the autonomous vehicle's display when the autonomous vehicle stops at a drop-off location.

[0020] The passenger may then provide user input, either within the autonomous vehicle and / or on the passenger's client computing device, selecting an option, thereby transmitting a signal to the autonomous vehicle's computing device. The computing device may then use this signal to identify a change from its current stop location to a new stop location and move from its current stop location to the new stop location. As described above, this new stop location may be selected from a previous set of candidate stop locations, for example, using a cost analysis. In some instances, the new stop location need not be located a predetermined distance from the current stop location, and the computing device may search within the predetermined distance to find the new stop location. Alternatively, the new stop location may be a fixed distance away from the current stop location or at least some predetermined distance from the current stop location. In other cases, the passenger may be provided with one or more options for selecting how far to select the new stop location.

[0021] The new stop location may be set as the autonomous vehicle's destination, and the computing device may be configured to control the autonomous vehicle to stop at the new stop location. Once arrived, passengers may board and disembark. In some instances, if the autonomous vehicle is unable to generate a trajectory that actually allows the autonomous vehicle to reach the new stop location, the computing device may be configured to perform a responsive move along by searching for a new stop location along the autonomous vehicle's current path that is at least a predetermined distance from the current stop location, as described above. While this may result in the autonomous vehicle overshooting its original destination (which may be considered a missed stop) and passengers having to walk a longer distance, the result may still be a safer stop location and an improved experience for passengers.

[0022] Features described in this disclosure may enable passengers of an autonomous vehicle to change the stop location of the autonomous vehicle. In some instances, features described in this disclosure may enable passengers to respond in real time to temporary inconveniences or obstacles, such as puddles, pedestrian traffic, etc., rather than requiring the passenger to select a stop location before the autonomous vehicle stops. This may improve the convenience of stop locations for passengers and improve overall ridership.

[0023] Exemplary System As shown in FIG. 1 , an autonomous vehicle 100 according to one embodiment of the present disclosure includes various components. Vehicles such as those described herein may be configured to operate in one or more different driving modes. For example, in a manual driving mode, a driver may directly control acceleration, deceleration, and steering via inputs such as an accelerator pedal, brake pedal, steering wheel, etc. The vehicle may also operate in one or more autonomous driving modes, including, for example, a semi-autonomous or partially autonomous driving mode in which a human exercises some amount of direct or remote control over driving operations, or a fully autonomous driving mode in which the autonomous vehicle handles driving operations without direct or remote control by a human. These vehicles may be known by different names, including, for example, autonomous vehicles, automated vehicles, etc.

[0024] The National Highway Traffic Safety Administration (NHTSA) and the Society of Automotive Engineers (SAE) have each identified different levels to indicate the amount or lack of control a vehicle has over driving, but different organizations may classify the levels differently. Furthermore, these classifications may change (e.g., be updated) over time.

[0025] As described herein, in a semi-autonomous or partially autonomous driving mode, the vehicle assists with one or more driving operations (e.g., steering, braking, and / or accelerating to perform lane centering, adaptive cruise control, emergency braking), but the human driver is expected to maintain situational awareness of the vehicle's surroundings and supervise the assisted driving operations. Here, the autonomous vehicle may perform all driving tasks in certain situations, but the human driver is expected to remain responsible for assuming control as needed.

[0026] In contrast, in a fully autonomous driving mode, the autonomous vehicle's control system performs all driving tasks and monitors the driving environment. This may be limited to specific situations, such as driving in a specific service area or under specific time or environmental restrictions, or may encompass driving under all conditions without restrictions. In a fully autonomous driving mode, a human is not expected to assume control of any driving operations.

[0027] Unless otherwise indicated, the architectures, components, systems, and methods described herein may function in a semi-autonomous driving mode, a partially autonomous driving mode, or a fully autonomous driving mode.

[0028] While certain aspects of the present disclosure are particularly useful in connection with certain types of vehicles, an autonomous vehicle may be any type of vehicle, including, but not limited to, an automobile, a truck (e.g., a garbage truck, a tractor-trailer, a pickup truck, etc.), a motorcycle, a bus, a recreational vehicle, a road cleaning or sweeping vehicle, etc. An autonomous vehicle may have one or more computing devices, such as computing device 110, which includes one or more processors 120, memory 130, and other components typically found in a general-purpose computing device.

[0029] Memory 130 stores information accessible by one or more processors 120, including data 132 and instructions 134 that can be executed or otherwise used by processor 120. Memory 130 can be of any type capable of storing information accessible by a processor, including a computing device or computer-readable medium or other medium that stores data that can be read using an electronic device, such as a hard drive, memory card, ROM, RAM, DVD or other optical disk, and other writable and read-only memory. Systems and methods may include different combinations of the foregoing, whereby different portions of the instructions and data are stored on different types of media.

[0030] The instructions 134 may be any set of instructions that are executed by a processor, either directly (e.g., machine code) or indirectly (e.g., script). For example, the instructions may be stored as computing device code on a computing device-readable medium. In this regard, the terms "instructions" and "program" may be used interchangeably in this disclosure. The instructions may be stored in object code format for direct processing by a processor, or in any other computing device language, including a script or collection of separate source code modules that are interpreted on demand or pre-compiled. The functions, methods, and routines of the instructions are described in more detail below.

[0031] Data 132 may be retrieved, stored, or modified by processor 120 according to instructions 134. For example, although claimed subject matter is not limited by any particular data structure, data may be stored in a computing device register, in a relational database, as a table with multiple different fields, and as a record, an XML document, or a flat file. Data may also be formatted in any computing device readable format.

[0032] The one or more processors 120 may be any conventional processor, such as a commercially available CPU or GPU. Alternatively, the one or more processors may include dedicated devices, such as an ASIC or other hardware-based processor. While FIG. 1 functionally depicts the processor, memory, and other elements of computing device 110 as being within the same block, those skilled in the art will understand that a processor, computing device, or memory may actually include multiple processors, computing devices, or memories, which may or may not be stored within the same physical housing. For example, memory may be a hard drive or other storage medium located in a different housing than that of computing device 110. Thus, reference to a processor or computing device will be understood to include reference to a collection of processors, computing devices, or memories, which may or may not operate in parallel.

[0033] Computing device 110 may include all of the components typically used in connection with a computing device, such as the processor and memory described above, as well as user input 150 (e.g., one or more of buttons, a mouse, a keyboard, a touchscreen, and / or a microphone), various electronic displays (e.g., a monitor having a screen or any other electrical device operable to display information), and, if desired, speakers 154 for providing information to passengers in autonomous vehicle 100 or other passengers. For example, electronic display 152 may be located within the cabin of autonomous vehicle 100 and may be used by computing device 110 to provide information to passengers in autonomous vehicle 100.

[0034] Computing device 110 may also include one or more wireless network connections 156 to facilitate communication with other computing devices, such as client computing devices and server computing devices, described in more detail below. Wireless network connections may include a variety of configurations and protocols, including short-range communication protocols such as Bluetooth, Bluetooth low energy (LE), cellular connections, as well as the Internet, the World Wide Web, an intranet, a virtual private network, a wide area network, a local network, a private network using one or more company-specific communication protocols, Ethernet, WiFi, and HTTP, and various combinations of the foregoing.

[0035] Computing device 110 may be part of an autonomous control system of autonomous vehicle 100 and may be capable of communicating with various components of the autonomous vehicle to control the autonomous vehicle in an autonomous driving mode. For example, returning to FIG. 1 , computing device 110 may communicate with various systems of autonomous vehicle 100, such as deceleration system 160, acceleration system 162, steering system 164, signaling system 166, planning system 168, routing system 170, positioning system 172, perception system 174, behavior modeling system 176, and power system 178, to control the movement, speed, etc. of autonomous vehicle 100 in accordance with instructions 134 in memory 130 in an autonomous driving mode.

[0036] As an example, computing device 110 may interact with deceleration system 160 and acceleration system 162 to control the speed of the autonomous vehicle. Similarly, steering system 164 may be used by computing device 110 to control the direction of autonomous vehicle 100. For example, if autonomous vehicle 100 is configured for use on a road, such as a car or truck, steering system 164 may include components that control the angle of the wheels to turn the autonomous vehicle. Computing device 110 may also use signaling system 166 to signal the autonomous vehicle's intentions to other drivers or vehicles, for example, by activating turn signals or brake lights as needed.

[0037] Routing system 170 may be used by computing device 110 to generate a route to a destination using map information. Planning system 168 may be used by computing device 110 to generate a short-term trajectory that enables an autonomous vehicle to follow the route generated by the routing system. In this regard, planning system 168 and / or routing system 166 may be configured with detailed map information, such as pre-stored highly detailed maps that identify road networks, including roads, lanes, intersections, crosswalks, speed limits, traffic signals, buildings, signs, real-time traffic information (received and updated from a remote computing device), stop spots, vegetation, or other such object shapes and heights and information.

[0038] 2A and 2B are example map information 200 for a small section of a road. Figure 2A shows a portion of map information 200 that includes information identifying the shape, location, and other characteristics of lane markers or lanes 210, 212, and 214 that define lanes 220 and 222. The map information also identifies the shape, location, and other characteristics of shoulder areas 232 and shoulders 230 adjacent to the shoulder areas. In addition to the aforementioned features, the map information may also include information identifying the direction of traffic in each lane, as well as information that enables computing device 110 to determine whether the vehicle is in the correct direction to complete a particular maneuver (i.e., turn or curve in a lane or intersection).

[0039] In addition to the aforementioned physical feature information, the map information may include multiple graph nodes and edges representing road or lane segments that together constitute the road network of the map information. Each edge is defined by a starting graph node having a specific geographic location (e.g., latitude, longitude, altitude, etc.), an ending graph node having a specific geographic location (e.g., latitude, longitude, altitude, etc.), and a direction. The direction may indicate the direction that autonomous vehicle 100 must travel to follow the edge (i.e., the direction of traffic flow). Graph nodes may be located at fixed or variable distances. For example, the spacing between graph nodes may range from a few centimeters to several meters and may correspond to the speed limit of the road on which the graph nodes are located. In this regard, a greater speed may correspond to a greater distance between graph nodes. Edges may represent driving along the same lane or changing lanes. Each node and edge may have a unique identifier, such as the latitude and longitude locations of the node, or the start and end locations of the edge, or node. In addition to nodes and edges, a map may identify additional information, such as the type of maneuver required at different edges and which edges, lanes, or other mapped areas are drivable in. For example, Figure 2B illustrates multiple nodes s, t, u, v, w, x, y, and z and edges 260, 262, 264, 266, 268, 270, and 272 extending between pairs of such nodes. For example, edge 260 extends between node s (the start node of edge 260) and node t (the end node of edge 260), edge 262 extends between node t (the start node of edge 262) and node u (the end node of edge 262), and so on.

[0040] The map information may also include, for example, flags or labels for areas of interest. Areas of interest may represent areas where a vehicle (any vehicle) may park or stop for an extended period of time, or may not park at all. In this regard, there may be various types of areas of interest, such as public or private parking lots, private (e.g., designated) parking lots, handicapped parking spaces, motorcycle parking lots, taxi lanes or zones, commercial loading and unloading zones, roadway cleaning areas, funeral zones, specific types of road surfaces (dirt, gravel, beach), areas within or adjacent to residential roadways, areas adjacent to mailboxes, areas within or adjacent to commercial roadways, alternative fuel stations, yellow shoulders, red shoulders, areas adjacent to wheelchair access ramps, no stopping or parking zones, bus lanes or bus stops, crosswalks, fire lanes, areas adjacent to fire hydrants, railroad tracks, etc. For example, returning to FIG. 2B, map information 200 also includes information identifying the shape, location, start location, end location, and features of areas of interest such as crosswalks 250 and street cleaning areas 234 .

[0041] The routing system 166 may use the map information described above to determine a route from a current location (e.g., the location of a current node) to a destination. Routes may be generated using a cost-based analysis that attempts to select a route to a destination with the lowest cost. Cost may be evaluated in any number of ways, such as time to the destination, distance traveled (each edge may be associated with a cost to traverse that edge), type of maneuver required, convenience to passengers or the autonomous vehicle, etc. Each route may include a list of multiple nodes and edges that the autonomous vehicle can use to reach the destination. Routes may be recalculated periodically as the autonomous vehicle travels to the destination.

[0042] The map information used for routing may be the same map as that used for planning the trajectory, or a different map. For example, the map information used for planning a route not only requires information about individual lanes, but also the nature of the lane boundaries (e.g., white lines, dashed white lines, yellow lines, etc.) to determine where lane changes are allowed. However, unlike the map used for planning a trajectory, the map information used for routing does not need to include other details such as crosswalks, traffic signals, stop lights, etc., although some of this information may be useful for routing purposes. For example, between a route with many intersections and traffic controls (such as stop signs or traffic lights) and a route with no or very little traffic controls, the latter route may have a lower cost (e.g., because it is faster) and therefore may be preferred.

[0043] Positioning system 170 may be used by computing device 110 to determine the relative or absolute position of the autonomous vehicle on a map or on Earth. For example, positioning system 170 may include a GPS receiver for determining the latitude, longitude, and / or altitude position of the device. Other positioning systems, such as a laser-based positioning system, an inertial-aided GPS, or a camera-based positioning, may be used to identify the location of the autonomous vehicle. The location of the autonomous vehicle may include relative location information, such as absolute geographic location, such as latitude, longitude, and altitude, the location of a node or edge on a road map, and its location relative to other vehicles in its immediate vicinity, which can often be determined with less noise than absolute geographic location.

[0044] Positioning system 172 may also include other devices in communication with computing device 110, such as an accelerometer, gyroscope, or another direction / speed sensing device, to determine the autonomous vehicle's direction and velocity, or changes thereto. By way of example only, an acceleration device may determine its pitch, yaw, or roll (or changes thereto) relative to the direction of gravity or a plane perpendicular thereto. The device may also track increases or decreases in velocity and the direction of such changes. The device's provision of position and orientation data, as described herein, may be automatically provided to computing device 110, other computing devices, and combinations of the foregoing.

[0045] Perception system 174 also includes one or more components for detecting objects external to the autonomous vehicle, such as obstacles in the roadway (e.g., other road users (vehicles, pedestrians, bicyclists), traffic signals, signs, trees, buildings, etc. For example, perception system 174 may include lidar, sonar, radar, cameras, microphones, and / or any other detection device that generates and / or records data that can be processed by the computing device of computing device 110. If the autonomous vehicle is a passenger vehicle, such as a minivan or car, the autonomous vehicle may include lidar, cameras, and / or other sensors mounted on or near the roof, fenders, bumper, or other convenient location.

[0046] For example, FIGS. 3A-3B are exemplary exterior views of autonomous vehicle 100. In this example, rooftop housing 310 and upper housing 312 may contain a LIDAR sensor and various cameras and radar units. Upper housing 312 may include any number of different shapes, such as a dome, a cylinder, a "cake top" shape, etc. Additionally, housings 320, 322 (shown in FIG. 3B ) located at the front and rear ends of autonomous vehicle 100, and housings 330, 332 on the driver and passenger sides of the autonomous vehicle, may each house a LIDAR sensor and, in some cases, one or more cameras. For example, housing 330 is located in front of driver door 360. Autonomous vehicle 100 also includes housing 340 for a radar unit and / or camera located on the driver side of autonomous vehicle 100, near the rear fender and rear bumper of autonomous vehicle 100. Another corresponding housing (not shown) may be located in a corresponding position on the passenger side of autonomous vehicle 100. Additional radar units and cameras (not shown) may be provided at the front and rear ends of autonomous vehicle 100 and / or on the roof or at other locations along rooftop housing 310.

[0047] Computing device 110 can communicate with various components of autonomous vehicle 100 to control the movement of autonomous vehicle 100 in accordance with primary vehicle control code in the memory of computing device 110. For example, returning to FIG. 1 , computing device 110 may include various computing devices in communication with various systems of autonomous vehicle 100, such as deceleration system 160, acceleration system 162, steering system 164, signaling system 166, forward planning system 168, routing system 170, positioning system 172, perception system 174, behavior modeling system 176, and power system 178 (i.e., the engine or motor of the autonomous vehicle), to control the movement, speed, etc. of autonomous vehicle 100 in accordance with instructions 134 in memory 130.

[0048] Various systems of an autonomous vehicle may function using autonomous vehicle control software to determine how to control the autonomous vehicle. As an example, the perception system software module of perception system 174 may use sensor data generated by one or more sensors of the autonomous vehicle, such as a camera, lidar sensor, radar unit, sonar unit, etc., to detect and identify objects and their characteristics. These characteristics may include location, type, heading, orientation, speed, acceleration, change in acceleration, size, shape, etc.

[0049] In some instances, the characteristics may be input to a behavior prediction system software module of behavior modeling system 176, which uses various behavior models based on object type to output one or more behavior predictions, or predicted trajectories, for the detected object to follow in the future (e.g., future behavior predictions, or predicted future trajectories). In this regard, different models may be used for different types of objects, such as pedestrians, bicyclists, vehicles, etc. The behavior predictions, or predicted trajectories, may be a list of position and orientation, or heading (e.g., pose), as well as other predicted characteristics, such as speed, acceleration or deceleration, rate of change of acceleration or deceleration, etc.

[0050] In other cases, features from perception system 174 may be fed into one or more detection system software modules, such as a traffic signal detection system software module configured to detect known traffic signal or sign conditions, a construction zone detection system software module configured to detect construction zones from sensor data generated by one or more sensors of the autonomous vehicle, and an emergency vehicle detection system software module configured to detect emergency vehicles from sensor data generated by sensors of the autonomous vehicle. Each of these detection system software modules may be configured to use various models to output the likelihood of an object being a construction zone or an emergency vehicle.

[0051] The detected objects, predicted trajectories, various possibilities from the detection system software module, map information identifying the autonomous vehicle's environment, location information from positioning system 170 identifying the location and orientation of the autonomous vehicle, the autonomous vehicle's destination location or node, and feedback from various other systems of the autonomous vehicle may be input to a planning system software module of planning system 168. Planning system 168 may use this input to generate planning trajectories for the autonomous vehicle to follow short-term into the future based on the paths generated by the routing module of routing system 170. Each planning trajectory may provide a planned path and other instructions for the autonomous vehicle to follow for a short period of time in the future, such as 10 seconds or less. In this regard, a trajectory may define certain characteristics, such as acceleration, deceleration, speed, direction, etc., to enable the autonomous vehicle to follow a path to reach the destination. A control system software module of computing device 110 may be configured to control the movement of the autonomous vehicle by, for example, controlling the braking, acceleration, and steering of the autonomous vehicle to follow the trajectory.

[0052] Computing device 110 may be configured to control various components to control an autonomous vehicle in one or more autonomous driving modes. For example, computing device 110 may be configured to use detailed map information and data from planning system 168 to navigate the autonomous vehicle to a destination location fully autonomously. Computing device 110 may be configured to use positioning system 170 to determine the location of the autonomous vehicle and perception system 174 to detect and respond to objects as necessary to safely reach the location. Again, to that end, computing device 110 and / or planning system 168 may generate trajectories and cause the autonomous vehicle to follow those trajectories, for example, by accelerating the autonomous vehicle (e.g., by providing fuel or other energy to engine or power system 178 via acceleration system 162), decelerating the autonomous vehicle (e.g., by reducing fuel provided to engine or power system 178, by changing gears, and / or by applying brakes via deceleration system 160), changing direction (e.g., by turning the front or rear wheels of autonomous vehicle 100 via steering system 164), and signaling such changes using signaling system 166 (e.g., by turning on turn signals). Acceleration system 162 and deceleration system 160 may therefore be part of a drivetrain that includes various components between the autonomous vehicle's engine and the autonomous vehicle's wheels. Again, by controlling these systems, the computing device 110 may also control the drivetrain of the autonomous vehicle in order to operate the autonomous vehicle autonomously.

[0053] Computing device 110 of autonomous vehicle 100 may also receive or transfer information to or from other computing devices, such as computing devices that are part of a transportation service and other computing devices. Figures 4 and 5 are pictorial and functional diagrams, respectively, of an exemplary system 400 that includes multiple computing devices 410, 420, 430, 440 and a storage system 450 connected via a network 460. System 400 also includes autonomous vehicles 100A, 100B, and 100C, which may be configured identically or similarly to autonomous vehicle 100. For simplicity, only a few vehicles and computing devices are illustrated, although a typical system may include significantly more.

[0054] 5, each of computing devices 410, 420, 430, and 440 may include one or more processors, memory, data, and instructions, which may be configured similarly to one or more processors 120, memory 130, data 132, and instructions 134 of computing device 110.

[0055] The network 460 and intervening nodes may be of various configurations and protocols, including short-range communication protocols such as Bluetooth, Bluetooth LE, the Internet, the World Wide Web, an intranet, a virtual private network, a wide area network, a local network, a private network using one or more company-proprietary communication protocols, Ethernet, WiFi, and HTTP, and various combinations of the foregoing. Such communication may be performed by any device capable of transmitting data to and from other computing devices, such as a modem, a wireless interface, etc.

[0056] In one embodiment, one or more computing devices 410 may include one or more server computing devices having multiple computing devices, e.g., a load-balanced server farm, that exchange information with different nodes of a network to receive, process, and transmit data to and from other computing devices. For example, one or more computing devices 410 may include one or more server computing devices that can communicate with computing device 110 of autonomous vehicle 100 or similar computing devices of autonomous vehicles 100A, 100B, and 100C, as well as computing devices 420, 430, and 440, over network 460. For example, autonomous vehicles 100, 100A, 100B, and 100C may be part of a fleet of vehicles that may be dispatched to various locations by a server computing device.

[0057] In this regard, server computing device 410 may function as a fleet management system that may be used to track the status of a fleet of autonomous vehicles and assign passenger trips by assigning and dispatching vehicles, such as autonomous vehicles 100, 100A, 100B, and 100C. These assignments may include scheduling trips to different locations for passenger pickup and drop-off. In this regard, server computing device 410 may operate using scheduling system software to manage the scheduling and dispatch of such autonomous vehicles. Furthermore, computing device 410 may be configured to transmit and present information to users, such as users 422, 432, and 442, on displays, such as displays 424, 434, and 444, of computing devices 420, 430, and 440 using network 460. In this regard, computing devices 420, 430, and 440 may be considered client computing devices.

[0058] As shown in FIG. 3 , each client computing device 420, 430 may be a personal computing device intended for use by a user 422, 432, which has all the components typically used to connect a personal computing device, including one or more processors (e.g., a central processing unit (CPU)), memory (e.g., RAM and an internal hard drive) for storing data and instructions, a display such as displays 424, 434, 444 (e.g., a monitor with a screen, a touch screen, a projector, a television, or other device operable to display information), and user input devices 426, 436, 446 (e.g., a mouse, keyboard, touch screen, or microphone). The client computing device may also include a camera for recording video streams, speakers, a network interface device, and all the components used to connect these elements to each other.

[0059] Client computing devices 420, 430 may each comprise a full-sized personal computing device, or alternatively, may comprise a mobile computing device capable of wirelessly exchanging data with a server over a network such as the Internet. By way of example only, client computing device 420 may be a device such as a mobile phone, a wireless-enabled PDA, a tablet PC, a wearable computing device or system, or a netbook capable of obtaining information over the Internet or other network. In another embodiment, client computing device 430 may be a wearable computing system such as a wristwatch, as shown in FIG. 3. As one example, a user may input information using a small keyboard, keypad, microphone, visual signals with a camera, or a touchscreen. As yet another example, client computing device 440 may be a desktop computing system including a keyboard, mouse, camera, and other input devices.

[0060] In some embodiments, client computing device 420 may be a mobile phone used by a vehicle passenger. In other words, user 422 may be the passenger. Additionally, client computing device 430 may be a smartwatch for a vehicle passenger. In other words, user 432 may be the passenger. Client computing device 440 may be a workstation for a human operator, such as a human operator in a depot area, a remote assist operator, a technician providing roadside assistance, or someone who may otherwise provide assistance to the autonomous vehicle and / or passenger. In other words, user 442 may be an operator (e.g., a driver) of a transportation service utilizing autonomous vehicle 100, 100A, 100B, 100C. While only a few passengers and human operators are shown in FIGS. 4 and 5, a typical system may include any number of such passengers and human operators (and their respective client computing devices).

[0061] Similar to memory 130, storage system 450 may be any type of computerized storage capable of storing information accessible by server computing device 410, such as a hard drive, memory card, ROM, RAM, DVD, CD-ROM, writable, and read-only memory. Furthermore, storage system 450 may include a distributed storage system in which data is stored on multiple different storage devices, which may be physically located in the same or different geographic locations. Storage system 450 may be connected to computing devices via network 460, as shown in FIGS. 3 and 4, and / or directly connected to or incorporated within any of computing devices 110, 410, 420, 430, 440, etc. Storage system 450 may store various types of information that may be retrieved or otherwise accessed by server computing devices, such as one or more server computing devices 410, to implement some of the features described in this disclosure.

[0062] Example of how to In addition to the operations described above and illustrated in the figures, various operations are now described. It should be understood that the following operations do not have to be performed in the exact order described below. Rather, various steps may be processed in a different order or simultaneously, and steps may be added or omitted.

[0063] 20 is an example flow diagram 2000 illustrating an example of enabling stop position variations for an autonomous vehicle that may be performed by one or more processors, such as one or more processors of server computing device 410. In this example, at block 2010, the vehicle is controlled in an autonomous driving mode to stop at a stop position.

[0064] For the autonomous vehicle to do so, a user may first download an application to the client computing device to request the vehicle. For example, users 422 and 432 may download the application to client computing devices 420 and 430 via a link in an email, directly from a website, or from an application store. For example, the client computing device may send a request for the application over network 460 to, for example, one or more server computing devices 410, and receive the application in response. The application may be installed locally on the client computing device.

[0065] A user, such as user 422, may input a trip destination location to a client computing device, such as client computing device 420, via an application. The application may send a signal to one or more server computing devices 410 identifying the destination location. The destination location may be defined as an address, a name (e.g., a business name), a business type (e.g., a hardware store), etc. In some instances, the user may specify one or more intermediate destinations in a similar manner.

[0066] A user may also specify or otherwise provide a pickup location where a vehicle can pick them up. By way of example, the pickup location may default to the current location of the passenger's client computing device, but may also be a recent, recommended, or saved location near the current location associated with the user's account. To identify a pickup location, a user may enter an address or other such information, tap a location on a map, or select a location from a list. For example, a client computing device 420 with an application may be configured to transmit its current location, such as a GPS location and / or the name, address, or other identifier of the pickup location, to one or more server computing devices 410 over the network 460. In this regard, a user may share their current location (or other information generated by the client computing device, such as accelerometer or gyroscope information generated by such device) with the server computing device 410 when using the application and / or when requesting a vehicle for a trip.

[0067] Server computing device 410 may then provide the pickup location and drop-off location to computing device 110, e.g., via network 460. Computing device 110 may then control autonomous vehicle 100 to a destination, e.g., at either the pickup location or the drop-off location, as described above. For example, during a trip, autonomous vehicle 100 may control itself to a pickup location by setting the pickup location as the autonomous vehicle's current destination to pick up a passenger. The autonomous vehicle may then control itself to a drop-off location by setting the drop-off location as the autonomous vehicle's current destination to drop off the passenger. In some instances, the trip may include one or more intermediate destinations, and passengers may drop off and then re-board while the autonomous vehicle waits for them.

[0068] Once the autonomous vehicle is within a predetermined distance from its current destination, computing device 110 may be configured to identify a stop location. For example, planning system 168 or routing system 170 may search along the autonomous vehicle's current route to the destination and identify a set of potential stop locations. By way of example, the set of potential stop locations may be determined within a predetermined distance, such as 35 meters, 40 meters, 50 meters, or less, of the autonomous vehicle's current destination along a roadway or road edge or other reasonable location for stopping or parking the vehicle. In some cases, locations within intersections, at or near railroad crossings (e.g., within a predetermined distance, such as 5 meters, or more than 10 meters, 20 meters, 50 meters, or less), areas overlapping with crosswalks or other pedestrian crossing areas, no-stopping zones, roadways adjacent to emergency response facilities such as fire stations or hospitals, or other areas that may pose a safety impact to passengers or pedestrians, may be automatically discarded or simply ignored.

[0069] Areas adjacent to road edges within a predetermined distance may be evaluated to determine whether the edges are occupied by objects. For example, routing system 170 may determine a current route for the autonomous vehicle. The route may be used to identify edges in map information. These edges, as well as edges connected over a predetermined distance beyond the destination, such as 30 meters, 35 meters, 40 meters, or more, may be used as a "baseline" for identifying potential stop locations. In some instances, the map information may identify individual stop locations (e.g., parking lots) or parking areas (e.g., shoulder areas suitable for legal parking) along the base.

[0070] In some instances, if map information identifies a parking lot, the edge of the map information may be divided along the baseline of the parking lot into discrete sections of a predetermined length, such as every 0.5 meters or less, and a set of candidate stop locations may be identified by determining whether an object (e.g., a vehicle, pedestrian, traffic cone, trash, etc.) is within an area where the autonomous vehicle would be located if parked adjacent to the edge within those sections. In this regard, the divided areas may actually be significantly shorter than autonomous vehicle 100. However, for each divided area, the area analyzed to determine whether the shoulder is occupied may actually be defined by a two-dimensional area or three-dimensional volume in which the autonomous vehicle would be located if some reference point on the autonomous vehicle, such as the front bumper or rear axle, were positioned within that divided area, at the start of that divided area, or at the end of that divided area. By selecting a single point for each divided area, and thus each candidate stop location (discussed further below), the autonomous vehicle may be configured to control itself so that the front bumper or rear axle of the vehicle is at that point when stopped at the stop location. Any divided areas that correspond to areas not occupied by other objects (e.g., trash, debris, other vehicles, etc.) can be "merged" into larger sections. Merging can be repeated to identify sections of the parking lot that are large enough to accommodate an autonomous vehicle, and may also include an additional buffer area or distance to allow the autonomous vehicle to actually drive into it. This "buffer" area or distance can therefore be determined based on the maneuvering capabilities of the autonomous vehicle.

[0071] 6 depicts an example of autonomous vehicle 100 operating in a geographic region corresponding to a geographic region of map information 200. In this regard, the shape, location, and other characteristics of lanes 610, 612, 614, shoulder 630, and crosswalk 650 correspond to the shape, location, and other characteristics of lanes 210, 212, 214, shoulder 230, and crosswalk 250 of map information 200. Additionally, the perception system may be configured to detect and identify the location and characteristics of parked vehicles 660 and 662 currently located within the shoulder region of geographic region 600 between lanes 610 and 630. Referring to FIG. 7 , which provides additional details on the example of FIG. 6 , autonomous vehicle 100 is currently following path 710 that traverses edges 260, 262, 264, and 266 of map information 200 to reach a destination identified by marker 720.

[0072] As described above, computing device 110 may be configured to identify a baseline for identifying a set of potential stopping locations. Referring to FIG. 8 , edges of route 710 and edges 268, 270, 272, and 274 (shown in FIG. 2B ) at a predetermined distance beyond the destination may be identified as baseline 810. In this manner, any of these edges adjacent to parking-available areas in the map information, such as shoulder area 232, road cleaning area 234, and shoulder areas 236 and 238, may be subdivided into multiple segments as described above. For example, as shown in FIG. 8 , the area adjacent to edge 272 is shown, by way of example only, as being subdivided into four segments 1, 2, 3, and 4. In this example, segments 1, 2, and 3 are each occupied by a parked vehicle 662 and are therefore unavailable to autonomous vehicle 100. Of course, each of edges 260, 262, 264, 266, 268, 270, and 274 may also be subdivided into such segments.

[0073] Any unmerged divided area having an area that the autonomous vehicle would occupy if the autonomous vehicle were to park in that unmerged divided area, and any merged divided area having an area that the autonomous vehicle would occupy if the autonomous vehicle were to park in that merged divided area, may be identified as a potential stop location. Each of these potential stop locations may be the same length as the autonomous vehicle, may be defined using a particular point on the vehicle, such as the rear axle or some other location, and need not include additional distance to allow the autonomous vehicle to actually drive into the potential stop location.

[0074] 10 , each segmented region may be analyzed using objects identified by the perception system, such as parked vehicles 660, 662, to identify regions, such as regions 1050, 1052 (whose corresponding lengths are also shown as offsets for clarity) along shoulder 230 that are identified in the map information as available for parking and that are determined to be unoccupied based on sensor data generated by the perception system. Similarly, regions 1054, 1056 (whose corresponding lengths are also shown as offsets for clarity) may be identified as unavailable as potential parking locations for an autonomous vehicle because they are not identified as available for parking in the map information (e.g., region 240) or are occupied by objects, such as parked vehicles, trash cans, or debris. Thus, subportions of these regions 1050, 1052 corresponding to the size of the autonomous vehicle plus some buffer distance may be included in a set of potential stopping locations 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, as shown in FIG. 11.

[0075] In some instances, unoccupied partitioned areas within a predetermined distance of other objects, such as parked vehicles, may be discarded to account for space required for parking maneuvers or differences between vehicle / software version capabilities. This "buffer" area may be selected by a human operator based on historical or other data.

[0076] 12 , autonomous vehicle 100 may need at least a distance corresponding to path 1210, 1214 (or buffer area 1212) to travel around parked vehicle 660. Similarly, autonomous vehicle 100 may need at least a distance corresponding to path 1220 (or buffer area 1222) to travel around parked vehicle 662. In this regard, buffer areas 1212, 1222 may be subtracted or otherwise removed from areas 1050, 1052, such that areas 1250, 1252 (shown shaded for ease of understanding) along shoulder 630 are identified in the map information as areas available for parking and not occupied by another object. In this regard, potential stop locations 1102, 1104, 1124 may be excluded from the set of potential stop locations.

[0077] A set of potential stop locations may be evaluated to identify a “best” of these stop locations. For example, evaluation may include scoring the stop locations or evaluating a “cost” for each potential stop location. The cost of a potential stop location may be evaluated using any number of factors, such as, for example, the type of area in which the potential stop location is located, the complexity of the operations required to reach the potential stop location (e.g., the greater the complexity, the greater the cost), the distance from the potential stop location to the destination location (e.g., the greater the distance, the greater the cost), the walking distance from the potential stop location to the destination location (e.g., the greater the complexity, the greater the cost), the estimated arrival time or distance from the potential stop location to the autonomous vehicle's next destination (e.g., the later the arrival time, the greater the cost), proximity to particular road features such as bridges, intersections, ramps (e.g., onto highways), tunnels, railroad tracks, etc. (e.g., the closer, the greater the cost). Thus, different types of areas may be associated with different costs. For example, the most desirable types of areas may have the lowest cost, such as parking lots or designated parking areas, but are acceptable, while less desirable types of areas, such as urban cleanup areas, may have greater costs. Even less desirable types of areas may have even greater costs. For example, stop locations adjacent to residential roadways, bicycle lanes, or closer crosswalks may have the highest costs because they are most likely to encounter vulnerable road users, such as pedestrians or bicyclists. In this regard, if a stop location falls within such an area with unsafe or illegal parking (such as overlapping or being too close to a crosswalk or railroad tracks), it will not be identified in the map information as being available for parking and need not actually be considered in the set of candidate stop locations.

[0078] These costs may be weighted according to their relative importance to the transportation system and summed to determine an overall cost for the candidate stop locations. The candidate stop location in the set with the lowest cost may be selected as the autonomous vehicle's stop location. The selected stop location may then be set as the autonomous vehicle's destination, and the autonomous vehicle may be configured to control itself to stop and park at the selected stop location using the various systems described above. For example, stop location 1118 may have a lower cost than candidate stop locations 1126 and 1106 because it is closer to the destination represented by marker 720. Similarly, candidate stop location 1118 may have a lower cost than candidate stop locations 1106, 1108, 1110, 1112, 1114, and 1116 because these candidate stop locations correspond to the location of road cleaning area 234. As another example, potential stop location 1118 may have a lower cost than potential stop locations 1120 and 1122 because these potential stop locations are closer to the location of crosswalk 230. In this regard, the total cost of each potential stop location may be calculated by summing costs, including a first cost C1 representing distance A to the destination represented by marker 720, a second cost C2 for any overlap with a road cleaning area, a third cost C3 representing proximity to a crosswalk, etc. As an example, costs C1, C2, C3, and any other costs may be combined via a weighted sum, and the weight of each of the different costs may be selected by the transportation service based on the relative importance of those costs to the transportation service's goals. As an example, the weighting for being near a crosswalk may be greater than the weighting for being within a road cleaning area, etc.

[0079] 13 illustrates an example of a geographic region including a route 1310 to a destination corresponding to a potential stop location 1118. In this regard, the potential stop location 1118 may have the lowest cost of a set of potential stop locations. In this regard, the computing device 110 may set the location of the potential stop location 1118 as the current destination of the autonomous vehicle. The routing system may then be configured to generate the route 1310. The computing device 110 may then be configured to control the autonomous vehicle according to the route 1310 to stop the autonomous vehicle at 1118, as shown in the example of FIG. 14 .

[0080] Some systems may be configured to allow an autonomous vehicle to "move forward" if its current parked position is blocking other road users (e.g., vehicles, bicyclists, pedestrians, etc.). For example, if a computing device in the autonomous vehicle determines that the autonomous vehicle is blocking another road user, this may be used to send a movement request to a remote computing device. Of course, this other road user may need to be in close proximity to the autonomous vehicle to avoid a false positive situation (e.g., within 50 meters or less).

[0081] For example, an autonomous vehicle may be determined to be impinging on other road users when its stopped position prevents other road users from passing or going around the autonomous vehicle or creates a "no pass situation" for more than some predetermined period of time (e.g., 5 seconds, 10 seconds, or less after stopping). As another example, an autonomous vehicle may be determined to be impinging on other road users if its stopped position prevents other road users from exiting onto the roadway for more than some predetermined period of time (e.g., 1 second, 2 seconds, or less after stopping). These predetermined periods of time may be calculated after the autonomous vehicle is considered to be stopped (e.g., stationary) to avoid false positive situations in which other road users may be driving behind the autonomous vehicle.

[0082] In such situations, the autonomous vehicle may be configured to distinguish between particular types of vehicles. For example, the predetermined period of time may be different for different types of vehicles. For example, the computing device of the autonomous vehicle may be configured to wait longer for a non-emergency vehicle than an emergency vehicle before determining that the autonomous vehicle is obstructing the non-emergency vehicle. Additionally or alternatively, the computing device of the autonomous vehicle may only determine that the autonomous vehicle is obstructing a non-emergency vehicle if the non-emergency vehicle is moving, but may be configured to determine that the autonomous vehicle is obstructing an emergency vehicle if the emergency vehicle is stationary or moving. Again, once it is determined that the autonomous vehicle is obstructing another road user, the computing device may be configured to send a movement request.

[0083] In some instances, the remote computing device may be manned by a human operator who can verify the situation, for example, by reviewing camera images or other sensor data captured by the autonomous vehicle and determining that the autonomous vehicle should move from its current parked position. The remote computing device may then be configured to send a movement instruction signal to the autonomous vehicle, causing the autonomous vehicle to move from its current parked position. In other instances, the remote computing device may be configured to automatically respond to certain requests, responding with a movement instruction signal without waiting for a human operator to review and confirm the situation. Such an approach may reduce latency (e.g., from 20 seconds involving a human operator to less than 1 second during an automatic response) while preventing situations in which the autonomous vehicle sends multiple requests.

[0084] In response to receiving the movement instruction signal, the autonomous vehicle's computing device may be configured to search for a new stop location along the autonomous vehicle's current route that is at least some predetermined distance (e.g., at least 5 meters or less) from the current traveling location. This may involve performing a map search that loops around the current stop location (e.g., moving around the block). However, performing this new search may result in a missed stop flag (as discussed further below) or in finding a new stop location (e.g., a passenger pickup, intermediate drop-off, or final drop-off location) far away from the destination. Furthermore, this approach does not consider the needs of passengers, only the needs of other road users.

[0085] In some instances, when faced with an inconvenient stop, a passenger may attempt to change the location of the stop, for example, by moving a destination marker (e.g., representing the passenger's pickup location, intermediate drop-off location, or final drop-off location) relative to a map or by requesting assistance from a human operator. Typically, moving the location of the destination marker may require a significant change (e.g., a city block or two) before the trip is completed (e.g., before the autonomous vehicle can stop or park to pick up or drop off passengers and / or load or unload items), resulting in the autonomous vehicle identifying and then moving to a new stop location. Similarly, requesting assistance from a human operator may require establishing communications with remote computing devices between the passenger and the human operator, and for the human operator to set a new destination for the autonomous vehicle, which may cause unnecessary delays and inconvenience to the passenger.

[0086] As described above, a passenger may be provided with an option to move the autonomous vehicle to a new location, allowing the passenger to board or disembark the autonomous vehicle. Returning to FIG. 20 , in block 2020, it is determined whether the passenger should be provided with an option to move the autonomous vehicle from the stop location to a new stop location. In this regard, before providing the passenger with the option, the autonomous vehicle's computing device may first determine whether the passenger should be provided with the option. This may be done while the vehicle is stopped at the stop location, rather than while the autonomous vehicle is still moving (e.g., still traveling to the current destination). Alternatively, this may be done before the vehicle is stopped at the stop location (e.g., before or after the stop location is identified and set as the vehicle's destination), and while the autonomous vehicle is still traveling or traveling to its current destination, even if it is temporarily stopped (e.g., at a traffic light, stoplight, traffic jam, etc.).

[0087] In this regard, the computing device 110 may be configured to determine whether the autonomous vehicle is stopped in an area where the autonomous vehicle can safely stop and depart again. For example, offering an option may not be appropriate if there are no nearby alternative stopping locations, if the cost of any nearby stopping locations is too high, and / or if the autonomous vehicle is located on or near a road feature such as a bridge, intersection, ramp (e.g., onto a highway), tunnel, railroad tracks, etc. In that case, the computing device may be configured to determine that the autonomous vehicle cannot stop at another location and, therefore, not offer the option to the passenger. Otherwise, the computing device may determine that the autonomous vehicle can stop at another location and, therefore, offer that option to the passenger.

[0088] Additionally or alternatively, the computing device of the autonomous vehicle may be configured to determine whether the autonomous vehicle can stop at another location, or rather, whether other nearby stop locations are actually available. This may include reviewing a previously identified set of candidate stop locations to determine whether any of the candidate locations in the set of candidate stop locations are available and are not behind the autonomous vehicle (e.g., because the autonomous vehicle has not passed the candidate location). For example, returning to the example of FIG. 11 , the set of candidate stop locations includes each of stop locations 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, and 1126. Of these, candidate stop locations 1106, 1108, 1110, 1112, 1114, 1116, and 1118 are either the current location of the autonomous vehicle or are behind the autonomous vehicle. Thus, candidate stop locations 1120, 1122, and 1126 may still be available. In this manner, the computing device may be configured to determine that the autonomous vehicle can stop at other potential stop locations and, therefore, provide options to the passenger. If none of the set of potential stop locations are available or are behind the autonomous vehicle (or its current location), the computing device may be configured to determine that the autonomous vehicle cannot stop elsewhere and, therefore, not provide options to the passenger.

[0089] Alternatively, rather than reviewing a previously identified set of candidate locations, the autonomous vehicle's routing system may be used to determine a new route to the autonomous vehicle's original destination and search for new stops along that route, and these candidate stops may then be provided to the autonomous vehicle's planning system for evaluation to determine whether to offer the option to the passenger.

[0090] 20 , at block 2030, the vehicle is stopped at a stop and, based on the determination, a signal is transmitted to offer options to the passenger. For example, if a computing device of the autonomous vehicle determines that an option should be offered to the passenger, the computing device may be configured to automatically offer the option to the passenger.

[0091] The options may be provided to the passenger in various ways. For example, the options may be displayed on a display of the client computing device and / or the autonomous vehicle. For example, the options may be provided to and displayed on the passenger's client computing device when the autonomous vehicle stops at a pickup location. The options may be provided to and displayed on the passenger's client computing device and / or the autonomous vehicle's display when the autonomous vehicle stops at a drop-off location. In this regard, the computing device may be configured to send a signal to the client computing device directly (e.g., via short-range wireless, Bluetooth, or other communication protocol) or indirectly (e.g., via a server computing device 410 that relays the signal to the client computing device over a network).

[0092] 15 is an exemplary graphical display 1510 on client computing device 420. In this example, graphical display 1510 includes a notification 1520 indicating that the passenger can request that the autonomous vehicle move (e.g., "move a little") to a new location. In this example, graphical display 1510 also includes a map 1530 that includes a representation of autonomous vehicle 100 as well as certain features, including crosswalk 230 / 630. Graphical display 1510 also includes an option 1540 that the user can select to send a signal to the autonomous vehicle directly (e.g., via short-range wireless, Bluetooth, or other communications link between computing device 110 and client computing device 420) or indirectly (e.g., via network 460 to server computing device 410, which relays or transmits a corresponding signal to computing device 110). The signal may then cause the computing device to select a new stop location and control the autonomous vehicle relative to the new stop location.

[0093] In some instances, the option may be provided only if the autonomous vehicle is not traveling or has traveled too far past the original destination (e.g., pickup or drop-off location). For example, if the autonomous vehicle travels excessively beyond the original destination (e.g., more than 10 meters) to find a stop location, the computing device may be configured to flag the stop location as a missed stop location. Similarly, if the autonomous vehicle has not yet passed the original destination, the distance available for the autonomous vehicle to find a new stop location may be greater. In other instances, if the current stop location is beyond the original destination, the computing device may be configured to search for a new stop location within a threshold distance (e.g., 20 meters or more) of the autonomous vehicle's current location rather than the original destination.

[0094] Returning to FIG. 20 , at block 2040, while the vehicle is stopped at the stop, an indication that the passenger has selected an option is received. The passenger may then provide user input (e.g., by tapping a touch-sensitive display, etc.) to select the option, either within the autonomous vehicle and / or on the passenger's client computing device. For example, if the user input is provided to the autonomous vehicle, the input may be received directly by computing device 110. Alternatively, if the user input is provided to the client computing device, the client computing device may transmit a signal to the autonomous vehicle's computing device directly (e.g., via short-range wireless, Bluetooth, or other communications protocol) or indirectly (e.g., via server computing device 410 relaying the signal over a network to computing device 110).

[0095] 20 , in block 2050, in response to receiving the indication, the vehicle is controlled in autonomous driving mode to a new stop location. The computing device may then use this signal to move from its current stop location to a new stop location. As noted above, this new stop location may be selected from a previous set of potential stop locations, for example, by selecting one of the potential stop locations 1120, 1122, 1126 using the cost analysis described above, as shown in FIG. 17 .

[0096] In some instances, the new stop location may be some fixed distance, such as more or less than two meters, from the current stop location, or may be at least some predetermined distance, such as more or less than two meters, from the current stop location (e.g., the computing device conducts a search starting at a predetermined distance from the current stop location). With reference to FIG. 17 , candidate stop location 1120 may be within a fixed distance of the current stop location that is deemed too close to the current position of autonomous vehicle 100 in candidate stop locations 1118 and therefore may be discarded. Furthermore, the cost of candidate stop location 1126 may be greater than the cost of candidate stop location 1120 using the example cost analysis described above. In this regard, candidate stop location 1120 may be selected as the new stop location.

[0097] In some instances, the new stop location need not be located at least some fixed distance (e.g., greater than some minimum distance) from the current stop location. Instead, the computing device may be configured to search within a predetermined distance from the autonomous vehicle's current location to find a new stop location. For example, the computing device 110 may perform a new search within a predetermined distance of the autonomous vehicle's current location using the approaches described above (e.g., using the baseline to determine available segmentation areas, etc.). In this regard, the baseline may be determined using some distance along the route to the autonomous vehicle's next destination (e.g., next pickup location, drop-off location, etc.) or the autonomous vehicle's last destination (immediately prior to the current stop location). In this regard, the routing system may be configured to determine a new route to the next or last destination. If the last destination is used and has already been traveled by the autonomous vehicle, the routing system may be configured to determine a loop (e.g., a loop around the segment) for the autonomous vehicle away from the last destination and then back toward the last destination. The route may then be used to determine the baseline (e.g., distance along the route), identify potential stop locations, and select a new stop location as described above.

[0098] In other examples, a configuration may provide passengers with the option to select how far to move to the new stop location. For example, a passenger may select from a distance (e.g., 2 meters or 5 meters) or a sliding scale of longer and shorter distances. As another example, a passenger may select a more specific option, such as slew through a set of potential stop locations (e.g., top 5 locations), or have the autonomous vehicle move to the next section of available shoulder space, through the next intersection, into the next driveway or parking lot, move around a corner (e.g., turn left or right at the next intersection), or perform a loop (e.g., go around a block). Of course, any of these distances may simply be ignored if they are unavailable to the passenger or if the resulting new stop location is in a particular type of area (e.g., intersection, local train track, no stop zone, on a ramp, etc.).

[0099] 16 is an exemplary graphical display 1610 on client computing device 420. In this example, graphical display 1610 includes a notification 1620 indicating that the passenger can request that the autonomous vehicle move (e.g., "move a little") to a new location. In this example, graphical display 1610 also includes a map 1630 that includes a representation of autonomous vehicle 100 as well as certain features, including crosswalk 240 / 640. Graphical display 1610 also includes a set of options 1640, 1642, 1644 that the user can select to send a signal to the autonomous vehicle directly (e.g., via short-range wireless, Bluetooth, or other communications link between computing device 110 and client computing device 420) or indirectly (e.g., via network 460 to server computing device 410, which relays or transmits a corresponding signal to computing device 110). In this example, the set of options includes the options to move 2 meters (e.g., move at least 2 meters), move 5 meters (e.g., move at least 5 meters), or loop around the segment (e.g., drive in a loop to find a new stop location, if possible, before returning to the current stop location along the original route).

[0100] The new stop location may be set as a destination of the autonomous vehicle, and the computing device may be configured to control the autonomous vehicle to stop at the new stop location. For example, as shown in FIG. 18 , the computing device 110 may be configured to control the autonomous vehicle to stop at a new stop location, here, the location of potential stop location 1122. This may include setting the location of stop location 1122 as a new destination of the autonomous vehicle, generating a new route 1810 using a routing system, generating a trajectory based on the new route using a planning system, etc. As shown in FIG. 19 , once stopped at the new stop location, passengers may be able to board and disembark. In some instances, if the autonomous vehicle is unable to actually create a trajectory that will allow the autonomous vehicle to arrive at the new stop location (e.g., because of an obstructing object in the way or because a special maneuver, such as a backing up or a K-turn, is required), the computing device may be configured to respond with a move instruction by searching for a new stop location along the current route of the autonomous vehicle that is at least some predetermined distance from the current stop location, as described above. While this may result in the autonomous vehicle overshooting its original destination (which may be considered a failed stop) and passengers having to walk a longer distance, this may still result in a safer stopping location and an improved experience for passengers.

[0101] To avoid a failed stop flag for a new stop location, the autonomous vehicle does not need to assign this flag to the new stop location when the passenger selects the option, or when the passenger selects the option and the new stop location is not too far away (e.g., less than 50 meters) from the original destination location.

[0102] In some instances, each time the autonomous vehicle stops, the process may begin again, allowing the passenger to select the option to trigger the autonomous vehicle to move to a new stop again.

[0103] In some instances, whether a passenger selects an option may be used to inform future stop location evaluations. For example, if one or more passengers select an option at the same or nearly the same location, this indicates that such stop location is undesirable and should be avoided (e.g., assigned a higher cost in future evaluations).

[0104] While the above examples relate to transporting passengers, the same or similar features may be used in situations where the autonomous vehicle is transporting goods. For example, a user may select an option on a client computing device to trigger the autonomous vehicle to move to a new stop location, as in the above examples. Features described in this disclosure may enable a passenger of an autonomous vehicle to change the stop location of the autonomous vehicle. In some instances, features described in this disclosure may enable a passenger to respond in real time to temporary inconveniences or obstacles, such as puddles, pedestrian traffic, etc., rather than requiring the passenger to select a stop location before the autonomous vehicle stops. This may improve the convenience of the stop location for passengers and improve overall ridership.

[0105] Unless otherwise stated, the foregoing alternative embodiments are not mutually exclusive but may be implemented in various combinations to achieve their inherent advantages. These and other variations and combinations of the configurations discussed above can be utilized without departing from the subject matter defined by the claims, and therefore the foregoing description of embodiments should be taken as illustrative, rather than limiting, of the subject matter defined by the claims. Additionally, the provision of examples described in this disclosure, as well as terms such as "for example," "including," and the like, should not be construed as limiting the subject matter of the claims to any particular examples; rather, the examples are intended to illustrate only some of many possible embodiments. Furthermore, the same reference numbers on different drawings may identify the same or similar elements.

Claims

1. 1. A method comprising: controlling, by the one or more processors, the autonomous vehicle in an autonomous driving mode to stop at a stop location; determining, by the one or more processors, whether to provide a passenger with an option to trigger the autonomous vehicle to move from the stop location to a new stop location; transmitting, by the one or more processors, a signal to offer the option to the passenger while the autonomous vehicle is stopped at the stop; receiving, by the one or more processors, an indication that the passenger selected the option while the autonomous vehicle is stopped at the stop; and controlling, by the one or more processors, in response to receiving the indication, the autonomous vehicle in the autonomous driving mode to direct itself to a new parking location.

2. 10. The method of claim 1, wherein determining whether to offer the option to the passenger occurs while the autonomous vehicle is stopped at the stop location.

3. 10. The method of claim 1, wherein determining whether to offer options to the passenger comprises determining whether the autonomous vehicle is stopped at the stop location within, or within a predetermined distance of, an area that includes a particular type of road feature.

4. The method of claim 3 , wherein the particular type of road feature comprises an intersection.

5. The method of claim 3 , wherein the particular type of road feature comprises a bridge.

6. The method of claim 3 , wherein the particular type of road feature comprises a tunnel.

7. The method of claim 3 , wherein the particular type of road feature comprises a railroad track.

8. 10. The method of claim 1, wherein transmitting the signal causes the option to be displayed on a display of the autonomous vehicle when the passenger is inside the autonomous vehicle.

9. 10. The method of claim 1, wherein transmitting the signal causes the option to be displayed on a display of the passenger's client computing device when the passenger is not inside the autonomous vehicle.

10. 1. A system including one or more processors, the one or more processors comprising: Controlling the autonomous vehicle in an autonomous driving mode to stop it at a stop position; determining whether to offer a passenger an option to navigate the autonomous vehicle from the stop location to a new stop location; transmitting a signal to offer the option to the passenger based on the determination while the autonomous vehicle is stopped at the stop location; receiving an indication that the passenger selected the option while the autonomous vehicle is stopped at the stop; and in response to receiving the indication, controlling the autonomous vehicle in the autonomous driving mode to a new park position.

11. 11. The system of claim 10, wherein determining whether to offer the option to the passenger occurs while the autonomous vehicle is stopped at the stop location.

12. 11. The system of claim 10, wherein the one or more processors are further configured to determine whether to offer options to the passenger by determining whether the autonomous vehicle is stopped at the stop location within, or within a predetermined distance from, an area that includes a particular type of road feature.

13. The system of claim 12 , wherein the road feature of a particular type comprises an intersection.

14. The system of claim 12 , wherein the road feature of a particular type includes a bridge.

15. The system of claim 12 , wherein the road feature of a particular type comprises a tunnel.

16. The system of claim 12 , wherein the road features of a particular type include railroad tracks.

17. 11. The system of claim 10, wherein the one or more processors are further configured to transmit the signal, thereby causing the option to be displayed on a display of the autonomous vehicle when the passenger is inside the autonomous vehicle.

18. 11. The system of claim 10, wherein the one or more processors are further configured to transmit the signal, thereby causing the option to appear on a display of the passenger's client computing device when the passenger is not within the autonomous vehicle.

19. The system of claim 10 further comprising the autonomous vehicle.