The present disclosure generally relates to generating and implementing coverage plans for navigating and mapping travel way portions within a geographic area.
Map data can include a large amount of information about roads or other travel ways in a particular geographic area. For example, map data can provide information regarding the identity and general location of different travel ways. However, map data does not always include specific information about each travel way, such as information about particular lanes and connectivity within a travel way, directions of traffic flow, identification of traffic control devices, etc. In addition, map data is not always updated to reflect changing availability of different travel ways.
Map data can be used for a variety of different vehicle applications. For example, map data can be used to help determine travel routes for navigating vehicles within a given geographic area. Such travel routes can be especially useful for autonomous vehicles that are capable of sensing their environment and navigating along a travel route without human input. In particular, an autonomous vehicle can observe its surrounding environment using a variety of sensors and can attempt to comprehend the environment by performing various processing techniques on data collected by the sensors. Given knowledge of its surrounding environment, the autonomous vehicle can identify an appropriate motion path relative to a travel route through such surrounding environment.
Aspects and advantages of embodiments of the present disclosure will be set forth in part in the following description, or may be learned from the description, or may be learned through practice of the embodiments.
One example aspect of the present disclosure is directed to a vehicle computing system for implementing a coverage plan. The vehicle computing system includes one or more processors on-board a vehicle and one or more memory devices on-board the vehicle. The one or more memory devices store instructions that when executed by the one or more processors cause the computing system to perform operations. The operations include obtaining a coverage plan descriptive of a travel route for the vehicle to navigate a set of travel way portions within a map of a geographic area. The operations also include controlling the vehicle to navigate along the travel route described by the coverage plan. The operations also include gathering sensor data from one or more sensors provided within the vehicle as it is controlled to navigate the travel route. The operations also include constructing a vehicle navigation map including travel way portions and intersections based at least in part on the sensor data gathered from the one or more sensors.
Another example aspect of the present disclosure is directed to a computer-implemented method of implementing a coverage plan. The method includes transforming, by one or more computing devices, map data identifying travel way portions into a coverage graph of nodes and edges. Each edge represents a travel way portion and each node represents an intersection or connection between adjacent travel way portions. The method also includes determining, by the one or more computing devices, a coverage plan descriptive of a travel route along edges in the coverage graph. The travel route traverses each edge in the coverage graph at least once while reducing total travel cost over all edges and while reducing turn angles such that the travel route prefers an outgoing edge from a given node that reduces the angle difference between an incoming edge and each outgoing edge. The method also includes controlling, by the one or more computing devices, a vehicle to navigate along the travel route described by the coverage plan.
A still further example aspect of the present disclosure is directed to one or more tangible, non-transitory computer-readable media storing computer-readable instructions that when executed by one or more processors cause the one or more processors to perform operations. The operations include obtaining a coverage plan descriptive of a travel route for a vehicle to navigate a set of travel way portions within a map of a geographic area. The travel route described by the coverage plan includes all travel way portions in the set of travel way portions at least once while reducing total travel cost over all travel way portions. The operations also include controlling the vehicle to navigate along the travel route described by the coverage plan. The operations also include gathering sensor data from one or more sensors provided within the vehicle as the vehicle is controlled to navigate the travel route.
Other example aspects of the present disclosure are directed to systems, methods, vehicles, apparatuses, tangible, non-transitory computer-readable media, user interfaces, and memory devices for generating and/or implementing navigational coverage plans.
These and other features, aspects and advantages of various embodiments will become better understood with reference to the following description and appended claims. The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the present disclosure and, together with the description, serve to explain the related principles.
Detailed discussion of embodiments directed to one of ordinary skill in the art are set forth in the specification, which makes reference to the appended figures, in which:
Reference now will be made in detail to embodiments, one or more example(s) of which are illustrated in the drawings. Each example is provided by way of explanation of the embodiments, not limitation of the present disclosure. In fact, it will be apparent to those skilled in the art that various modifications and variations can be made to the embodiments without departing from the scope or spirit of the present disclosure. For instance, features illustrated or described as part of one embodiment can be used with another embodiment to yield a still further embodiment. Thus, it is intended that aspects of the present disclosure cover such modifications and variations.
Example aspects of the present disclosure are directed to systems and methods that generate and implement coverage plans. In particular, the systems and methods of the present disclosure can generate or otherwise obtain a coverage plan descriptive of a travel route for a vehicle to navigate a set of travel way portions within a map of a geographic area. The coverage plan can include a travel route that traverses each travel way portion at least once while reducing total travel cost (e.g., defined by a travel distance, number and/or types of turns, etc.) over all travel way portions. The initial coverage plan can also reduce turn angles and/or eliminate u-turns in order to provide a coverage plan that is safer and easier for implementation by vehicles controlled to navigate along the initial travel route. Sensor data then can be gathered from one or more sensors (e.g., location sensors, position sensors, image sensors, etc.) as a vehicle is controlled to navigate a travel route provided within a coverage plan. This gathered sensor data then can be used to construct a detailed vehicle navigation map of the geographic area, validate the accuracy and/or connectivity of map data and/or determined travel routes, determine viability of travel routes through actual navigation with and/or without traffic, and/or generate one or more repeatable test paths for vehicle operation.
More particularly, a coverage plan can be generated or otherwise obtained by one or more vehicle computing devices and/or by one or more remote computing devices. The one or more computing devices can access map data identifying travel way portions (e.g., roads, road segments, lanes, lane segments, parking lanes, turning lanes, bicycle lanes, and/or other portions of a particular travel way) and/or intersections and/or connections among adjacent travel way portions within a given geographic area intended for vehicle navigation. The one or more computing devices can also obtain a set of coverage bounds descriptive of those travel way portions to be included and optionally excluded in a coverage plan. In some implementations, coverage bounds can include polygons drawn using a graphical interface tool or other geographic identifiers for identifying travel way portions that should be included or optionally excluded. Map data can be evaluated relative to the coverage bounds to determine which travel way portions are required, permitted and/or forbidden for vehicle navigation within the travel route.
The one or more computing devices can transform the map data including required travel way portions (and optionally permitted travel way portions) into a coverage graph of nodes and edges. Each edge in the coverage graph can represent a travel way portion, while each node in the coverage graph can represent an intersection or connection among adjacent travel way portions. In some implementations, the coverage graph of nodes and edges can be configured to be strongly connected such that an edge is provided in both directions between each pair of connected nodes in the coverage graph. In other words, a strongly connected coverage graph can include all nodes that are reachable from a start node and from which the start node is also reachable.
The coverage graph of nodes and edges can be enhanced in one or more ways before being using to determine an initial coverage plan. For example, Eulerian balancing can be employed to generate additional artificial edges between unbalanced nodes that do not have an equal number of incoming edges and outgoing edges. In order to determine which nodes are unbalanced, an edge count can be determined at each node. The edge count can correspond to the number of incoming edges for a given node minus the number of outgoing edges for that node. A node characterized by a positive edge count corresponds to a node having one or more extra incoming edges, while a node characterized by a negative edge count corresponds to a node having one or more extra outgoing edges. For each node having a non-zero edge count (e.g., +1, −1, +2, −2, etc.), additional artificial edges can be generated between that node and another node having a non-zero edge count. In some implementations, additional artificial edges can be generated from a node having a positive edge count to a node having a negative edge count. If a node has N unbalanced edges, then N additional artificial edges can be added into or out of that node.
In some implementations, a matching algorithm can be employed to determine a preferred path for the additional artificial edges generated in the Eulerian balancing process. In some examples, a bipartite matching algorithm can be employed, although other matching algorithms are also possible. A matching algorithm can be especially useful when a coverage graph contains more than one unique unbalanced node having a positive edge count and more than one unique unbalanced node having a negative edge count. An enhanced coverage graph can correspond to a coverage graph that is balanced using the described Eulerian balancing and/or bipartite matching enhancement algorithms.
A computing device can then determine a coverage plan descriptive of a travel route along edges in an optionally enhanced graph. For example, a travel route can be determined that traverses each edge in the coverage graph at least once while reducing total travel cost over all edges. In some implementations, the travel route can be determined by determining an Eulerian path among nodes and edges in the graph. In some implementations, the Eulerian path traverses each edge in the coverage graph only once.
In particular implementations, determining an Eulerian path can include determining a main path as well as one or more sub-paths, if needed, which can be spliced into the main path. Determining a main path can include identifying a start node and traversing consecutive edges within the coverage graph from the identified start node until reaching the identified start node again. Nodes within the main path then can be checked to identify any remaining nodes having unvisited exits (e.g., outgoing edges not yet traversed as part of the main path). Each such identified remaining node can then form a subsequent starting node for a new sub-path from the remaining node along consecutive edges within the coverage graph not yet visited until returning to the remaining node. Upon completion of each sub-path, the sub-path can then be spliced into the main path between the remaining node and its original successor in the main path. The process of creating new sub-paths and splicing those sub-paths into the main path is repeated until all exits for all nodes within the coverage graph have been visited.
In particular implementations, determining an Eulerian path can include selecting outgoing edges within a main path and/or sub-path that reduce turns (e.g., a total number of turns and/or a total value of angle difference associated with turns) within the path. For example, when a path follows an incoming edge and reaches a node having multiple outgoing edges, an outgoing edge can be selected that reduces the angle difference between the incoming edge and each outgoing edge. In some implementations, u-turns can be minimized by reducing selection of an outgoing edge that has an angle difference of 180 degrees from a corresponding incoming edge. In some implementations, outgoing edges that travel straight (e.g., have an angle difference as close to zero degrees as possible) relative to an incoming edge can be preferred over outgoing edges that turn (e.g., have a larger non-zero angle difference) relative to an incoming edge.
In some implementations, reducing turns within a travel route and/or path can include identifying a u-turn between a first node and a second node in a travel route, determining an alternate path between the first node and the second node, and replacing the u-turn between the first node and the second node with the alternate path. In some implementations, a u-turn can be replaced with an alternate path when a cost associated with the alternate path is below a given threshold and/or below a cost associated with the u-turn.
In some implementations, reducing turns within a travel route and/or path can include identifying bounded u-turns located at a boundary point of a coverage plan (e.g., nodes and/or edges located along the periphery of a graph). In some instances, a bounded u-turn may appear to exist between a first node and a second node in the ordinary course of an Eulerian path, but could be avoided if a coverage graph were to include additional artificial edges corresponding to travel way portions outside an initial coverage plan. In such instances, each first node associated with a bounded u-turn can be split into two unbalanced first nodes, and each second node associated with a bounded u-turn can be split into two unbalanced second nodes. A sub-path can then be determined that includes the unbalanced first nodes, the unbalanced second nodes and one or more additional nodes added to the coverage graph from an area outside the initial coverage plan. The determined sub-path can then be spliced into the previously determined Eulerian path to create an improved travel route with reduced u-turns.
In some implementations, action items can be implemented as needed to address potential changes and/or navigational issues. For example, a vehicle could make a wrong turn while following a travel route, or initial map data for a given geographic area could be incorrect or could change over time. In such instances, a vehicle may be unable to proceed along a travel route defined by the coverage plan. In such instances, a deviation of the vehicle from the travel route can be detected. An update descriptive of a reason for the deviation from the travel route can be transmitted from the vehicle to another computing device remote from the vehicle. Revised navigation instructions can be determined that return the vehicle to the last unvisited permitted travel way portion within the travel route. The vehicle can be controlled according to the revised navigation instructions. In certain variations, the vehicle may determine an updated travel route autonomously using on-board computing systems, and can determine the revised navigation instructions independently.
Computing devices can use the disclosed systems and methods for implementing coverage plans for navigation of a vehicle along the travel routes described by the coverage plans. In some implementations, vehicles can be manually navigated in accordance with the disclosed coverage plans. For example, a vehicle provided with a computing system including mapping components can be navigated in accordance with the disclosed coverage plans. In other implementations, autonomous vehicles with a computing system including mapping components and/or autonomy components can be manually driven and/or controlled in accordance with the disclosed coverage plans. A vehicle can be a ground-based vehicle (e.g., car, truck, bus), air-based vehicle (e.g., airplane, drone, helicopter, or other aircraft), or other type of vehicle (e.g., watercraft). In some implementations, the disclosed systems and methods can be implemented by an autonomous vehicle that is associated with an entity (e.g., a service provider) that provides one or more vehicle service(s) to a plurality of users via a fleet of vehicles that includes, for example, the autonomous vehicle. The vehicle service(s) can include transportation services (e.g., rideshare services), courier services, delivery services, and/or other types of services. The vehicle service(s) can transport and/or deliver passengers as well as items such as but not limited to food, animals, freight, purchased goods, etc.
When autonomous vehicles are utilized, such autonomous vehicles can be configured to drive, navigate, operate, etc. with minimal and/or no interaction from a human driver. For example, an autonomous vehicle can be configured to operate in one or more mode(s) such as, for example, a fully autonomous operational mode and/or a semi-autonomous operational mode. A fully autonomous (e.g., self-driving) operational mode can be one in which the autonomous vehicle can provide driving and navigational operation with no interaction from a human driver. A semi-autonomous operational mode can be one in which the autonomous vehicle can operate with some interaction from a human driver present in the vehicle. In some implementations, mapping components within an autonomous vehicle can be used to navigate such a vehicle along one or more travel routes described within the disclosed coverage plans, with or without use of additional autonomy components provided within the vehicle.
A vehicle implementing the disclosed coverage plans can sometimes include one or more sensors (e.g., a positioning system for determining a current geographic location of the vehicle and/or object detection sensors). A positioning system can be any device or circuitry for analyzing the position of the vehicle. For example, the positioning system can determine actual or relative position by using a satellite navigation positioning system (e.g., a GPS system, a Galileo positioning system, the GLObal Navigation satellite system (GLONASS), the BeiDou Satellite Navigation and Positioning system), an inertial navigation system, a dead reckoning system, based on IP address, by using triangulation and/or proximity to cellular towers or WiFi hotspots, and/or other suitable techniques for determining position). Object detection sensors can include, for example, a Light Detection and Ranging (LIDAR) system, a Radio Detection and Ranging (RADAR) system, one or more cameras or other image capture devices, and/or other sensors. The sensors can be used to gather additional data as a vehicle traverses the routes provided within the coverage plans and/or additional vehicle navigation maps that are generated based on the coverage plans.
Gathered vehicle sensor data can be used in a variety of manners. For example, the position of the vehicle and/or other sensor data can be compared with the map data used to generate the coverage plans or with the coverage plan data itself to verify the accuracy of such data. The sensor data can alternatively be added to existing map data to provide more detailed information regarding a geographic area. Such data can be used, for example, to construct a vehicle navigation map based at least in part on the sensor data gathered from the one or more sensors. A vehicle navigation map can include, for instance, a plurality of travel way portions and intersections between adjacent travel way portions as traveled by the vehicle along a travel route. In some implementations, a vehicle can subsequently be controlled to navigate along a travel route within the vehicle navigation map that includes every travel way within the coverage map at least once and every turn at each intersection in the coverage map at least once.
A vehicle implementing the disclosed coverage plans can include a vehicle computing system including one or more computing devices. The vehicle computing system can analyze geographic location data from a vehicle positioning system to track a vehicle as it navigates along a travel route, detect deviations from travel routes and determine revised navigation instructions. When a vehicle is an autonomous vehicle, the vehicle computing system can also determine a motion plan to control motion of a vehicle along a determined travel route. The motion plan can be further based on any objects proximate to the autonomous vehicle (e.g., pedestrians, other vehicles, traffic control devices, etc.) that are detected by the one or more sensors. The vehicle computing system can include various sub-systems that cooperate to perceive the surrounding environment of the autonomous vehicle and determine a motion plan for controlling the motion of the autonomous vehicle along a travel route. For instance, the vehicle computing system can include a perception system, a prediction system, and a motion planning system. A mobility controller then can receive motion plans from the vehicle computing system and translate the motion plan into control signals for vehicle controls (e.g., steering, braking, throttle, etc.)
A vehicle implementing the disclosed coverage plans can further include one or more communication interfaces for transmitting/receiving map data and/or coverage plan data (e.g., including travel routes) and/or vehicle deviation detections from the vehicle to another computing device remote from the vehicle. For instance, coverage plans and/or travel routes and/or updates can be transmitted from a given vehicle to one or more different vehicles and/or to a remote computing device associated with central control system associated with a service provider, owner, and/or fleet operator in communication with a fleet of vehicles. In some implementations, an update descriptive of a reason for deviation of a vehicle from a travel route (e.g., construction, map error, etc.) can be transmitted upon detection of a deviation from a travel route.
The systems, methods, and vehicles described herein may provide a number of technical effects and benefits. For instance, in some implementations, an enhanced coverage plan descriptive of a travel route for a vehicle can be generated or otherwise provided. Such a coverage plan can advantageously include all travel way portions in a set of travel way portions at least once while reducing total travel cost over all travel way portions. In some implementations, coverage plans can also advantageously reduce turns (e.g., a total number of turns and/or a total value of angle difference associated with turns) within a given travel route. In some implementations, coverage plans can also advantageously reduce and/or eliminate u-turns including bounded u-turns along the periphery of a coverage plan. Reducing turns within a travel route, especially u-turns, can provide a coverage plan that is safer and easier for vehicle implementation, especially for use by autonomous vehicles.
The systems, methods, and vehicles described herein can have an additional technical effect and benefit of facilitating dynamic determination of revised navigation instructions for navigating a travel route when unexpected interruptions or deviations in navigation occur during vehicle navigation. More particularly, in some implementations, a vehicle may encounter an instance where it is unable or prefers not to follow a travel route described by a coverage plan because of potential navigational issues. For example, a vehicle could make a wrong turn while following a travel route. In another example, initial map data for a given geographic area could be incorrect or could change over time. In a still further example, dynamically changing events such as a traffic accident, construction, or street fair can affect a vehicle's ability to navigate along a travel route. In such instances, a vehicle computing system can be equipped with a coverage plan application that can accommodate determination of revised navigation instructions for returning the vehicle to the last unvisited permitted travel way portion within a travel route when implementation of an initial travel route is compromised.
The systems, methods, and vehicles described herein have an additional technical effect and benefit of providing a scalable approach to implementing coverage plans. In some examples, a vehicle computing system can obtain initial coverage plans from a remote computing system associated with central control system associated with a service provider, owner, and/or fleet operator in communication with a fleet of vehicles. Fleet operators or other entities have the flexibility of sending instructions to an entire fleet of vehicles operating in a given geographic area, to just one vehicle, or to a subset of vehicles. Coverage plans can be customized based on the vehicle and/or its location in order to account for travel way design, operational parameters, events, etc. that are different from city to city, country to country or the like. Conversely, detected deviations in a travel route described by a coverage plan as well as encountered reasons for those deviations can be determined locally by a vehicle computing system with or without additional manual input and can then be sent back to a remote computing device and/or to one or more other vehicle computing systems associated with different vehicles. As such, travel plans can be customized per vehicle or fleet, while needed revisions to travel routes and coverage plans based on encountered deviations can be updated and shared as needed in order to provide communicated improvements and flexibility in controlling navigation.
The systems, methods, and vehicles described herein can have an additional technical effect and benefit of providing an improvement to vehicle computing technology. For instance, aspects of the present disclosure enable a vehicle computing system to more efficiently and accurately control the vehicle's motion along a travel route. By determining revised navigation instructions for implementing coverage plans locally (e.g., on-board the vehicle) when needed, a vehicle computing system can avoid certain latency issues that arise by reliance on a remote computing system for off-board operations. The vehicle computing system can be configured to detect deviations from a travel route and determine revised navigation instructions for returning a vehicle to the last unvisited permitted travel way portion within a travel route as opposed to waiting for revised travel routes to be approved or disapproved by a central command system or other remote computing device/system. As such, travel routes can be revised and/or implemented as needed with increased computational efficiency.
With reference now to the Figures, example embodiments of the present disclosure will be discussed in further detail.
As further illustrated in
The one or more sensors 104 can include, for example, a positioning system 105 for determining a current geographic location of the vehicle 102 and/or one or more object detection sensors 107. Positioning system 105 can be any device or circuitry for analyzing the position of the vehicle 102. For example, the positioning system 105 can determine actual or relative position of vehicle 102 by using a satellite navigation positioning system (e.g., a GPS system, a Galileo positioning system, the GLObal Navigation satellite system (GLONASS), the BeiDou Satellite Navigation and Positioning system), an inertial navigation system, a dead reckoning system, based on IP address, by using triangulation and/or proximity to cellular towers or WiFi hotspots, and/or other suitable techniques for determining position). Object detection sensors 107 can include, for example, a Light Detection and Ranging (LIDAR) system, a Radio Detection and Ranging (RADAR) system, one or more cameras (e.g., visible spectrum cameras, infrared cameras, etc.) or other image capture devices, and/or other sensors. Sensor data from object detection sensors 107 can include information that describes the location (e.g., in three-dimensional space relative to the vehicle 102) of points that correspond to objects within the surrounding environment of the vehicle 102 (e.g., at one or more times).
In some implementations, the sensors 104 can be used to facilitate navigation of vehicle 102 when vehicle 102 is operating in an autonomous mode. In some implementations, the sensors 104 can be used to gather additional data as vehicle 102 traverses routes provided within the disclosed coverage plans and/or additional coverage maps that are generated based on the coverage plans.
The one or more computing devices 106 can include various components, some of which can be optional for implementation of the disclosed coverage plans. For example, the perception system 110, prediction system 112 and one or more portions of the motion planning system 114 may be included within the one or more computing devices 106 when vehicle 102 is an autonomous vehicle. When included, the perception system 110, prediction system 112, and motion planning system 114 can cooperate to perceive the surrounding environment of the vehicle 102 and determine a motion plan for controlling the motion of vehicle 102 accordingly. In particular, in some implementations, the perception system 110 can receive sensor data from the one or more sensors 104 that are coupled to or otherwise included within the vehicle 102.
As one example, for a LIDAR system, the sensor data from object detection sensor(s) 107 can include the location (e.g., in three-dimensional space relative to the LIDAR system) of a number of points that correspond to objects that have reflected a ranging laser. For example, a LIDAR system can measure distances by measuring the Time of Flight (TOF) that it takes a short laser pulse to travel from the sensor to an object and back, calculating the distance from the known speed of light.
As another example, for a RADAR system, the sensor data from object detection sensor(s) 107 can include the location (e.g., in three-dimensional space relative to the RADAR system) of a number of points that correspond to objects that have reflected a ranging radio wave. For example, radio waves (pulsed or continuous) transmitted by the RADAR system can reflect off an object and return to a receiver of the RADAR system, giving information about the object's location and speed. Thus, a RADAR system can provide useful information about the current speed of an object.
As yet another example, for one or more cameras, various processing techniques (e.g., range imaging techniques such as, for example, structure from motion, structured light, stereo triangulation, and/or other techniques) can be performed to identify the location (e.g., in three-dimensional space relative to the one or more cameras) of a number of points that correspond to objects that are depicted in imagery captured by the one or more cameras. Other sensor systems can identify the location of points that correspond to objects as well.
In addition to the sensor data, the computing device(s) 106 can retrieve or otherwise obtain map data 118 that provides detailed information about the surrounding environment of the vehicle 102. The map data can provide information regarding the identity and location of different travel ways (e.g., roads, road segments, lanes, lane segments, parking lanes, turning lanes, bicycle lanes, or other portions of a particular travel way). In some examples, travel way portions within map data 118 can include one or more descriptors including, for example, a travel way portion identifier, a start point for the travel way portion, an end point for the travel way portion, a directionality (e.g., direction of traffic flow), and/or connectivity identifiers for other travel way portions that are predecessors and/or successors to a given travel way portion. Map data 118 can also include the identity and location of different items than travel ways, including but not limited to buildings, maintenance/service locations for the vehicles, parking areas, traffic signs, traffic lights, traffic control devices, and/or any other map data that provides information that assists the vehicle computing system 100 in comprehending and perceiving its surrounding environment and its relationship thereto.
Referring still to
The computing device(s) 106 can also include a route determiner 122 configured to determine travel routes for vehicle 102 based at least in part on the map data 118 evaluated relative to the coverage plan data 120. In some examples, travel routes can be determined by route determiner 122 in accordance with a navigational objective (e.g., traversing each travel way portion in a set of travel way portions identified in coverage plan data 120 at least once while reducing total travel cost). In some examples, travel routes determined by route determiner 122 can include revised navigational instructions for returning a vehicle to another location within the travel route when vehicle 102 encounters an expected or unexpected deviation from a travel route (e.g., a travel route included in coverage plan data 120). In some examples, revised navigation instructions determined by route determiner 122 can include instructions to reroute vehicle 102 to navigate the next permitted travel way portion not yet navigated within a travel route. Travel routes determined by route determiner 122 can include, for example, a sequence of multiple travel way portions along which a vehicle 102 can plan to be manually or automatically navigated.
When included within vehicle 102, a perception system 110 can identify one or more objects that are proximate to the vehicle 102 based on sensor data received from the one or more sensors 104 and/or the map data 118. In particular, in some implementations, the perception system 110 can determine, for each object, state data that describes a current state of such object. As examples, the state data for each object can describe an estimate of the object's: current location (also referred to as position); current speed (also referred to as velocity); current acceleration; current heading; current orientation; size/footprint (e.g., as represented by a bounding shape such as a bounding polygon or polyhedron); class (e.g., vehicle versus pedestrian versus bicycle versus other); yaw rate; and/or other state information. In some implementations, the perception system 110 can determine state data for each object over a number of iterations. In particular, the perception system 110 can update the state data for each object at each iteration. Thus, the perception system 110 can detect and track objects (e.g., vehicles) that are proximate to the vehicle 102 over time.
The prediction system 112 can receive the state data from the perception system 110 and predict one or more future locations for each object based on such state data. For example, the prediction system 112 can predict where each object will be located within the next 5 seconds, 10 seconds, 20 seconds, etc. As one example, an object can be predicted to adhere to its current trajectory according to its current speed. As another example, other, more sophisticated prediction techniques or modeling can be used.
The motion planning system 114 can determine a motion plan for the vehicle 102 based at least in part on the travel route determined by route determiner 122 and/or the predicted one or more future locations for the object and/or the state data for the object provided by the perception system 110. Stated differently, given information about the current locations of objects and/or predicted future locations of proximate objects, as well as a predetermined travel route, the motion planning system 114 can determine a motion plan for the vehicle 102 that best navigates the vehicle 102 along the determined travel route relative to the objects at such locations.
As one example, in some implementations, the motion planning system 114 can determine a cost function for each of one or more candidate motion plans for the vehicle 102 based at least in part on the current locations and/or predicted future locations of the objects. For example, the cost function can describe a cost (e.g., over time) of adhering to a particular candidate motion plan. For example, the cost described by a cost function can increase when the vehicle 102 expects to reach impact with another object and/or deviates from a preferred pathway (e.g., a predetermined travel route).
Thus, given information about the current locations and/or predicted future locations of objects, the motion planning system 114 can determine a cost of adhering to a particular candidate pathway. The motion planning system 114 can select or determine a motion plan for the vehicle 102 based at least in part on the cost function(s). For example, the motion plan that minimizes the cost function can be selected or otherwise determined. The motion planning system 114 can provide the selected motion plan to a vehicle controller 116 that controls one or more vehicle controls 108 (e.g., actuators or other devices that control throttle, steering, braking, etc.) to execute the selected motion plan.
Each of the perception system 110, the prediction system 112, the motion planning system 114, the vehicle controller 116, and the route determiner 122 can include computer logic utilized to provide desired functionality. In some implementations, each of the perception system 110, the prediction system 112, the motion planning system 114, the vehicle controller 116, and the route determiner 122 can be implemented in hardware, firmware, and/or software controlling a general purpose processor. For example, in some implementations, each of the perception system 110, the prediction system 112, the motion planning system 114, the vehicle controller 116 and the route determiner 122 includes program files stored on a storage device, loaded into a memory and executed by one or more processors. In other implementations, each of the perception system 110, the prediction system 112, the motion planning system 114, the vehicle controller 116, and the route determiner 122 includes one or more sets of computer-executable instructions that are stored in a tangible computer-readable storage medium such as RAM hard disk or optical or magnetic media, as is further described in
Each vehicle computing device 106 can include one or more processors 138 and a memory 140. The one or more processors 138 can be any suitable processing device (e.g., a processor core, a microprocessor, an ASIC, a FPGA, a controller, a microcontroller, etc.) and can be one processor or a plurality of processors that are operatively connected. The memory 140 can include one or more non-transitory computer-readable storage mediums, such as RAM, ROM, EEPROM, EPROM, flash memory devices, magnetic disks, etc., and combinations thereof. The memory 140 can store data 142 and instructions 144 which are executed by the processor 138 to cause the vehicle computing device 106 to perform operations. Data 142 can include map data 118 and coverage plan data 120. Instructions 144 can include coverage plan application 145 configured to implement one or more steps, features or aspects of example methods for generating and/or implementing coverage plans.
The vehicle computing device(s) 106 can obtain map data 118 and/or coverage plan data 120 via interaction with the remote computing device(s) 150 that are communicatively coupled over the network 180. The remote computing device(s) 150 can be separate from the vehicle computing device(s) 106 and provided in a location remote from the vehicle computing device(s) 106, for instance, in a central control system associated with a service provider, owner, and/or fleet operator controlling a fleet of vehicles 102.
The one or more remote computing device(s) 150 can include one or more processors 152 and a memory 154. The one or more processors 152 can be any suitable processing device (e.g., a processor core, a microprocessor, an ASIC, a FPGA, a controller, a microcontroller, etc.) and can be one processor or a plurality of processors that are operatively connected. The memory 154 can include one or more non-transitory computer-readable storage mediums, such as RAM, ROM, EEPROM, EPROM, flash memory devices, magnetic disks, etc., and combinations thereof. The memory 154 can store data 156 and instructions 158 which are executed by the processor 152 to cause the remote computing device(s) 150 to perform operations. The data 156 can include map data 118 and coverage plan data 120 that can be relayed over network 180 to one or more vehicle computing devices 106 associated with respective vehicles 102. Instructions 158 can include a coverage plan application 160 configured to implement one or more steps, features or aspects of example methods for generating and/or implementing coverage plans.
Referring still to
Referring now to
In some implementations of the disclosed technology, map data can be transformed into a coverage graph of nodes and edges.
Referring now to
Referring now to
Referring now to
Referring now to
Referring still to
It should be appreciated that determining an Eulerian path may not always result in selecting an outgoing edge that minimizes turns, but that reduces turns relative to other options while still accomplishing an overarching objective of covering all edges in a set of edges at least once while reducing total travel cost. In some examples, reducing turns can correspond to picking any outgoing edge option (e.g., edge 730 or edge 734) over an edge option (e.g., edge 720) that corresponds to a u-turn within a travel path. In some implementations, u-turns can be minimized by reducing selection of an outgoing edge (e.g., edge 720) that has an angle difference of 180 degrees from a corresponding incoming edge (e.g., edge 722). In some implementations, outgoing edges that travel straight (e.g., have an angle difference as close to zero degrees as possible) relative to an incoming edge can be preferred over outgoing edges that turn (e.g., have a larger non-zero angle difference) relative to an incoming edge.
Referring now to
One specific example of coverage bounds involves the use of different types of polygons (e.g., inclusion, exclusion, optional exclusion) to broadly define geographic areas for navigation in a coverage plan. The number of vertices, number of edges, and/or overall shape of a polygon encompassing a particular geographic area can be customized in numerous ways to accomplish specific navigational coverage objectives. For instance, inclusion polygons can identify a geographic area that should be included or required for navigation in accordance with a particular coverage plan. Exclusion polygons can identify a geographic area that should be excluded or forbidden for navigation, while optional exclusion polygons can identify a geographic area that is not required to navigate but is permitted. A set of coverage bounds can include one or more inclusion polygons descriptive of one or more travel way portions to be included in a coverage plan and zero or more exclusion polygons descriptive of travel way portions to be excluded.
Evaluation of map data relative to a set of coverage bounds (e.g., inclusion and/or exclusion polygons) can help determine which travel way portions within the map data are required, permitted and/or forbidden. For example, any travel way portion within the map data that is completely enclosed by an inclusion polygon can be permitted and required for inclusion within a coverage plan. Any travel way portion within the map data that is completely enclosed or partially touched by an exclusion polygon can be forbidden for inclusion within a coverage plan. Any travel way portion within the map data that is completely enclosed or partially touched by an optional exclusion polygon can be permitted but not required. When a given travel way or travel way portion is included in both an inclusion polygon and an exclusion polygon, predetermined rules can be created for analyzing the travel way portions to determine whether they should be determined to be required, permitted and/or forbidden travel way portions. In one example, when a travel way portion is part of both an inclusion polygon and an exclusion polygon, such travel way portion can be excluded. In other words, determination as an excluded travel way portion can trump determination as an included travel way portion.
At (902), the method 900 can include obtaining a coverage plan descriptive of a travel route for a vehicle to navigate a set of travel way portions within a map of a geographic area. In some implementations, the travel route described by the coverage plan obtained at (902) can include all travel way portions in the set of travel way portions at least once while reducing total travel cost (e.g., defined by a travel distance, number and/or types of turns, etc.) over all travel way portions in the set of travel way portions. The coverage plan obtained at (902) can also reduce turn angles and/or eliminate u-turns in order to provide a coverage plan that is safer and easier for implementation by vehicles controlled to navigate along the travel route at (904). In some particular implementations, the coverage plan obtained at (902) can also be generated. A more particular example of generating a coverage plan is depicted in
Referring still to
At (906), the method 900 can include gathering sensor data from one or more sensors (e.g., sensors 104 depicted in
In some implementations, sensor data gathered at (906) can be used to construct at (908) a vehicle navigation map based at least in part on the sensor data. A vehicle navigation map constructed at (908) can include, for instance, a plurality of travel way portions and intersections between adjacent travel way portions as traveled by the vehicle along a travel route. In some implementations, a vehicle 102 can subsequently be controlled at (910) to navigate along a travel route within the vehicle navigation map constructed at (908). Such travel route can include, for example, every travel way portion within the coverage map at least once and every turn at each intersection in the coverage map at least once. The vehicle navigation maps constructed at (908) and navigated at (910) facilitate the gathering and controlled use of data within every lane and every turn within a set of travel ways, which is desirable for purposes of having a comprehensive data set for controlling autonomous vehicles.
At (922), the method 920 can include detecting a deviation of the vehicle from the travel route, such as the travel route described by the coverage plan obtained at (902). In some implementations, detecting a deviation at (922) of a vehicle can be done by analyzing geographic location data from a positioning system 105 to track a vehicle 102 as it navigates along a travel route described by the coverage plan obtained at (902) and detecting positional deviations from the travel route. Deviations detected at (922) can arise from a number of reasons. For example, a vehicle 102 could make a wrong turn while following a travel route described by a coverage plan obtained at (902), or initial map data for a given geographic area could be incorrect or could change over time, or occurrences (e.g., construction, traffic accidents, special events) could make certain travel way portions temporarily impassible).
At (924), the method 920 can include transmitting an update descriptive of a reason for the deviation from the travel route detected at (922) to another computing device remote from the vehicle. The update can include an identification of one or more travel way portions that are currently incorrect or impassible, as well as a corresponding reason for the discrepancy. In some implementations, transmitting the update at (924) can correspond, for example, to transmitting the update at (924) over network 180 depicted in
At (926), the method 920 can include determining revised navigation instructions for returning the vehicle to the last unvisited permitted travel way portion within the travel route. In some implementations, the revised navigation instructions determined at (926) can reroute a vehicle to navigate the next unvisited permitted travel way portion within the travel route described by the coverage plan obtained at (902). In some implementations, the revised navigation instructions determined at (926) can reroute a vehicle along permitted travel way portions within a coverage plan to the next required travel way portion not yet navigated in the coverage plan. In some instances, this approach of determining revised navigation instructions for returning a vehicle to a travel route can better help a vehicle accomplish its coverage plan goal after encountering a deviation.
At (928), the method 920 can include controlling the vehicle to navigate along the revised navigation instructions determined at (926). For example, a vehicle 102 as depicted in
At (942), the method 940 can include obtaining map data representative of a set of travel way portions within a given geographic area intended for vehicle navigation. Different geospatial file types can also be used for the map data obtained at (942), including but not limited to, SHL (Shapefile) file types, KMZ/KML (Keyhole Markup Language) file types, GDB (File Geodatabase) file types, MDB (Personal Geodatabase) file types, LYR (Layer) file types, OSM (OpenStreetMap) file types, and others.
At (944), the method 940 can include obtaining a set of coverage bounds (e.g., a set of one or more inclusion polygons and zero or more exclusion polygons) descriptive of those travel way portions to be included and optionally excluded in a coverage plan. Examples of a set of coverage bounds obtained at (944) are depicted in
At (946), the method 940 can include evaluating the map data obtained at (942) relative to the set of coverage bounds obtained at (944) to determine which travel way portions are required, permitted, and/or forbidden for vehicle navigation. For example, any travel way portion within the map data that is completely enclosed by an inclusion polygon can be permitted and required for inclusion within a coverage plan. Any travel way portion within the map data that is completely enclosed or partially touched by an exclusion polygon can be forbidden for inclusion within a coverage plan. Any travel way portion within the map data that is completely enclosed or partially touched by an optional exclusion polygon can be permitted but not required. When a given travel way or travel way portion is included in both an inclusion polygon and an exclusion polygon, predetermined rules can be created for analyzing the travel way portions to determine whether they should be determined to be required, permitted and/or forbidden travel way portions. In one example, when a travel way portion is part of both an inclusion polygon and an exclusion polygon, such travel way portion can be excluded. In other words, determination as an excluded travel way portion can trump determination as an included travel way portion.
At (948), the method 940 can include transforming map data including identified required (and optional permitted) travel way portions and connections between travel way portions into a coverage graph of nodes and edges. In some implementations, map data transformed at (948) can include travel way portions (e.g., roads, road segments, lanes, lane segments, parking lanes, turning lanes, bicycle lanes, and/or other portions of a particular travel way) and/or intersections and/or connections among adjacent travel way portions. One or more computing devices can then transform the map data at (948) into a coverage graph of nodes and edges. Each edge in the coverage graph determined at (948) can represent a travel way portion, while each node in the coverage graph can represent an intersection or connection among adjacent travel way portions. In some implementations, the coverage graph of nodes and edges transformed from map data at (948) can be configured to be strongly connected such that an edge is provided in both directions between each pair of connected nodes in the coverage graph.
At (950), a coverage graph of nodes and edges resulting from the transforming of map data at (948) can be enhanced in one or more ways. For example, Eulerian balancing can be employed at (950) to generate additional artificial edges between unbalanced nodes that do not have an equal number of incoming edges and outgoing edges. In order to determine which nodes are unbalanced, an edge count can be determined at each node. The edge count can correspond to the number of incoming edges for a given node minus the number of outgoing edges for that node. A node characterized by a positive edge count corresponds to a node having one or more extra incoming edges, while a node characterized by a negative edge count corresponds to a node having one or more extra outgoing edges. For each node having a non-zero edge count (e.g., +1, −1, +2, −2, etc.), additional artificial edges can be generated between that node and another node having a non-zero edge count. In some implementations, additional artificial edges can be generated from a node having a positive edge count to a node having a negative edge count. If a node has N unbalanced edges, then N additional artificial edges can be added into or out of that node. An example of generating additional artificial edges between unbalanced nodes at (950) is depicted in
In some implementations, a matching algorithm can be employed to determine a preferred path for the additional artificial edges generated in the Eulerian balancing process at (950). In some examples, a bipartite matching algorithm can be employed, although other matching algorithms are also possible. A matching algorithm can be especially useful when a coverage graph contains more than one unique unbalanced node having a positive edge count and more than one unique unbalanced node having a negative edge count. An enhanced coverage graph can correspond to a coverage graph that is balanced using the described Eulerian balancing and/or bipartite matching enhancement algorithms. An example of generating additional artificial edges between unbalanced nodes at (950) using a matching algorithm to determine an optimal matching path is depicted in
Referring still to
In particular implementations, determining a coverage plan at (952) by determining an Eulerian path can include determining a main path as well as one or more sub-paths, if needed, which can be spliced into the main path. Determining a main path can include identifying a start node and traversing consecutive edges within the coverage graph from the identified start node until reaching the identified start node again. Nodes within the main path then can be checked to identify any remaining nodes having unvisited exits (e.g., outgoing edges not yet traversed as part of the main path). Each such identified remaining node can then form a subsequent starting node for a new sub-path from the remaining node along consecutive edges within the coverage graph not yet visited until returning to the remaining node. Upon completion of each sub-path, the sub-path can then be spliced into the main path between the remaining node and its original successor in the main path. The process of creating new sub-paths and splicing those sub-paths into the main path is repeated until all exits for all nodes within the coverage graph have been visited. An example of determining a travel route at (952) is depicted in
At (954), the method 940 can include reducing turn angles within a determined path and resultant travel route. In particular, reducing turn angles at (954) can include preferring an outgoing edge from a given node that reduces the angle difference between an incoming edge and each outgoing edge, such as described relative to
At (956)-(960), method 940 can include reducing turns within a travel route by removing any u-turns that may still exist within a travel route determined at (952). More particularly, a u-turn between a first node and a second node in a travel route can be identified at (956). An alternate path between the first node and the second node identified at (956) then can be determined at (958). The u-turn identified at (956) can then be replaced at (960) with the alternate path between the first node and the second node determined at (958). In some implementations, a u-turn can be replaced at (960) with an alternate path when a cost associated with the alternate path determined at (958) is below a given threshold and/or below a cost associated with the u-turn identified at (956).
The technology discussed herein makes reference to computing devices, databases, software applications, and other computer-based systems, as well as actions taken and information sent to and from such systems. One of ordinary skill in the art will recognize that the inherent flexibility of computer-based systems allows for a great variety of possible configurations, combinations, and divisions of tasks and functionality between and among components. For instance, computer-implemented processes discussed herein can be implemented using a single computing device or multiple computing devices working in combination. Databases and applications can be implemented on a single system or distributed across multiple systems. Distributed components can operate sequentially or in parallel. Furthermore, computing tasks discussed herein as being performed at computing device(s) remote from the vehicle can instead be performed at the vehicle (e.g., via the vehicle computing system), or vice versa. Such configurations can be implemented without deviating from the scope of the present disclosure.
While the present subject matter has been described in detail with respect to specific example embodiments and methods thereof, it will be appreciated that those skilled in the art, upon attaining an understanding of the foregoing can readily produce alterations to, variations of, and equivalents to such embodiments. Accordingly, the scope of the present disclosure is by way of example rather than by way of limitation, and the subject disclosure does not preclude inclusion of such modifications, variations and/or additions to the present subject matter as would be readily apparent to one of ordinary skill in the art.
This application claims the benefit of priority to U.S. Provisional Application No. 62/503,790 entitled “Coverage Plan Generation and Implementations,” filed on May 9, 2017; which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62503790 | May 2017 | US |