Vehicle Control
The vehicle computing system addresses navigation challenges in autonomous vehicles by using multiple command controllers and a control decision system to arbitrate between conflicting commands, resulting in smoother and safer navigation through complex environments.
Patent Information
- Application Number
- JP2021541500
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-01-18
- Filing Date
- 2020-01-17
- Publication Date
- 2025-08-13
- Estimated Expiration
- 2040-01-17
AI Technical Summary
Existing vehicle control systems in autonomous vehicles struggle to accurately navigate complex environments with multiple dynamic and static objects and conditions, leading to uncomfortable rides and safety issues due to overestimation or underestimation of object impacts.
A vehicle computing system that utilizes multiple command controllers to determine vehicle acceleration based on various objects and conditions, incorporating sensor and perception data to generate control requests, and a control decision system to arbitrate between conflicting commands, ensuring smoother navigation and improved safety.
The system provides a smoother ride and increased safety by accurately determining vehicle acceleration, reducing component wear and energy consumption, and enhancing passenger comfort while navigating complex environments.
Smart Images

Figure 0007722921000003 
Figure 0007722921000004 
Figure 0007722921000005
Abstract
Description
[Technical Field]
[0001] The present invention relates to vehicle control, and more particularly to vehicle control in autonomous vehicles. [Background technology]
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS This PCT international patent application claims the benefit of the filing date of U.S. Patent Application No. 16 / 251,788, filed January 18, 2019, the disclosure of which is incorporated herein by reference in its entirety.
[0003] Planning systems in vehicles, e.g., autonomous vehicles, utilize information associated with objects in an environment (e.g., dynamic agents, static agents) and attributes of the environment (e.g., speed limits, weather conditions) to determine actions for navigating the environment. For example, some existing systems control the vehicle to slow down and / or stop when determining that an object is likely to encroach on the vehicle's driving path or in response to identifying a red light or traffic jam. However, in more complex driving environments, e.g., where numerous static objects, dynamic objects, and / or environmental conditions may affect operation, determining accurate commands for the vehicle to traverse the environment can be difficult. For example, the impact of an object may be overestimated or underestimated, which may result in sudden acceleration or deceleration, making the ride uncomfortable for the passengers.
[0004] The detailed description will be made with reference to the accompanying drawings, in which the leftmost digit(s) of a reference number identifies the figure in which the reference number first appears. Use of the same reference number in different figures indicates similar or identical components or features. [Prior art documents] [Patent documents]
[0005] [Patent Document 1] U.S. Patent Application No. 16 / 160594 [Brief explanation of the drawings]
[0006] [Figure 1] FIG. 1 is a schematic diagram illustrating an example implementation of vehicle control in the environment described herein. [Figure 2] FIG. 1 is a block diagram illustrating an example computing system for vehicle control as described herein. [Figure 3] 1 is a flowchart illustrating an example method for navigating a vehicle through an environment using vehicle control as described herein. DETAILED DESCRIPTION OF THE INVENTION
[0007] The techniques described herein relate to reactive control of a vehicle, such as an autonomous vehicle, within an environment. For example, in implementations described herein, control of a vehicle (such as acceleration, steering angle, torque, etc.) along a planned path may be determined by considering multiple different objects in the vehicle's environment (e.g., dynamic obstacles including, but not limited to, pedestrians, animals, cyclists, trucks, motorcycles, or other vehicles; static obstacles including, but not limited to, parked or stopped vehicles; traffic control objects including, but not limited to, posted speed limits; and / or other objects or conditions that may affect the operation and behavior of the autonomous vehicle) and / or the predicted actions of those objects. For example, the vehicle may determine a different acceleration, e.g., longitudinal acceleration, to react to each of multiple objects or conditions in the environment.
[0008] As a non-limiting example, a computing device of an autonomous vehicle may receive control requests to react to objects and / or conditions in the environment. For example, in some examples, the computing device may receive information associated with an approaching stop sign, e.g., information about a lead vehicle ahead of the controlled vehicle, and information about a posted speed limit. Based on such information, the computing device may generate and / or receive, e.g., a first request to stop at a detected stop sign a distance ahead, a second request to follow the lead vehicle, e.g., by both maintaining the same speed as the lead vehicle and maintaining a time gap defining a separation from the lead vehicle, and a third request to maintain a speed associated with the posted speed limit. As described, the first request may include a physical distance at which to reach zero speed, the second request may include a speed and a time associated with the distance, and the third request may include a speed. Thus, each request may contain different information, e.g., speed, distance, time, and some requests may contradict each other; for example, in the given example, a vehicle cannot stop at a stop sign while maintaining the speed limit.
[0009] In some examples, the computing device may determine control of the autonomous vehicle, e.g., acceleration, e.g., longitudinal acceleration along a travel path or trajectory, for each of the requests. Continuing with the example above, the computing device may determine a first acceleration, e.g., deceleration, to stop the vehicle in accordance with a stop sign to execute a first request. The computing device may also determine a second acceleration to match the speed of a lead vehicle and maintain a desired time gap to execute a second request, and the computing device may determine a third acceleration to achieve a speed limit to execute a third request. As will be appreciated, in some examples, the computing device may calculate as many accelerations as there are received control requests, detected objects, and / or travel-related conditions.
[0010] In some examples, a command acceleration may be determined based on additional information in addition to speed, time, and / or distance information. For example, a received request to react to an object or condition may provide the additional information. By way of non-limiting example, the additional information may include constraints, which may include minimum and / or maximum time gaps, speeds, and / or accelerations allowable for a given request. The additional information may also include other information regarding request priority. For example, a request may include information to determine an increased acceleration for a particular request, e.g., to assertively pass through a congested area, or information to de-prioritize requests that may be less important. Other additional information may include special instructions for considering certain objects, e.g., by instructing the controller to consider the object stationary or to associate a fixed trajectory with the object.
[0011] In some implementations, the computing device may include different controllers for determining acceleration based on different input requests. For example, when the input request includes a request to achieve a speed, e.g., a posted speed limit, at a specified distance from the current location, the commanded acceleration associated with the input request may be determined by a first controller having a first controller gain. In some examples, the first controller gain may be predetermined or may be a function of distance. In other examples, for example, when the input request is a command to track an object, such as a lead vehicle, or to stop at a location, the commanded acceleration associated with the input command may be determined by a second controller. For example, the second controller may have a second controller gain. The second controller gain may be predetermined or may be a function of distance from the object, distance to a stopping point, and / or time to reach the object and / or stopping point. The gain may also be determined based at least in part on additional information received with the request.
[0012] In some aspects, a command (e.g., acceleration) can be determined for each request, and the determined commanded acceleration can be used to determine an actual control acceleration for the vehicle. For example, multiple commanded accelerations can be generated for a particular time, e.g., a time step, and the control acceleration for that time can be determined based on the control acceleration corresponding to that time. In some examples, the control acceleration can be determined based at least in part on a weighted average of the commanded accelerations, or otherwise determined according to an optimization or determination. For example, the computing device can associate a weighting factor with each of the commanded accelerations, and the weighting factor can be based on additional information received with the respective request. The control acceleration can be used to control the vehicle.
[0013] Unlike conventional systems, aspects of the present disclosure may include more events when determining a command (such as a control acceleration), and may determine acceleration differently for different objects, for example, by using different controllers based on the input command. Such unique command (acceleration) determination may provide improved control over object and / or environmental conditions, in contrast to such conventional systems. The techniques described herein may result in a smoother ride for passengers and increased safety for the autonomous vehicle and / or objects in the environment.
[0014] The techniques described herein relate to leveraging sensor and perception data to enable vehicles, such as autonomous vehicles, to increase the level of safety associated with navigating an environment while avoiding objects in the environment, in addition to providing a comfortable ride experience. The techniques described herein can utilize multiple command controllers to determine vehicle acceleration (and / or other control) along a driving path so that the vehicle can navigate around those objects in a more efficient manner and / or with improved passenger comfort than with existing navigation techniques. For example, the techniques described herein may provide a technical improvement over existing prediction and navigation technologies. In addition to improving the accuracy with which sensor data can be used to determine vehicle acceleration, the techniques described herein can provide a smoother ride and improve safety outcomes, for example, by more accurately determining a safe speed at which the vehicle should operate to reach its intended destination. The techniques described herein may also reduce component wear and energy requirements associated with the vehicle. For example, existing techniques may brake and / or accelerate more harshly, placing additional and unnecessary stress on vehicle components.
[0015] 1-3 provide additional details associated with the techniques described herein.
[0016] FIG. 1 is a schematic diagram illustrating an example implementation of reactive control of a vehicle passing through an environment, as described herein. More specifically, FIG. 1 illustrates an example environment 100 in which a vehicle 102 is operating. In the illustrated example, the vehicle 102 is driving within the environment 100, although in other examples, the vehicle 102 may be stopped and / or parked within the environment 100. One or more objects, or agents, are also present within the environment 100. For example, FIG. 1 illustrates a first additional vehicle 104 and a second additional vehicle 106 (collectively “additional vehicles 104, 106”) and a pedestrian 108. Although not illustrated, any number and / or types of objects may additionally or alternatively be present in environment 100, including static objects such as road signs, parked vehicles, fire hydrants, buildings, or curbs, dynamic objects such as pedestrians, animals, cyclists, trucks, motorcycles, or other vehicles, and / or other traffic control objects such as speed limit signs, stop signs, or traffic signals.
[0017] Vehicle 102 may be an autonomous vehicle configured to operate in accordance with a Level 5 classification issued by the U.S. Department of Transportation's National Highway Traffic Safety Administration, which describes a vehicle capable of performing all safety-critical functions throughout its journey, with a driver (or passenger) not expected to control the vehicle at any time. In such an example, vehicle 102 may be configured to control all functions from start to stop, including all parking functions, so that it may be unmanned. This is merely an example, and the systems and methods described herein may be incorporated into any land-based, air-based, or water-based vehicle, including those ranging from those that must be manually controlled by a driver at all times to those that are partially or fully autonomously controlled. Additional details associated with vehicle 102 are described below.
[0018] 1 , the vehicle 102 may include one or more vehicle computing devices 110. In some implementations, the vehicle computing device(s) 110 may, for example, use sensor data to recognize one or more objects, such as additional vehicles 104, 106, and / or pedestrians 108. In some examples, the vehicle 102 may include one or more sensor systems (not shown), which may include, but are not limited to, light detection and ranging (LIDAR) sensors, radio detection and ranging (RADAR) sensors, time-of-flight sensors, ultrasonic transducers, voice navigation and ranging (SONAR) sensors, location sensors (e.g., global positioning system (GPS), compass, etc.), inertial sensors (e.g., inertial measurement units, accelerometers, magnetometers, gyroscopes, etc.), cameras (e.g., RGB, IR, intensity, depth, etc.), wheel encoders, microphones, environmental sensors (e.g., temperature sensors, humidity sensors, light sensors, pressure sensors, etc.), etc.
[0019] In at least one example, the vehicle computing device(s) 110 may include a perception system (not shown in FIG. 1 ) that may perform object detection, segmentation, and / or classification based at least in part on sensor data received from the sensor system. For example, the perception system may detect additional vehicles 104, 106 and / or pedestrians 108 within the environment 100 based on the sensor data generated by the sensor system. In addition, the perception system may determine the range (e.g., height, width, length, etc.) of the additional vehicles 104, 106 and / or pedestrians 108, the attitude (e.g., x-coordinate, y-coordinate, z-coordinate, pitch, roll, yaw) of the additional vehicles 104, 106 and / or pedestrians 108, and / or additional attributes of the additional vehicles 104, 106 and / or pedestrians 108. The sensor system(s) may continuously (e.g., near real-time) generate sensor data that can be utilized by the perception system (and / or other systems of the vehicle computing device(s) 110).
[0020] Vehicle computing device(s) 110 may also include a request generation system 112 that may determine one or more control request(s) 114. For example, each of the control request(s) 114 may include information for controlling the vehicle 102 with respect to an object detected in the environment or some other condition or feature in the environment. In the example of FIG. 1 , the request generation system 112 may determine a first control request of the control requests 114 to navigate with respect to the first additional vehicle 104, a second control request of the control requests 114 to navigate with respect to the second additional vehicle 106, and a third control request of the control requests 114 to navigate with respect to the pedestrian 108. Additional control requests may also be generated in response to additional objects or conditions in the environment 100. For example, the environment may have an associated speed limit, e.g., posted on a traffic sign, and the response instructions 114 may include instructions to achieve and / or maintain a speed associated with the posted speed limit. Similarly, in other embodiments, other objects or environmental conditions may cause the request generation system 112 to determine additional control requests 114. Such objects and / or conditions may include, but are not limited to, traffic signals, stop signs, yield signs, merging traffic, etc. In the implementations described herein, the control request 114 may include one or more of a reference speed, a reference distance (e.g., a distance within which the requested speed should be achieved), and / or a reference time (e.g., a time within which the requested speed should be achieved) associated with the execution of the control request 114. Thus, in an example in which the control request 114 includes a request to obey a posted speed limit, the control request 114 may include a speed associated with the posted speed limit. In addition to the speed associated with the speed limit, the control request 114 may also include a distance within which the vehicle 102 should reach the target speed.Although only a few control requests are listed above, it is understood that there may be additional or fewer types (or classes) of control requests that are selected based on how the vehicle 102 should react to various conditions in the environment.
[0021] As described, the demand generation system 112 generates control demands 114 for each of several objects and / or conditions within the environment 100 of the vehicle 102. The control demands may be provided in many different formats (e.g., different types and / or classes of control demands), depending, for example, on the object for which control is to be performed and / or the desired action to be taken. As a non-limiting example, one control demand type may include a demand to track a vehicle (e.g., the vehicle 104) at a given speed, while another control demand may include a stop demand (e.g., to stop at a stop sign). In such an example, each control demand may correspond to different kinematics, safety protocols, and the like. Accordingly, the vehicle computing device 110 may also include one or more command controllers 116 configured to determine control (e.g., acceleration) demands 118 corresponding to each of the control demands 114. In some examples, the command controller 116 may determine the control demands 118 using one or more equations. For example, as described further herein, different command controllers 116 may be used depending on the type of control request 114 received. In some examples, different ones of the command controllers 116 may include different dynamics and / or kinematics to achieve the requested control (e.g., through the use of different controller gains to determine the acceleration command 118). For example, the first command controller 116-1 may have controller gains that are gain-scheduled as a function of velocity, e.g., relative velocity. For example, the first command controller 116-1 may be used to determine acceleration for a control request 114 that includes velocity. The second command controller 116-2 may have controller gains that are gain-scheduled as a function of distance and / or time. For example, the distance may be a position in space, a distance from a predetermined position, or a distance to an object in the environment.In an implementation in which the second controller gain is gain-scheduled as a function of time, the time may be, by way of non-limiting example, the time until impact with an object. However, in alternative or additional examples, such time may be determined to provide a comfortable experience for the passengers or otherwise consider safety. A third command controller 116-3 is also illustrated and may include one or more controllers specific to one or more special cases. For example, the third controller may use predetermined gains in calculating the acceleration command 118. While FIG. 1 illustrates three command controllers 116, more or fewer controllers may be provided. In the implementation described herein, the command controller 116 may generate an acceleration command 118 that is best suited to comply with the individual control request 114. Furthermore, while depicted in FIG. 1 and described above as an acceleration command 118 for illustrative purposes, in some examples, it may further include steering, steering ratio, and the like.
[0022] In some implementations, the control demands 114, and therefore the acceleration commands 118, may conflict with one another. For example, a first control demand may include a demand to obey a posted speed limit, while a second control demand 114 may be a demand to track an object, such as a first additional vehicle 104. When the first additional vehicle 104 is traveling at the posted speed limit, the vehicle 102 may obey both demands. However, when the additional vehicle accelerates above or decelerates below the posted speed limit, the command controller 116 may generate different acceleration commands 118, e.g., a first acceleration, such as zero acceleration, to maintain the speed limit, and a second acceleration to maintain distance from the first additional vehicle 104. As will be appreciated, additional acceleration commands 118 may also be generated in accordance with the additional control demands.
[0023] To arbitrate among multiple acceleration commands, vehicle computing device(s) 110 may further include a control decision system 120 for generating control commands, e.g., for controlling vehicle 102. For example, control decision system 120 may determine a command (e.g., a single longitudinal acceleration) based at least in part on each of acceleration commands 118. In some examples, demand generation system 112 may generate control demands 114 at intervals, e.g., periodic intervals, or when an object or condition is identified. Command controller(s) 116 may process demands 114 and generate acceleration commands 118 at intervals, e.g., periodic intervals, or when a demand is received. In some examples, control decision system 120 may determine a commanded acceleration based on all commands generated for a particular time frame or time period. Thus, the commanded acceleration may be a longitudinal acceleration for a particular point (or time) on a track or travel path. Additionally, because vehicle computing device(s) 110 can predict actions and environmental features into the future, e.g., beyond some time horizon, control decision system 120 can use the techniques described herein to determine commanded accelerations for additional points (or times) on the trajectory or travel path. In some examples, this prediction may include updating the position of vehicle 102 and / or objects in the environment as predicted over time (e.g., based on controls associated with vehicle 102 and / or based on expected positions, accelerations, velocities, etc. associated with the predicted trajectory of the vehicle and / or object).As a non-limiting example, such commands determined by the control decision system 120 may include the arbitration of multiple acceleration commands 118 for each of 1 second, 2 seconds, 3 seconds, and 4 seconds (or 1 meter, 2 meters, 3 meters, and 4 meters, etc.) of future predicted vehicle travel to determine the trajectory to be followed by the vehicle 102, although any number of such points (in time and / or space) and any intervals therebetween are contemplated.
[0024] In a more detailed example, FIG. 1 may illustrate a scenario in which a vehicle 102 is traveling through an environment 100 generally in the direction of arrow 120. The vehicle 102 is traveling on a road 122 having a first lane 124 and a second lane 126. The vehicle 102 is behind a first additional vehicle 104 in the first lane 124 and, in an example, may be traveling at a relatively similar speed as the first additional vehicle 104. For example, the request generation system 112 may generate a control request 114 that calls for maintaining a relatively constant distance from behind the first additional vehicle 104. In some examples, the control request 114 may express the distance as a time gap to maintain between the vehicle 102 and the first additional vehicle 104. Such a control request 114 may be in accordance with the policy of the vehicle 102 (e.g., a policy that dictates following a lead vehicle, if possible). In general, the time gap may be the difference between a first time that the first additional vehicle 104, as the lead vehicle, passes a location and a second time that the vehicle 102 passes that location. Thus, as will be appreciated, the actual physical distance between the first additional vehicle 104 and the vehicle 102 may vary based on the speed of the first additional vehicle 104 (and the vehicle 102). In other examples, the control request may also include acceleration information for the first additional vehicle 104. Based on the control request 114 seeking to maintain the time gap with respect to the first additional vehicle 104, the command controller 116, e.g., the second controller 116-2, may determine an acceleration command to achieve and / or maintain the requested time gap.
[0025] 1 , the control request 114 to track the first additional vehicle 104 may be the only control request. For example, a pedestrian is illustrated as traveling along trajectory 128, and in response to the presence of pedestrian 108 and / or trajectory 128, request generation system 112 may also generate a control request 114 to slow down, for example, because the pedestrian may enter first lane 124, e.g., to cross road 122 in violation of traffic regulations. Thus, in this example, another control request 114 may include a request to slow down, e.g., reduce, the reference speed, at a predetermined distance from the current position. For example, the distance may be the distance between the current position of vehicle 102 and position 130 on virtual line 132 a certain distance ahead. Such distance and speed may be determined according to a policy (e.g., to ensure that the speed of vehicle 102 does not meet or exceed a maximum speed within a radius of the pedestrian). In an example, the position 130 and / or the virtual line 132 may be determined as a line / position relative to the current position of the pedestrian 108. Accordingly, the control request 114 may be a control request associated with the pedestrian's 108's possible intrusion into the first lane 124 and may be expressed as a speed, e.g., a speed lower than the current speed, and a distance to achieve the lower speed, e.g., a distance to the position 130 and / or the line 132. Based on the control request 114 generated based on the pedestrian 108, the command controller(s) 116, e.g., the first controller 116-1, may determine an acceleration command to decelerate the vehicle 102 to the line 132.
[0026] 1 , an acceleration command for tracking the first additional vehicle 104 may be determined using the second command controller 116-2, and an acceleration command for decelerating the vehicle in anticipation of approaching the pedestrian 108 may be determined using the first command controller 116-1. In some examples, the second command controller 116-2 may include a controller gain that is gain-scheduled based at least in part on the distance of the vehicle 102 to the first additional vehicle 104, the desired distance between the vehicle 102 and the first additional vehicle 104, and / or the time until the vehicle 102 contacts the first additional vehicle 104. The first command controller 116-1 may include a second gain that is gain-scheduled based at least in part on the distance to a target stopping location, e.g., point 130. Thus, in the example of FIG. 1 , as the vehicle 102 approaches point 130 closer, the gain function may cause the vehicle 102 to decelerate more quickly, e.g., to achieve the desired speed at location 130.
[0027] Continuing the example, acceleration commands 118 may be received at a control decision system 120, which may determine and output a control acceleration. For example, control decision system 120 may calculate a weighted average of the two received control commands, select one of the acceleration commands 118 as the control acceleration, or otherwise arbitrate between the acceleration commands.
[0028] FIG. 1 illustrates a single example of navigating an environment using vehicle control techniques. Other examples are contemplated. For example, while FIG. 1 illustrates only two additional vehicles 104, 106 and a pedestrian 108, other objects and / or events are also contemplated. For example, a vehicle entering roadway 122, e.g., from a driveway or intersecting street, and a zipper merge on a highway, may be considered in accordance with the techniques described herein. In another example, in a densely congested area, e.g., an area where many obstacles may make navigation difficult, the techniques described herein may cause the vehicle to proceed slowly along a trajectory, e.g., to reduce occlusion or otherwise "dogmatically" pass through an intersection. In implementation, for example, the control request may include an indication that the command controller 116 should adjust gains when determining the corresponding acceleration command 118, or that a particular command controller 116, e.g., utilizing different gains, should be used. Any object or event that may affect the operation of the vehicle 102 may be used as the basis for generating a control request 114 by a command controller 116, which generates an associated acceleration command 118. As also described herein, all acceleration commands 118 may be considered by a control decision system 120. Several other examples are described further herein.
[0029] 2 is a block diagram illustrating an example system 200 for implementing reactive control of a vehicle passing through an environment, as described herein. In at least one example, system 200 may include a vehicle 202, which may be the same as vehicle 102, described above with reference to FIG. 1. Vehicle 202 may include one or more vehicle computing devices 204, one or more sensor systems 206, one or more emitters 208, one or more communication connections 210, at least one direct connection 212, and one or more driving modules 214. In at least one example, vehicle computing device(s) 204 may correspond to vehicle computing device(s) 110, described above with reference to FIG. 1.
[0030] Vehicle computing device(s) 204 may include processor(s) 216 and memory 218 communicatively coupled to processor(s) 216. In the illustrated example, vehicle 202 is an autonomous vehicle; however, vehicle 202 can be any other type of vehicle. In the illustrated example, memory 218 of vehicle computing device(s) 204 stores a localization system 220, a perception system 222, a prediction system 224, a planning system 226, and one or more system controllers 228. Although the just-mentioned systems and components are illustrated and described below as separate components for ease of understanding, the functionality of the various systems, components, and controllers may be attributed differently than described. As a non-limiting example, functionality attributed to perception system 222 may be performed by localization system 220 and / or prediction system 224. 2 as residing in memory 218 for illustrative purposes, it is contemplated that localization system 220, perception system 222, prediction system 224, planning system 226, and / or one or more system controllers 228 may additionally or alternatively be accessible to vehicle 202 (e.g., stored in memory remote from vehicle 202 or otherwise accessible by vehicle 202).
[0031] 2, the vehicle 202 may also include map storage 236. For example, the map storage 236 may store one or more maps. A map may be any number of data structures modeled in two or three dimensions and capable of providing information about an environment, such as, but not limited to, topology (such as intersections), streets, mountains, roads, terrain, and the general environment.
[0032] In at least one example, localization system 220 may include functionality for receiving data from sensor system(s) 206 to determine the position and / or orientation (e.g., one or more of x, y, z position, roll, pitch, or yaw) of vehicle 202. For example, localization system 220 may include and / or request / receive a map of the environment (e.g., from map storage 236) and continuously determine the location and / or orientation of vehicle 202 within the map. In some examples, localization system 220 may receive image data, LIDAR data, radar data, IMU data, GPS data, wheel encoder data, etc., and utilize simultaneous localization and mapping (SLAM) techniques, calibration, localization, and mapping techniques, simultaneous techniques, relative SLAM techniques, bundle adjustment, nonlinear least squares optimization, or differential dynamic programming, etc., to accurately determine the location of the autonomous vehicle. In some examples, the localization system 220 can provide data to various components of the vehicle 202 to determine an initial position for the autonomous vehicle to generate candidate trajectories for travel through an environment.
[0033] In some examples, the perception system 222 may include functionality for performing object detection, segmentation, and / or classification. In some examples, the perception system 222 may provide processed sensor data indicating the presence of an object proximate to the vehicle 202, such as additional vehicles 104, 106 and / or pedestrian 108. The perception system 222 may also determine the classification of the entity as a type of entity (e.g., automobile, pedestrian, cyclist, animal, building, tree, road surface, curb, sidewalk, unknown, etc.). For example, the perception system 222 may compare the sensor data to stored object information to determine the classification. In additional and / or alternative examples, the perception system 222 may provide processed sensor data indicative of one or more characteristics associated with the detected object and / or the environment in which the object is located. In some examples, characteristics associated with an object may include, but are not limited to, x-position (global and / or local position), y-position (global and / or local position), z-position (global and / or local position), orientation (e.g., roll, pitch, yaw), object type (e.g., classification), object velocity, object acceleration, object range (size), etc. Characteristics associated with an environment may include, but are not limited to, the presence of another object in the environment, the state of another object in the environment, time of day, day of the week, season, weather conditions, darkness / light indication, etc.
[0034] The prediction system 224 may have access to sensor data from the sensor system(s) 206, map data from the map storage 236, and, in some examples, perception data (e.g., processed sensor data) output from the perception system 222. In at least one example, the prediction system 224 may determine characteristics associated with the object based at least in part on the sensor data, map data, and / or perception data. As described above, the characteristics may include the object's range (e.g., height, weight, length, etc.), the object's attitude (e.g., x-coordinate, y-coordinate, z-coordinate, pitch, roll, yaw), the object's velocity, the object's acceleration, and the object's direction of travel (e.g., forward direction). Furthermore, the prediction system 224 may be configured to determine the distance between the object and the nearest travel lane, the width of the current travel lane, proximity to a crosswalk, semantic features, interaction features, etc.
[0035] The prediction system 224 can also analyze characteristics of the object to predict future actions of the object. For example, the prediction system 224 can predict a lane change, deceleration, acceleration, turn, or change of direction, etc. The prediction system 224 can transmit the predictive data to the planning system 226, for example, so that the demand generation system 230 can use the predictive data to determine appropriate actions to control the vehicle 202 with respect to the object. For example, the prediction system 224 can generate predictive data indicating the likelihood that the object will encroach on the travel path and / or otherwise disrupt the current path and / or trajectory of the vehicle 202.
[0036] In general, the planning system 226 can determine a path along which the vehicle 202 can traverse an environment. For example, the planning system 226 can determine various routes and trajectories, as well as various levels of detail. The planning system 226 can determine a route to traverse from a first location (e.g., a current location) to a second location (e.g., a target location). For purposes of this description, the route can be a sequence of waypoints to traverse between the two locations. As non-limiting examples, the waypoints include streets, intersections, Global Positioning System (GPS) coordinates, etc. Furthermore, the planning system 226 can generate instructions for guiding the autonomous vehicle along at least a portion of the route from the first location to the second location. In at least one example, the planning system 226 can determine how to guide the autonomous vehicle from a first waypoint in the sequence of waypoints to a second waypoint in the sequence of waypoints. In some examples, the instructions can be a trajectory or a portion of a trajectory. In some examples, multiple trajectories may be generated substantially simultaneously (e.g., within technical tolerances) according to a receding horizon technique, and one of the multiple trajectories is selected for the vehicle 202 to navigate along. Thus, in the example implementation described herein, the planning system 226 may generate a trajectory along which the vehicle may navigate, the trajectory being along the travel route.
[0037] In implementing the present disclosure, more particularly, planning system 226 may periodically determine control signals for operating vehicle 202, for example, with respect to objects and / or conditions in the environment of vehicle 202. For example, as described above, planning system 226 may include demand generation system 230 (which may be the same as or similar to demand generation system 112), one or more command controllers 232 (which may be the same as or similar to command controller(s) 116), and control decision system 234 (which may be the same as or similar to control decision system 120).
[0038] The request generation system 230 may determine a request to command the vehicle 202 with respect to, for example, an object, condition, and / or feature that affects (or potentially affects) operation of the vehicle 202. For example, the request generation system 230 may generate the control request 114 illustrated in FIG. 1. An exemplary control request may include, for example, one or more of speed information, distance information, time information, and / or acceleration information for executing a single command with respect to a single object, feature, or object. In one example, a control request generated by the request generation system 230 may include a request to track an object, such as a lead vehicle. In such an example, the request to track an object may include information about the object. For example, the request may include the object's speed and / or acceleration information, if known, for the object. The request to track an object may also include a distance to maintain behind the object. In some examples, the distance may be expressed as a time gap. For example, the time gap may define the time difference between a first time when a first object, e.g., a lead object, passes the reference point and a second time when the vehicle passes the reference point. Thus, for example, if vehicle 202 is required to maintain a 1.5-second time gap behind the lead vehicle, the vehicle will pass the reference point 1.5 seconds later than the lead vehicle. As can be seen, when the lead vehicle and vehicle 202 are traveling at 15 m / s, vehicle 202 will be 10 m behind the lead vehicle, while when the lead vehicle and vehicle 202 are traveling at 3.0 m / s, vehicle 202 will be 2 m behind the lead vehicle. Thus, the time gap may be used to determine a speed-dependent distance. However, in other embodiments, the request to track an object may include, for example, a physical distance to maintain behind the object regardless of the speed of the tracked object.
[0039] Another example request that may be generated by request generation system 230 may be a request to achieve and / or maintain a target speed. For example, the target speed may be related at least in part to the speed limit of the road the vehicle is traveling on. For example, the speed may correspond to a posted speed limit, a speed faster by a predetermined amount, such as 5 miles per hour (approximately 8.0 kilometers per hour), or a speed slower by a predetermined amount, such as 2 miles per hour (approximately 3.2 kilometers per hour). In other examples, the target speed may be a reduced speed based on the identification of an upcoming reduced speed limit, an upcoming intersection (e.g., determined from map data), or an upcoming traffic jam, or other factors.
[0040] Another example request that may be generated by request generation system 230 may be a request to achieve a desired speed at a certain distance from the current location. For example, such a request may include an indication of the desired speed and an indication of the distance. Such a request may be used, for example, when it is desirable to slow the vehicle to a slower speed in anticipation of an approaching traffic jam. In another example, the request may be used in response to identifying an upcoming speed limit change, for example, upon identifying a speed limit sign within a certain distance. In such an example, the request may include the speed associated with the speed limit on the sign and the distance to the sign.
[0041] The request generation system 230 may also generate a request to stop the vehicle. For example, such a request may include a distance or location where the vehicle should stop. Such a request may include an indication of zero speed and a distance where the vehicle should stop. In some examples, the distance may be a distance to or a location associated with a stop sign, a crosswalk, an intersection, or the like.
[0042] According to the above, different control requests may be generated in response to different objects, such as other vehicles or pedestrians, or certain environmental conditions, such as a posted speed limit, a topographical feature, a crosswalk, or an intersection. In some examples, request generation system 230 may determine a control request based on any number of criteria, including, but not limited to, the type of object or feature, the proximity of the object or feature to the vehicle, or the predicted action or trajectory of the vehicle and / or object. In some examples, request generation system 230 may receive information from perception system 222 and / or prediction system 224 and determine control request(s) based on the above information. As a non-limiting example, if perception system 222 identifies a pedestrian, prediction system 224 may determine that the pedestrian is walking along the road, and in response, request generation system 230 may generate a request to track the pedestrian. However, if prediction system 224 determines that the pedestrian may be crossing the road, request generation system 230 may generate a request to stop for the pedestrian. Furthermore, depending on the type of control request, the request generation system 230 may provide different information along with the request. Such information may include one or more of speed, distance, and / or time, e.g., a time gap to maintain for the tracked object. In other implementations, the request generation system 230 may also provide additional information along with the request. As a non-limiting example, the request generation system 230 may also identify constraints for implementing the request. In some examples, such constraints may include a range of acceptable inputs that satisfy the requirements of the request. For example, such constraints may include a minimum and / or maximum time gap range, a minimum and / or maximum reference speed, and / or a minimum and / or maximum acceleration to be used to implement the request. In one example, a request to achieve an increased speed may include a maximum acceleration to achieve the desired speed, e.g., to avoid excessive acceleration.In another example, a time gap range can be provided along with a request to track a lead vehicle. For example, as described above, the time gap may be used to determine a speed-dependent tracking distance, and thus the time gap range can be used to determine a range of acceptable distances. In the implementations described herein, the constraints may include a time range that encompasses the desired time. Thus, in the example of a desired 1.5-second time gap, the constraints generated by the request generation system 230 could include, for example, a minimum time gap of 1.2 seconds and a maximum time gap of 1.8 seconds. Of course, these values are for example purposes only, and other maximum and / or minimum time gaps could be used instead. In at least some examples, such ranges (e.g., time gaps) may not produce uniform results. In such examples, the command controller(s) 232 may incrementally penalize (e.g., exponentially, linearly, etc. from a central value) accelerations associated with the maximum and / or minimum values of the range. Similarly, when the demand generation system 230 generates a reference speed at which the vehicle is desired to travel, the demand may also include one or both of a maximum speed or a minimum speed. In some examples, by including a range, e.g., by including a minimum and / or maximum value along with the demand, the vehicle controller may better satisfy multiple demands.
[0043] The request generation system 230 may also associate other information with the request, which may be useful in determining vehicle control. For example, when the request generation component 230 generates a request regarding an object, it may also include instructions associated with the object. Such instructions may take the form of a flag, tag, or other information associated with the request. For example, consider a scenario in which a request is generated to follow a lead vehicle. When the vehicle slows down and stops, for example, at a red light, the driver of the lead vehicle may cause their vehicle to move forward or coast, for example, at a very slow speed. In some implementations, the vehicle 202 may accelerate to follow the wobble just mentioned. However, in other examples, the request may include instructions to treat the lead vehicle as stationary when its speed is below a threshold speed. Thus, for example, in the scenario described above, the vehicle may remain stopped instead of creeping to follow the lead vehicle. Conversely, if additional information is needed to safely traverse the intersection (e.g., when occlusion at the intersection prevents the vehicle 202 from acquiring sufficient information to safely proceed through the intersection), the additional instructions may include a request to "creep" forward (e.g., move forward very slowly to reduce occlusion).
[0044] In other examples, the command request may include other or additional instructions that define or constrain the movement of an object in the environment. For example, the command request may identify an object as irrelevant for collision purposes. In one example, when the vehicle 202 is traveling alongside another vehicle, such as the second additional vehicle 106 in FIG. 1 , the request generation system 230 may generate a request to drop behind, e.g., follow, or merge behind the second additional vehicle 106. The request may include information that attributes a predicted movement or a predicted speed to another object in the environment. For example, the request may include information indicating that the second vehicle is not involved in a collision, such as by predicting that the second vehicle will stay in its current lane, by predicting that the second vehicle will maintain a current or predicted speed, or by predicting that the second vehicle will continue along a predicted or current trajectory, and therefore, acceleration is not based on a potential collision with the second additional vehicle 106. In practice, what has just been described may result in vehicle 202 (or vehicle 102 in FIG. 1) being controlled to allow second additional vehicle 106 to move more gradually into position in front of vehicle 202 (or vehicle 102) compared to when second additional vehicle 106 is considered a blocking or otherwise advancing threat in front of vehicle 202 (or vehicle 102).
[0045] In additional examples, the demand generation system 230 can include commands to be more assertive when executing a demand. For example, when the vehicle 102 is at a congested intersection and has been at the intersection for a relatively long time, the demand may include, for example, a command to pass behind a vehicle and proceed through the intersection, or to achieve a certain speed more assertively. For example, the just-mentioned “assertive” command may be a command to the command controller 232 to increase gains, e.g., to calculate a higher acceleration, or to temporarily use a completely different command controller 232 to navigate the intersection. For example, an “assertive” command may cause a special controller, e.g., the third command controller 116-3, to determine the commanded acceleration for the demand. In some implementations, a controller may have pre-determined gains that may be higher, for example, than gains associated with other controllers. In other examples, an “assertive” command may indicate to the command controller 232 and / or the control decision system 234 to assign a higher weight to the demand / acceleration command. In at least some examples, such a third command controller 116-3 may be a modification to another controller rather than an additional controller.
[0046] The request generation system 230 can also provide information about the importance of the request. As a non-limiting example, consider a situation in which the vehicle 202 is approaching a distant vehicle. The request generation system 230 can generate a request to track the distant vehicle, but can indicate that the request is of lower importance, e.g., that the request may be deprioritized because the vehicle is very far away (and therefore, many attributes of the environment may change before the distant vehicle can be legally tracked).
[0047] Command controller 232 is configured to receive various command requests and generate acceleration commands, such as acceleration command 118. In the implementations described herein, an acceleration command may be generated for each command request. Command controller 232 may include multiple controllers, each configured to generate acceleration commands from one or more different types of input control requests. In at least some examples, each control request type may be associated with a different command controller.
[0048] In one example, a first controller of command controllers 232 may be configured to receive a reference velocity, e.g., a desired velocity, and determine an acceleration to achieve the desired velocity. The first controller may also be configured to receive a distance over which the desired velocity should be achieved. An example of the first controller is provided as Equation 1.
[0049]
number
[0050] Equation (1) generally expresses the control acceleration a x (e.g., the acceleration to which a vehicle is controlled in the longitudinal x-direction within the environment). As illustrated, v is the current velocity of the vehicle, and v ref is the desired speed, for example, specified by a control request. ref may be the reference acceleration specified by the command request, and the term k v (d) is the controller gain. In some examples, the term a refmay be specified by the demand generating system 230 as a way to provide additional flexibility in controlling the vehicle 200. For example, the demand generating system 230 may command a reference acceleration so that the vehicle follows a trajectory instead of a speed setpoint when implementing the demand. For example, the reference acceleration may serve as a preview for following an acceleration / deceleration trajectory. In an example, the controller gains are gain-scheduled as a function of the distance d specified in the command demand, e.g., the distance between the current location and the location at which the vehicle 202 should achieve the desired speed. The function may include a linear function, a nonlinear function, an exponential function, or the like. In some implementations, the controller may be gain-scheduled by a lookup table. In Equation 1, for example, the controller gains may be scheduled to increase for shorter distances so that the closer to the specified location, the more quickly the vehicle decelerates (or accelerates) to achieve the reference speed. In an example where a distance is not provided, such gains may be set to zero (0). Such a first controller may be associated with one or more of the speed control demand types and / or speeds for a given distance control demand type.
[0051] In another example, a second command controller of command controllers 232 may be configured to receive other types of control requests and determine a control acceleration. For example, the second controller may be a cascade controller configured to determine a command acceleration based on a control request type associated with stopping a vehicle or a control request type associated with tracking an object. An example of a second controller is illustrated by Equation 2. a x =-k v (d ratio ,t c )×[k p (d ratio ,t c )×[d des -d]-v rel ] (2)
[0052] Equation (2) is generally expressed as the control acceleration a x (e.g., the acceleration of the vehicle in the longitudinal x-direction within the environment). As illustrated, this second controller uses two control gains k v and k p each of which is a distance ratio d ratio and the estimated time to collision t (e.g., if both the vehicle 202 and the object maintain their current predicted trajectories). c The controller may be gain-scheduled as a function of the desired distance and the actual distance. For example, the function may be linear, nonlinear, exponential, or the like. In some examples, the controller may be gain-scheduled using a lookup table. Also, in this example, the distance ratio may be the ratio of the desired distance to the actual distance. Thus, for example, when the command request is a request to track a vehicle, the distance ratio may be the ratio of the desired distance at which the vehicle 202 should track an object, e.g., a lead vehicle, to the actual distance to the object. As described herein, the command request may include a time gap, and thus the desired distance may be calculated using equation (3). d des =v x ×t gap (3)
[0053] where v x corresponds to the current longitudinal velocity, and t gap corresponds to the desired time gap.
[0054] Also, in this example, the time to collision can be determined using equation (4).
[0055]
number
[0056] In equation (4), d represents the current distance from the object, and v relis generally expressed as a reference or desired velocity v ref and the actual speed v x It represents the relative velocity between v rel =v ref -v x (5)
[0057] Thus, the first controller shown in equation (1) and the second controller embodied in equation (2) are examples of controllers that utilize different controller gains to determine acceleration based on a received command request. However, in other examples, the command controller 232 may include different gain scheduling schemes. As a non-limiting example, the command controller 232 may achieve different types of behavior, e.g., different accelerations, by varying a controller gain, such as the second controller gain. As a non-limiting example, in an example where a received command request includes prioritizing an action, e.g., a request to proceed autonomously through a congested intersection, the second controller gain may be varied. p The gains may be scaled up (e.g., linearly, exponentially, non-linearly, etc.) to increase the initial acceleration command. In some examples, controller gains for certain cases may be predetermined and stored, for example, in a lookup table or other database for use by command controller 232. In some examples, other flags (additional information) passed to such a cascade controller modify the gains to cause vehicle 202 to "creep" forward (e.g., move forward slowly longitudinally). Of course, additional or alternative modifications for modifying such cascade controllers are contemplated.
[0058] In those instances where ranges are specified (e.g., maximum and minimum time gaps, maximum and minimum velocities, etc.), the controller may operate (or otherwise perform) to generate commands (commanded accelerations) associated with each of the maximum and minimum values of the provided ranges. In such instances, both commanded accelerations may be passed to the control decision component 234.
[0059] In some examples, the command controller 232 generates a single acceleration for each received control request. However, in other examples, the command controller 232 may generate multiple accelerations for a single command request. By way of non-limiting example, when a command request includes constraints such as minimum and / or maximum time gap, speed, and / or acceleration, different accelerations associated with one or more of these minimum and / or maximum values can be generated. Again, although described herein with respect to longitudinal acceleration, such description is not intended to be so limiting. In some examples, for example, the above controller may include additional controls such as, but not limited to, steering, steering rate, etc.
[0060] Once generated by command controller 232, the acceleration commands may be received by control decision component 234. Control decision component 234 is configured to determine the acceleration at which vehicle 202 should be controlled along the travel path, e.g., longitudinal acceleration along the travel path. For example, control decision component 234 may determine a control acceleration for the vehicle as a function of each of the acceleration commands generated by command controller 232. Exemplary techniques for determining a control acceleration based on multiple candidate accelerations are described, for example, in U.S. Patent Application Publication No. 2018 / 0129999, filed October 15, 2018, for "Responsive Vehicle Control," the entire disclosure of which is incorporated herein by reference.
[0061] In at least some examples, planning system 226 may iteratively determine such controls at various points in the future (either spatially and / or temporally) to determine a preferred trajectory for controlling vehicle 202. As a non-limiting example, the process described above may be used to determine commands (e.g., acceleration) for each of 1 second, 2 seconds, 3 seconds, and 4 seconds into the future, although any other spatial and / or temporal intervals are contemplated.
[0062] In at least one example, localization system 220, perception system 222, prediction system 224, and / or planning system 226 (and / or components of planning system 226) can process sensor data as described above and transmit their respective outputs over network(s) 238 to computing device(s) 240. In at least one example, localization system 220, perception system 222, prediction system 224, and / or planning system 226 can transmit their respective outputs to computing device(s) 240 at a particular frequency, after a predetermined period of time, in near real time, etc.
[0063] In at least one example, vehicle computing device(s) 204 may also include a system controller 228 that may be configured to control steering, propulsion, braking, safety, emitter, communication, and other systems of vehicle 202. The just-mentioned system controller(s) 228 may communicate with and / or control corresponding systems of driving module(s) 214 and / or other components of vehicle 202. For example, system controller(s) 228 may traverse the vehicle along a driving path determined by planning system 226, e.g., at an acceleration determined by control decision component 234.
[0064] In at least one example, sensor system(s) 206 may include LIDAR sensors, RADAR sensors, ultrasonic transducers, SONAR sensors, location sensors (e.g., GPS, compass, etc.), inertial sensors (e.g., inertial measurement units, accelerometers, magnetometers, gyroscopes, etc.), cameras (e.g., RGB, UV, IR, intensity, depth, etc.), microphones, wheel encoders, environmental sensors (e.g., temperature sensors, humidity sensors, light sensors, pressure sensors, etc.), etc. Sensor system(s) 206 may include multiple instances of each of these or other types of sensors. For example, LIDAR sensors may include individual LIDAR sensors positioned at the corners, front, rear, sides, and / or top of vehicle 202. As another example, camera sensors may include multiple cameras positioned at various locations around the exterior and / or interior of vehicle 202. Sensor system(s) 206 may provide input to vehicle computing device(s) 204. Additionally and / or alternatively, the sensor system(s) 206 may transmit sensor data over the network(s) 238 to the computing device(s) 240 at a particular frequency, after a predetermined period of time, in near real time, etc.
[0065] Additionally, vehicle 202 may also include one or more emitters 208 for emitting light and / or sound. In the example just described, emitter(s) 208 may include interior audio and visual emitters for communicating with occupants of vehicle 202. By way of example, and without limitation, interior emitters may include speakers, lights, signs, display screens, touchscreens, tactile emitters (e.g., vibration and / or force feedback), and mechanical actuators (e.g., seat belt tensioners, seat positioners, headrest positioners, etc.). Additionally, in the example just described, emitter(s) 208 also include exterior emitters. By way of example, and without limitation, exterior emitters may include light emitters (e.g., indicator lights, signs, light arrays, etc.) for visibly communicating with pedestrians, other drivers, other nearby vehicles, etc., or one or more audio emitters (e.g., speakers, speaker arrays, horns, etc.) for audibly communicating with pedestrians, other drivers, other nearby vehicles, etc. In at least one example, emitter(s) 208 may be positioned at various locations around the exterior and / or interior of vehicle 202 .
[0066] Additionally, vehicle 202 may also include communication connection(s) 210 that enable communication between vehicle 202 and other local or remote computing devices. For example, communication connection(s) 210 may facilitate communication with other local computing devices on vehicle 202 and / or driving module(s) 214. Communication connection(s) 210 may also enable the vehicle to communicate with other nearby computing devices (e.g., other nearby vehicles, traffic signals, etc.). Communication connection(s) 210 may also enable vehicle 202 to communicate with remote teleoperated computing devices or other remote services.
[0067] The communication connection(s) 210 may include physical and / or logical interfaces for connecting the vehicle computing device(s) 204 to another computing device or network, such as the network(s) 238. For example, the communication connection(s) 210 may enable Wi-Fi-based communications, such as over frequencies defined by the IEEE 802.11 standard, short-range radio frequencies such as BLUETOOTH®, or any suitable wired or wireless communication protocol that enables each computing device to interface with other computing devices.
[0068] In at least one example, the vehicle 202 may also include a driving module(s) 214. In some examples, the vehicle 202 may have a single driving module 214. In at least one example, if the vehicle 202 has multiple driving modules 214, the individual driving modules 214 may be located at opposite ends of the vehicle 202 (e.g., the front and rear, etc.). In at least one example, the driving module(s) 214 may include a sensor system for detecting conditions surrounding the driving module(s) 214 and / or the vehicle 202. By way of example, and without limitation, the sensor system(s) 206 may include wheel encoders (e.g., rotational encoders) for sensing the rotation of the wheels of the driving module, inertial sensors (e.g., inertial measurement units, accelerometers, gyroscopes, magnetometers, etc.) for measuring the position and acceleration of the driving module, cameras or other imaging sensors, ultrasonic sensors, LIDAR sensors, RADAR sensors, etc. for acoustically detecting objects in the vicinity of the driving module. Some sensors, such as wheel encoders, may be specific to the driving module(s) 214. In some cases, sensor systems on the driving module(s) 214 may overlap or complement corresponding systems on the vehicle 202 (e.g., sensor system(s) 206).
[0069] The driving module(s) 214 can include many of the vehicle systems, including a high-voltage battery, a motor for propelling the vehicle 202, an inverter for converting direct current from the battery to alternating current for use by other vehicle systems, a steering system including a steering motor and steering rack (which can be electric), a braking system including hydraulic or electric actuators, a suspension system including hydraulic and / or pneumatic components, a stability control system for distributing braking force to mitigate loss of traction and maintain control, an HVAC system, lighting devices (e.g., lighting devices such as headlights / taillights for illuminating the exterior surroundings of the vehicle), and one or more other systems (e.g., a cooling system, safety systems, other electrical components such as an on-board charging system, DC / DC converters, high-voltage junctions, high-voltage cables, charging systems, charge ports, etc.). Additionally, the driving module(s) 214 can include a driving module controller that can receive and preprocess data from the sensor system(s) to control the operation of various vehicle systems. In some examples, the driving module controller can include a processor and a memory communicatively coupled to the processor. The memory may store one or more modules for performing various functionality of the operational module(s) 214. Furthermore, the operational module(s) 214 also include communication connections that enable each operational module to communicate with other local or remote computing devices.
[0070] As described above, vehicle 202 may transmit sensor data to computing device(s) 240 via network(s) 238. In some examples, vehicle 202 may transmit raw sensor data to computing device(s) 240. In other examples, vehicle 202 may transmit processed sensor data and / or representations of sensor data (e.g., data output from localization system 220, perception system 222, prediction system 224, and / or planning system 226) to computing device(s) 240. In some examples, vehicle 202 may transmit sensor data to computing device(s) 240 at a particular frequency, after a predetermined period of time, in near real time, etc.
[0071] Computing device(s) 240 can receive sensor data (raw or processed) from vehicle 202 and / or one or more other vehicles and / or data collection devices and can perform driving planning functions, including some or all of the functionality attributed to planning system 226, including demand generation component 230, command controller 232, and / or control decision component 234. In at least one example, computing device(s) 240 can include processor(s) 242 and memory 244 communicatively coupled to processor(s) 242. In the illustrated example, memory 244 of computing device(s) 240 stores, for example, planning component 246. In at least one example, planning component 246 can correspond to some or all of planning system 226, described in detail above.
[0072] The processor(s) 216 of the vehicle 202 and the processor(s) 242 of the computing device(s) 240 can be any suitable processor capable of processing data and executing instructions to perform operations as described herein. By way of example, and without limitation, the processor(s) 216, 242 can include one or more central processing units (CPUs), graphics processing units (GPUs), or any other device or portion of a device that processes electronic data and converts it into other electronic data that can be stored in registers and / or memory. In some examples, integrated circuits (e.g., ASICs, etc.), gate arrays (e.g., FPGAs, etc.), and other hardware devices can also be considered processors so long as they are configured to execute encoded instructions.
[0073] The memories 218, 244 are examples of non-transitory computer-readable media. The memories 218, 244 may store an operating system and one or more software applications, instructions, programs, and / or data for implementing the methods described herein and functions attributed to the various systems. In various implementations, the memories may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), non-volatile / flash memory, or any other type of memory capable of storing information. The architectures, systems, and individual elements described herein may include many other logical, programmatic, and physical components, of which the ones shown in the accompanying figures are merely examples relevant to the description herein.
[0074] 2 is illustrated as a distributed system, in alternative examples, components of vehicle 202 may be associated with computing device(s) 240 and / or components of computing device(s) 240 may be associated with vehicle 202. That is, vehicle 202 may perform one or more of the functions associated with computing device(s) 24038, and vice versa. Furthermore, while the various systems and components are illustrated as separate systems, the illustration is by way of example only, and more or fewer separate systems may perform the various functions described herein.
[0075] FIG. 3 is a flowchart illustrating an example method involving vehicle control, as described herein. Specifically, FIG. 3 illustrates a method 300 in which objects in an environment are used to determine the acceleration of a vehicle along a driving path. The method illustrated in FIG. 3 is described with reference to the vehicles 102 and / or 202 shown in FIGS. 1 and 2 for convenience and ease of understanding. However, the method illustrated in FIG. 3 is not limited to being performed using the vehicles 102, 202, and can be implemented using any of the other vehicles described in this application, as well as vehicles other than those described herein. Furthermore, the vehicles 102, 202 described herein are not limited to performing the method illustrated in FIG. 3.
[0076] Method 300 is illustrated as a collection of blocks in a logical flow graph, which represent sequences of operations that may be implemented in hardware, software, or a combination thereof. In the context of software, the blocks represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by a processor, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as limiting, and any number of the described blocks may be combined in any order and / or in parallel to implement a process. In some embodiments, one or more blocks of the process may be omitted entirely. Additionally, method 300 may be combined, in whole or in part, with other methods.
[0077] At 302, method 300 may include receiving a request to navigate a vehicle relative to an object in an environment. For example, as described above, vehicle 202 may include or be associated with one or more computing devices 204, including planning system 226, which may include request generation component 230. Planning system 226 may receive information from one or more sensor systems 206, localization system 220, perception system 222, prediction system 224, map 236, and / or other sources to determine one or more objects or conditions in the environment, and request generation system 230 may determine one or more requests to navigate relative to the object / condition. In some examples, request generation system 230 may generate a request including an action and information for performing the action. The information for performing the action may include one or more of speed information, distance information, time information, and / or acceleration information, depending on the action. As described further herein, for example, multiple requests may be received, each corresponding to a different object or condition, and in at least some examples, the request type may be determined according to a policy for the vehicle (e.g., by evaluation of a temporal logic expression, evaluation of a scenario, etc.).
[0078] At 304, method 300 may include determining a controller from a plurality of controllers based on the request. For example, as described above, the request may specify different information, e.g., speed information, distance information, time information, and / or acceleration information, and planning system 226 may include a different command controller, such as command controller 232, for determining acceleration to execute the control request. In at least some examples, various request control types may be associated with command controllers. As a non-limiting example, speed control and speed control with distance type may be associated with a first command controller, while stop and / or track request types may be associated with a second command controller. In examples described further herein, different command controllers may have different controller gains. For example, different gains may be gain-scheduled as a function of different information provided in or discernible from the control request.
[0079] At 306, method 300 may include receiving additional information and / or constraints associated with the request. For example, as described herein, in addition to speed, distance, and / or time information, some requests may include additional constraints or features useful in determining the control acceleration for complying with the request. By way of non-limiting example, a request may raise or lower the priority of the requested action relative to other requests, including information against dogmatic behavior, including information against creeping behavior, etc. Additionally or alternatively, a request may include constraints, including, but not limited to, minimum, maximum, and / or ranges, associated with one or more parameters. For example, instead of or in addition to a target time gap to maintain with respect to the lead vehicle, the request may include a range of acceptable time gaps. Furthermore, a request to change the vehicle's speed to promote a smooth ride for passengers may include minimum and / or maximum acceleration for complying with the request.
[0080] At 308, method 300 may include determining an acceleration command by the controller and based on the additional information and / or constraints. For example, the acceleration command may be an acceleration (or acceleration range) at which the vehicle may be controlled to comply with the received request. Thus, for example, for each request, 308 may determine a different acceleration (or acceleration range). In the implementation described herein, the acceleration may be a longitudinal acceleration determined by the command controller.
[0081] At 310, method 300 may include determining an acceleration for controlling the vehicle based on the acceleration command and additional acceleration commands associated with the additional object (or feature or condition, as described herein). For example, as described above, the command controller may determine an associated commanded acceleration or commanded acceleration range for complying with each of a plurality of command requests. Such determination may be made according to method 300 by performing each of 302 through 308 for each additional object, environmental condition, etc. At 310, for example, each of the acceleration commands associated with each request may be considered to determine an acceleration for controlling the vehicle. The control acceleration may be determined, for example, as a function of each of the acceleration commands. Further, as described herein, the control acceleration may be determined iteratively, for example, based on all commands generated for a particular time frame or time period. For example, the commanded acceleration may be a longitudinal acceleration for a particular point (or time) on the track or travel path. In at least some examples, the determination at 310 may be performed for each of a series of future positions and / or times of the vehicle to determine a trajectory according to a receding horizon technique. In such examples, the object may be advanced according to the predicted movement of the object.
[0082] At 312, the method 300 may include controlling the vehicle according to the acceleration. As described above, the vehicle computing device(s) 204 may include one or more system controllers 228, which may be configured to control the steering, propulsion, braking, safety emitter, communication, and other systems of the vehicle 202. The just-mentioned system controller(s) 228 may communicate with and / or control corresponding systems of the driving module(s) 214 and / or other components of the vehicle 202. In at least one example, the system controller(s) 228 may receive the acceleration as a component of the trajectory and may communicate with and / or control corresponding systems of the driving module(s) 214 and / or other components of the vehicle 202 to navigate the vehicle 202 along the trajectory.
[0083] An example of method 300 will now be described with reference to FIG. 1 . Specifically, at 302, vehicle computing device(s) 110 may receive, e.g., using a planning system, multiple control requests 114 for controlling a vehicle passing through environment 100, e.g., with respect to objects within environment 100. The control requests may be generated by request generation system 112 and may include information about requested speed, distance, and / or time. At 304, vehicle computing device(s) 112 may determine, e.g., using the planning system and / or based on the individual control requests 114, a command controller, e.g., from command controller(s) 116, for calculating acceleration to comply with the individual control requests 114. For example, a first command controller may have a first controller gain that may be gain-scheduled as the vehicle 102's distance to a point within the distance, e.g., a point at which a lower speed is reached. The second command controller may have a second controller gain that may be gain-scheduled as a function of one or more of the distance to the object or location and / or the time to reach the object or location. For example, a control request to slow down to a certain speed at location 130 may be processed using the first command controller, while a second control request to track the first additional vehicle 104 may be processed using the second command controller. At 306, the vehicle computing device(s) 110 may also receive additional information and / or constraints associated with the request 114. For example, the additional information may include special options, as described herein, and the constraints may include maximum and / or minimum time gaps, accelerations, or speeds, etc.
[0084] At 308, the command controller(s) 116 can generate acceleration commands 118. Each of the acceleration commands can be associated with a received control request 114. The acceleration commands 118 can be a longitudinal acceleration and / or a range of longitudinal acceleration that causes the vehicle to comply with the request. As will be appreciated, the acceleration commands 118 can conflict with one another. Thus, at 310, the control decision system 120 can determine an acceleration for controlling the vehicle 102, for example, based on the acceleration commands. In some examples, the control decision system 120 can determine a control acceleration as a weighted average of each of the acceleration commands 118. At 312, the vehicle 102 can be controlled according to the acceleration determined by the control decision system 120.
[0085] As will be appreciated, objects in the environment change over time as the vehicle moves through the environment. Accordingly, method 300 may be performed iteratively. For example, the status of objects in the environment, including control requests, may be determined in near real time, e.g., at intervals of about 0.5 seconds to about 3 seconds. Furthermore, as objects change position, velocity, attitude, etc., relative to the vehicle, new objects or conditions may be included, and objects previously included in the control request may be removed, for example, because those objects / conditions now apply or no longer apply.
[0086] The various techniques described herein may be implemented in the context of software, such as computer-executable instructions or program modules, stored in computer-readable storage and executed by processors of one or more computers or other devices, such as those illustrated in the figures. Generally, program modules include routines, programs, objects, components, data structures, etc., that define operational logic for performing particular tasks or implement particular abstract data types.
[0087] Other architectures can be used to implement the described functions and are intended to be within the scope of this disclosure. Additionally, although a particular distribution of responsibilities has been defined above for purposes of explanation, the various functions and responsibilities may be distributed and divided in different manners, depending on the circumstances.
[0088] Similarly, software can be stored and distributed in a variety of ways and using a variety of means, and the particular software storage and execution configurations described above can be varied in many different ways. Thus, software implementing the techniques described above is not limited to the specifically described forms of memory, but can be distributed on various types of computer-readable media.
[0089] Example clauses A: An example autonomous vehicle includes a first controller for determining a first acceleration based at least in part on first input information and a first controller gain, a second controller for determining a second acceleration based at least in part on second input information and a second controller gain, and one or more processors; and a control unit that, when executed by the one or more processors, receives a first request to the autonomous vehicle to control the autonomous vehicle, the first request including first speed information and distance information; and controls the autonomous vehicle to execute the first request using the first controller. and receiving a second request to control the autonomous vehicle, the second request including the second velocity information; determining, using a second controller, a second acceleration based at least in part on the second command; determining a commanded acceleration for a point along the trajectory to control the vehicle based at least in part on the first acceleration and the second acceleration; and controlling the vehicle based at least in part on the trajectory.
[0090] B: The autonomous vehicle of Example A, wherein the first request includes a request to track an object, the distance information includes a time gap to maintain between the vehicle and the object, and the first controller gain is based at least in part on at least one of a distance between the vehicle and the object, a desired distance between the vehicle and the object, or a time associated with an estimated collision between the vehicle and the object.
[0091] C: The autonomous vehicle of Example A or Example B, wherein the second request includes a target speed at which to control the autonomous vehicle and a distance from the current location at which to achieve the target speed, and the second controller gain is based at least in part on the distance.
[0092] D: An autonomous vehicle as described in any one of Examples A to C, wherein the distance information includes a time gap range, the first speed information includes a first speed range, or the first request further includes an acceleration range for the first acceleration.
[0093] E: An autonomous vehicle as described in any one of Examples A to D, wherein the first request includes first additional information or the second request includes second additional information, and wherein the first additional information and the second additional information include at least one of an instruction to assign a constant velocity to the object, an instruction to assign a predicted movement to the object, an instruction to move the vehicle forward slowly from a stop, an instruction to increase the first acceleration or the second acceleration, or an instruction to lower the priority of the first request or the second request, respectively, relative to the other of the first request or the second request or other requests.
[0094] F: An example method includes receiving a first request to navigate with respect to a first condition within an environment, the first request including first information including at least one of first speed information, first distance information, or first time information; receiving a second request to navigate with respect to a second condition within the environment, the second request including second information including at least one of second speed information, second distance information, or second time information; determining, using a first command controller, first commands for controlling the vehicle in accordance with the first request; determining, using a second command controller, second commands for controlling the vehicle in accordance with the second request; and determining control commands for a point along the trajectory for controlling the vehicle based at least in part on the first commands and the second commands.
[0095] G: The method of Example F, wherein the first condition includes one or more stop signs in the environment of the first object closest to the vehicle, the first request is a request to stop the vehicle or a request to track the first object, the first information includes first distance information, the first distance information including a first distance from the current position of the vehicle to a stopping location or a second distance to maintain from the first object, and the first controller has a first controller gain based at least in part on one or more of the first distance, the second distance, a first desired distance between the vehicle and the first object, a second desired distance between the vehicle and the stopping location, a first time associated with the first distance, or a second time associated with the second distance.
[0096] H: The method of Example F or Example G, wherein the first condition includes a lead vehicle in the environment, the first request includes a request to track the lead vehicle, and the first information includes at least one of a speed of the lead vehicle and a distance to maintain behind the lead vehicle.
[0097] I: A method according to any one of Examples F to H, wherein the first command, the second command, and the control command are longitudinal accelerations along a direction of movement of the autonomous vehicle, the first controller includes a first gain, and the second controller includes a second gain different from the first gain.
[0098] J: A method according to any one of Examples F to I, wherein the first information or the second information includes at least one of a minimum time gap or a maximum time gap, the first speed information or the second speed information includes at least one of a minimum speed or a maximum speed, or the first request or the second request further includes at least one of a minimum acceleration or a maximum acceleration.
[0099] K: The method of any one of Examples F to J, wherein the second request is a request to achieve a second velocity at a certain distance from the current position, the second information includes second velocity information and second distance information, the second velocity information includes a second velocity, the second distance information includes a distance from the current position, and the second controller has a second controller gain based at least in part on the distance from the current position.
[0100] L: A method according to any one of Examples F to K, wherein the first request includes at least one of first additional information and the second request includes second additional information, the first instructions are further determined based at least in part on the first additional information, and the second instructions are further based at least in part on the second additional information.
[0101] M: The method of any one of Examples F to L, wherein the first condition includes a dynamic object and the first additional information includes instructions to associate a predetermined velocity or a predetermined trajectory with the first object.
[0102] N: The method of any one of Examples F through M, wherein the first additional information includes instructions to cause the first controller to determine an increased acceleration, and the method further includes modifying a gain associated with the first controller based at least in part on receiving the instructions.
[0103] O: The method of any one of Examples F to N, wherein the first additional information includes an instruction to lower the priority of the first request relative to the second or additional request, and the method further includes associating a weighting factor with the first instruction based at least in part on the instruction.
[0104] P: An exemplary non-transitory computer-readable medium storing a set of instructions that, when executed, cause one or more processors to perform operations including receiving a first request to navigate with respect to a first condition within an environment of the vehicle, the first request including first information including at least one of first speed information, first distance information, or first time information; receiving a second request to navigate with respect to a second condition within the environment, the second request including second information including at least one of second speed information or second distance information; determining, based at least in part on the first command controller, a first command for controlling the vehicle in accordance with the first request; determining, based at least in part on the second command controller, a second command for controlling the vehicle in accordance with the second request; and determining control commands for controlling the vehicle based at least in part on the first acceleration and the second acceleration.
[0105] Q: The non-transitory computer-readable medium of Example P, wherein the first request is a request to stop a vehicle or a request to track a first object associated with a first condition, the first information includes first distance information, the first distance information includes a first distance from a current position of the vehicle to a stopping position for the vehicle or a second distance to maintain from the first object, the first controller has a first controller gain, and the first controller is based at least in part on one or more of the first distance, the second distance, a first desired distance between the vehicle and the first object, a second desired distance between the vehicle and the stopping position, a first time associated with the first distance, or a second time associated with the second distance.
[0106] R: The non-transitory computer-readable medium of Example P or Example Q, wherein the second request is a request to achieve a second velocity at a reference distance from the current position, the second information including second velocity information and second distance information, the second velocity information including the second velocity, the second distance information including a distance from the current position, and the second controller has a second controller gain based at least in part on the reference distance from the current position.
[0107] S: The non-transitory computer-readable medium of any one of Examples P through R, wherein the first request includes first additional information or the second request includes second additional information, and wherein the first additional information and the second additional information include at least one of instructions to assign a constant velocity to a first object associated with the first condition or a second object associated with the second condition, instructions to assign a predicted motion to the first object or the second object, instructions to move forward slowly, instructions to increase or decrease the first acceleration or the second acceleration, or instructions to lower the priority of the first request or the second request, respectively, with respect to the other of the first request or the second request or other requests.
[0108] T: The non-transitory computer-readable medium of any one of Examples P to S, wherein the first information or the second information includes at least one of a minimum time gap or a maximum time gap, the first speed information or the second speed information includes at least one of a minimum speed or a maximum speed, or the first request or the second request further includes at least one of a minimum acceleration or a maximum acceleration, and the first controller determines a first maximum commanded acceleration and a first minimum acceleration, and the second controller determines a second maximum commanded acceleration and a second minimum acceleration.
[0109] Conclusion One or more examples of the techniques described herein have been described, and various modifications, additions, permutations, and equivalents thereof fall within the scope of the techniques described herein.
[0110] In describing examples, reference is made to the accompanying drawings, which form a part of this specification, showing, by way of illustration, specific examples of the claimed invention. It should be understood that other examples may be used and that changes or modifications, such as structural changes, may be made. Such examples, modifications, or modifications do not necessarily depart from the intended scope of the claimed invention. While steps herein may be presented in a certain order, in some cases the order may be changed so that certain inputs are provided at different times or in a different order without changing the functionality of the systems and methods described. The disclosed procedures may also be performed in a different order. In addition, the various calculations described herein need not be performed in the order disclosed, and other examples using alternative orders of calculations may be readily implemented. In addition to being reordered, in some examples, calculations may be decomposed into sub-calculations that have the same result.
Claims
1. 1. An autonomous vehicle, comprising: a first controller for determining a first acceleration based at least in part on the first input information and a first controller gain; a second controller for determining a second acceleration based at least in part on the second input information and a second controller gain; one or more processors; When executed by the one or more processors, the autonomous vehicle: receiving a first request to control the autonomous vehicle, the first request including first speed information and distance information for controlling the autonomous vehicle along a predetermined trajectory relative to a first object in an environment of the autonomous vehicle; determining, using the first controller, a first acceleration for controlling the autonomous vehicle according to the first demand; receiving a second request to control the autonomous vehicle, the second request including second velocity information for controlling the autonomous vehicle along the predetermined trajectory relative to a second object in the environment; Using the second controller, determine a second acceleration for controlling the autonomous vehicle according to the second demand; and determining a commanded acceleration for a future point along the predetermined trajectory for controlling the autonomous vehicle in relation to the first object and the second object based at least in part on reconciling the first acceleration and the second acceleration, the predetermined trajectory including a plurality of future points including the one future point, and the reconciling further includes determining the commanded acceleration as a function of the first acceleration, a first weighting factor associated with the first acceleration, the second acceleration, and a second weighting factor associated with the second acceleration; controlling the autonomous vehicle based at least in part on the commanded acceleration at the one future point; a memory storing processor-executable instructions for causing the processor to perform operations including: An autonomous vehicle comprising:
2. 2. The autonomous vehicle of claim 1, wherein the first request includes a request to track the first object, the distance information includes a time gap to maintain between the autonomous vehicle and the first object, and the first controller gain is based in part on at least one of a distance between the autonomous vehicle and the first object, a desired distance between the autonomous vehicle and the first object, or a time associated with an estimated collision of the autonomous vehicle and the first object.
3. 3. The autonomous vehicle of claim 2, wherein the second request includes a target speed at which to control the autonomous vehicle and a distance from a current location to achieve the target speed, and the second controller gain is based at least in part on the distance.
4. 4. The autonomous vehicle of claim 1, wherein at least one of the distance information includes a time gap range, the first speed information includes a first speed range, or the first request further includes an acceleration range for the first acceleration.
5. The first request includes first additional information, and / or the second request includes second additional information, and the first additional information and the second additional information are: instructions to assign a constant velocity to at least one of the first object or the second object; instructions for assigning a predicted movement to at least one of the first object or the second object; commanding the autonomous vehicle to move forward slowly from a stop; an instruction to increase the first acceleration or the second acceleration; or an instruction to lower the priority of each of the first request or the second request relative to the remainder of the first request or the second request or other requests; 5. The autonomous vehicle of claim 1, further comprising at least one of:
6. receiving a first request to navigate relative to a first object in an environment, the first request including first information including at least one of first speed information, first distance information, or first time information for controlling a vehicle along a predetermined trajectory relative to the first object in the environment; receiving a second request to navigate relative to a second object in the environment, the second request including second information including at least one of second speed information, second distance information, or second time information for controlling the vehicle along the predetermined trajectory in relation to the second object; determining, using a first command controller, a first command for controlling the vehicle relative to the first object in accordance with the first request; determining, using a second command controller, a second command for controlling the vehicle relative to the second object in accordance with the second request; determining a control command for controlling the vehicle along the predetermined trajectory relative to the first object and the second object based at least in part on reconciling the first command and the second command, the predetermined trajectory including a plurality of future points, and the reconciling further includes determining the control command as a function of the first command, a first weighting factor associated with the first command, the second command, and a second weighting factor associated with the second command; A method for providing the above.
7. the first object constitutes a first object closest to the vehicle; the first request is a request to stop the vehicle or a request to track the first object; the first information includes the first distance information, the first distance information including a first distance from a current position of the vehicle to a stop position or a second distance from the first object; The first command controller has a first controller gain based at least in part on one or more of the first distance, the second distance, a first desired distance between the vehicle and the first object, a second desired distance between the vehicle and the stopping position, a first time associated with the first distance, or a second time associated with the second distance.
7. The method of claim 6.
8. the first object constitutes a lead vehicle in the environment; the first request includes a request to track the lead vehicle; The first information includes at least one of a speed of the lead vehicle or a distance to keep behind the lead vehicle.
8. The method according to claim 6 or 7.
9. the first command, the second command, and the control command are longitudinal accelerations along a direction of travel of the vehicle; The first command controller includes a first gain, and the second command controller includes a second gain different from the first gain.
9. A method according to any one of claims 6 to 8.
10. the first information or the second information includes at least one of a minimum time gap or a maximum time gap; the first speed information or the second speed information includes at least one of a minimum speed or a maximum speed; or The first request or the second request further includes at least one of a minimum acceleration or a maximum acceleration.
10. The method according to any one of claims 6 to 9, characterized in that at least one of
11. the second requirement is a requirement to reach a second speed at a distance from a current position, the second information includes the second speed information and the second distance information, the second speed information including the second speed and the second distance information including the distance from the current location; The second command controller has a second controller gain based at least in part on the distance from the current position.
11. The method according to any one of claims 6 to 10.
12. A method according to any one of claims 6 to 11, characterized in that the first request includes first additional information including an instruction to associate a predetermined velocity or a predetermined trajectory with the first object.
13. The first request includes first additional information including instructions for the first command controller to determine an increasing acceleration, and the method further comprises: Varying a gain associated with the first command controller based at least in part on receiving the command.
13. The method of any one of claims 6 to 12, further comprising:
14. The first request includes an instruction to lower the priority of the first request relative to the second or additional requests, and the method further comprises: Associating the first command with the first weighting factor based at least in part on the instruction.
14. The method of any one of claims 6 to 13, further comprising:
15. 15. A non-transitory computer readable medium storing instructions executable by one or more processors to perform the method of any one of claims 6 to 14.
Citation Information
Patent Citations
Vehicle control system
JP2012030665A
Vehicle motion control apparatus
JP2012096623A
Vehicle, vehicle control device, vehicle control method, and vehicle control program
JP2017142679A
Responsive vehicle control
US10816987B2
Control method and control device for automatically driven vehicles
WO2018029758A1