Automatic lane changes by autonomous vehicles under low speed and dense traffic scenario is a challenging task, primarily due to the limited space between the vehicle making the change and the front vehicle which restricts the vehicle lane change maneuver. Existing automakers are focusing systems that execute lane changes that occur on a freeway. Existing systems cannot make the vehicle perform an auto lane change under extreme low speed in dense traffic conditions.
The present technology, roughly described, provides an autonomous vehicle that automatically implements a lane change in dense traffic condition. A minimum distance gap between the vehicle and a vehicle in front of the present vehicle is calculated for an autonomous vehicle, along with a best trajectory for changing lanes into a left adjacent lane or changing lanes into a right adjacent lane. The left or right lane change is triggered by the driver or the global planner that navigates the vehicle. During the next cycle, pre-calculated information is utilized by a planning module to determine the final speed of the trajectory to complete the final planning trajectory for the lane change.
In embodiments, a system for automatically navigating a vehicle between lanes includes a data processing system comprising one or more processors, memory, a planning module, and a control module. The data processing module can generate longitudinal samplings at different velocities by the vehicle, generate a minimum gap distance, between the vehicle and the closest in-path vehicle and based on the longitudinal samplings, required to make a lane change for the vehicle, and select at least one best trajectory from a plurality of trajectories from the current lane to an adjacent lane. The data processing system can also generate one or more commands to navigate the vehicle from the current lane to the adjacent lane along the selected best trajectory, wherein the data processing system automatically controls the vehicle to maintain minimum gap distance between the vehicle and the closest in-path vehicle during the lane change.
In embodiments, a non-transitory computer readable storage medium includes a program, the program being executable by a processor to perform a method for automatically navigating a vehicle between lanes. The method includes generating longitudinal samplings at different velocities by the vehicle, generating a minimum gap distance, between the vehicle and the closest in-path vehicle and based on the longitudinal samplings, required to make a lane change for the vehicle, and selecting at least one best trajectory from a plurality of trajectories from the current lane to an adjacent lane. The method can also include generating one or more commands to navigate the vehicle from the current lane to the adjacent lane along the selected best trajectory, wherein the data processing system automatically controls the vehicle to maintain minimum gap distance between the vehicle and the closest in-path vehicle during the lane change.
In embodiments, a method is disclosed for automatically navigating a vehicle between lanes. The method includes generating, by a data processing system stored in memory and executed by one or more processors, longitudinal samplings at different velocities by the vehicle, and generating, by the data processing system, a minimum gap distance, between the vehicle and the closest in-path vehicle and based on the longitudinal samplings, required to make a lane change for the vehicle. The data processing system can select at least one best trajectory from a plurality of trajectories from the current lane to an adjacent lane, and can generate one or more commands to navigate the vehicle from the current lane to the adjacent lane along the selected best trajectory, wherein the data processing system automatically controls the vehicle to maintain minimum gap distance between the vehicle and the closest in-path vehicle during the lane change.
The present technology, roughly described, provides an autonomous vehicle that automatically implements a lane change in dense traffic condition. A minimum distance gap between the vehicle and a vehicle in front of the present vehicle is calculated for an autonomous vehicle, along with a best trajectory for changing lanes into a left adjacent lane and changing lanes into a right adjacent lane. Lane change time with constant speed longitudinal profile is also generated. During the next cycle, this pre-calculated information is utilized by a planning module to determine the final speed of the trajectory to complete the final planning trajectory for the lane change. The present technology performs lane changes in dense traffic situations that are not possible by other systems.
The technical problem addressed by the present technology involves safely and successfully navigating from a current lane to an adjacent lane in dense traffic situations. Typical automated lane change systems require a significant amount of empty space in the current lane and then adjacent lane before the lane change may be considered. In dense traffic situations, the required amount of empty space is simply not available. As a result, prior lane change systems are unable to make safe lane changes, or anything change at all, and a dense system. This issue in autonomous computer-controlled vehicles results in an inefficient navigation and, often times, a failure to navigate to a desired point.
The present technology provides a technical solution to the technical problem of safely and effectively implementing a lane change in dense traffic situations in which there is little or no pre-existing space between vehicles in an adjacent lane to which the autonomous vehicle intends to navigate. The solution is to plan for a large enough gap and selecting the best trajectory into either the left or the right adjacent lane. During the cycle subsequent to the planning, the lane change planning can be finalized and executed. The solution provided by the present system enables very much more efficient navigation of an autonomous vehicle, thereby reducing computing resources used by the system to navigate the autonomous vehicle to a destination.
IMU 105 may track and measure the autonomous vehicle acceleration, yaw rate, and other measurements and provide that data to data processing system 125.
Cameras 110, radar 115, and lidar 120 may form all or part of a perception component of autonomous vehicle 110. The autonomous vehicle may include one or more cameras 110 to capture visual data inside and outside of the autonomous vehicle. On the outside of the autonomous vehicle, multiple cameras may be implemented. For example, cameras on the outside of the vehicle may capture a forward-facing view, a rear facing view, and optionally other views. Images from the cameras may be processed to detect objects such as streetlights, stop signs, lines or borders of one or more lanes of a road, and other aspects of the environment for which an image may be used to better ascertain the nature of an object than radar. To detect the objects, pixels of images are processed to recognize objects, and singular images and series of images. The processing may be performed by image and video detection algorithms, machine learning models which are trained to detect particular objects of interest, and other techniques.
Radar 115 may include multiple radar sensing systems and devices to detect objects around the autonomous vehicle. In some instances, a radar system may be implemented at one or more of each of the four corners of the vehicle, a front of the vehicle, a rear of the vehicle, and on the left side and right side of the vehicle. The radar elements may be used to detect stationary and moving objects in adjacent lanes as well as in the current lane in front of and behind the autonomous vehicle. Lidar may also be used to detect objects in adjacent lanes, as well as in front of and behind the current vehicle.
Data processing system 125 may include one or more processors, memory, and instructions stored in memory and executable by the one or more processors to perform the functionality described herein. In some instances, the data processing system may include a planning module, a control module, and a drive-by wire module. The modules communicate with each other to receive data from a perception component plan actions such as lane changes, and generate commands to execute lane changes. The data processing system 125 is discussed in more detail below with respect to the system of
Acceleration 130 may receive commands from the data processing system to accelerate. Acceleration 130 may be implemented as one or more mechanisms to apply acceleration to the propulsion system 150. Steering module 135 controls the steering of the vehicle, and may receive commands to steer the vehicle from data processing system 135. Brake system 140 may handle braking applied to the wheels of autonomous vehicle 110, and may receive commands from data processing system 125. Battery system 145 may include a battery, charging control, battery management system, and other modules and components related to a battery system on an autonomous vehicle. Propulsion system 150 may manage and control propulsion of the vehicle, and may include components of a combustion engine, electric motor, drivetrain, and other components of a propulsion system utilizing an electric motor with or without a combustion engine.
Planning module 212 may receive and process data and information received from the perception component to plan actions for the autonomous vehicle. The actions may include navigating from the center of the lane to an adjacent lane with a minimum gap distance between the present vehicle and the closest in path vehicle (CIPV), navigating from a current lane to adjacent lane, stopping, accelerating, turning, and performing other actions. Planning module 212 may generate samples of trajectories between two lines or points, analyze and select the best trajectory, and provide a best trajectory for navigating from one point to another to control 214. Planning module is discussed in more detail with respect to the system of
Control module may receive information from the planning module, such as a selected trajectory over which a lane change should be navigated. Control module 214 may generate commands to be executed in order to navigate the selected trajectory. The commands may include instructions for accelerating, breaking, and turning to effectuate navigation along the best trajectory.
Drive-by wire module 216 may receive the commands from control 214 and actuate the autonomous vehicle navigation components based on the commands. In particular, drive-by wire 216 may control the accelerator, steering wheel, brakes, and turn signals of the autonomous vehicle.
The logic for finding the best lane change directory under constraints 246 receives the lane offset from decider 238 and the lane change decision from decision maker 240 and determines the best lane change. Module 246 determines longitudinal samples for current speed and time duration and possible lateral samples for lane change offset, based at least in part on the received decisions from decider 238 and decider 240, and checks constraints and costs for each sampling. Module 246 then provides the best lane change trajectory data to adaptive cruise control 250. In some instance, the sampling and/or the determination of the best trajectory can be determined continuously in each computing cycle. Minimum (e.g. adaptive) distance gap preparation module finds the minimum lane change distance for the left or right lane change—the minimum gap distance—based on existing sampling. In some instances, the existing sampling is provided from sampling created from module 246 during previous computing cycles, and the minimum distance gap is determined continuously in each computing cycle. The minimum gap distance used to indicate the minimum distance to make a lane change is continuously provided to adaptive cruise control (ACC) 250 along with the best lane change trajectory. ACC also receives yaw rate, acceleration data, and optionally other data from IMU 252, and receives information regarding the closest in-path vehicle from CIPV module 244. The ACC 250 then outputs the best planning trajectory to the control module.
Perception data is received and processed to generate an object list and lane detection data at step 310. Perception data may include image data from one or more cameras, data received from one or more radars and lidar, GPS data, and other data. The perception data may be received by the perception component and may be processed by logic associated with the perception component. Once the object list and lane detection data are generated, they are provided to the data processing system. In some instances, receiving and processing perception data is performed on an ongoing basis, and the listed order of step 310 is for purposes of discussion only with respect to method of
A driver or global navigation system can trigger a left or right lane change at step 315. The triggering even may include a voice command received from a user, detection of less traffic in an adjacent lane, a navigation plan to a selected destination, or other triggering event. The data processing system may plan a lane change in dense traffic at step 320. The lane change may be in response to the triggering event at step 320, and may utilize the object list and lane detection data received at step 310. The lane change deciding process, for a lane change in dense traffic, can include deciding to stay in the current lane, or planning a change from a center reference line in a current lane to a center reference line in an adjacent lane. Lane change planning can be performed all or in part by planning module 212 Planning a lane change in dense traffic from a center reference line in a current lane to a center reference line in an adjacent lane may include generating a plurality of sampled trajectories, analyzing the trajectories to determine the best trajectory for each lane, determining a minimum gap distance in which to perform the lane change, and selecting the best trajectory. More details for planning a lane change to an adjacent lane is discussed with respect to the method of
The accessed minimum gap distance to the front vehicle (CIPV) based on the adjacent lane change data for the left or right adjacent lane is accessed at step 325. The minimum gap distance is accessed by the ACC unit and used to maintain the pre-calculated minimum distance between the current vehicle and the CIPV at step 330. The minimum gap distance is provided to the ACC on a continuing basis, for example in the computing cycle immediately following the cycle in which the minimum gap distance was calculated. Other data may be accessed by the ACC as well, including the closest in path vehicle information, IMU data, and best trajectories for a lane change.
The best trajectory is selected from the trajectories determined for each adjacent lane during the previous cycle and accessed at step 325, for example by the ACC unit. The desired speed for the selected trajectory is determined at step 335. The desired speed is determined from a sampling of speeds generated in the previous cycle and accessed by the planning module (e.g., ACC unit). In some instances, the ACC unit of the planning module may determine the best speed at which to navigate the selected trajectory based on detected objects and gap distances.
A safety check is performed at step 340. A safety check may include confirming all obstacles exist along the selected trajectory, no collisions will occur along the selected trajectory, and that the autonomous vehicle can physically navigate along the selected trajectory. More details for performing a safety check are discussed with respect to
The control module generates commands to navigate the autonomous vehicle along the selected trajectory at step 345. The commands may include how and when to accelerate the vehicle, apply braking by the vehicle, and the angle of steering to apply to the vehicle and at what times. The commands are provided by the control module to the drive-by wire module. The generated commands are executed by the drive-by wire module at step 350. The drive-by wire module may control the autonomous vehicle brakes, acceleration, and steering wheel, based on the commands received from the control module. By executing the commands, the drive-by wire module makes the autonomous vehicle proceed along the selected trajectory from the center reference line in the current lane to the center reference line in the selected adjacent lane.
Road lanes are detected from the camera image data at step 430. Road lane detection may include identifying the boundaries of a particular road, path, or other throughway. The road boundaries and lane lines may be detected using pixel clustering algorithms to recognize certain objects, one or more machine learning models trained to recognize road boundary and lane line objects within images, or by other object detection methods.
Radar and lidar data are received at step 440, and the radar and lidar data may be processed to identify objects within the vicinity of the autonomous vehicle, such as between zero and several hundred feet of the autonomous vehicle at step 450. The processed radar and lidar data may indicate the speed, trajectory, velocity, and location of an object near the autonomous vehicle (step 460). Examples of objects detectable by radar and lidar include cars, trucks, people, and animals.
An object list of the objects detected via radar, lidar, and objects of interest from the camera image data is generated at step 470. For each object in the list, information may be included such as an identifier for the object, a classification of the object, location, trajectory, velocity, acceleration of the object, and in some instances other data. The object list, road boundaries, detected lanes is provided to a planning module at step 480.
A center reference line for a current lane is generated at step 510. The center reference line is generated by detecting the center of the current lane, which is detected from camera image data. A center reference line in an adjacent lane on the left is then generated at step 520. A longitudinal sampling to determine the minimum gap distance is generated at step 530. The sampling determines the distance and times at which the current vehicle would reach the closest vehicle in the current lane different velocities. The sampling data is used the planning module (e.g., ACC), and the ACC then determine the best speed at which to proceed with the lane change to a selected adjacent lane.
A sampling of trajectories from the center reference line of the current lane to the center reference line of the adjacent lanes, along with different lateral interval distances, is generated at step 540. The sampling of trajectories may include a variety of trajectories from the center reference to various points along any adjacent lane center reference lines. Each generated trajectory is evaluated and ranked at step 550. Evaluating each trajectory within the plurality of sample trajectory lines includes determining objects in each trajectory, determining constraint considerations, and determining the cost of each trajectory. Evaluating and ranking the generated trajectories is discussed in more detail below with respect to the method of
Any objects determined to be in a trajectory are identified at step 610. When an object is determined to be in a particular trajectory, the ranking of that battery is reduced, in order to avoid collisions with the object while navigating the particular trajectory. Constraint considerations for each trajectory are determined at step 620. In some instances, one or more constraints may be considered for each trajectory. The constraints may include a lateral boundary, lateral offset, lateral speed, lateral acceleration, lateral jerk, and curvature of lane lines. Each constraint may increase or reduce the ranking of a particular trajectory based on the value of a constraint and thresholds associated with each particular constraint. A cost of each sample trajectory is determined at step 630. Examples of costs include a terminal offset cost, average offset costs, lane change time duration cost, lateral acceleration costs, and lateral jerk cost. When determining a cost, the ranking may be decreased if a particular cost-a threshold or out of a range, and the ranking may be increased if the cost is below a threshold, or within a desired range. A lane change minimum distance is determined at step 640. The lane change minimum distance is the minimum distance required to achieve the lane change into a particular lane. A score is assigned to each trajectory at step 650 based on analysis of the objects in the trajectory, constraints considered for the trajectory, and costs associated with each trajectory.
The process of performing a lane change in dense traffic conditions requires, among other things, that a vehicle be aware of and plan to change lanes with more space between the vehicle and a vehicle in front of it in the same lane. Typical cruise control systems do not provide for leaving this much space in front of a vehicle, and therefore typical cruise control systems cannot achieve lane changes in dense traffic. As illustrated in the illustration of
The components shown in
Mass storage device 1030, which may be implemented with a magnetic disk drive, an optical disk drive, a flash drive, or other device, is a non-volatile storage device for storing data and instructions for use by processor unit 1010. Mass storage device 1030 can store the system software for implementing embodiments of the present technology for purposes of loading that software into main memory 1020.
Portable storage device 1040 operates in conjunction with a portable non-volatile storage medium, such as a flash drive, USB drive, memory card or stick, or other portable or removable memory, to input and output data and code to and from the computer system 1000 of
Input devices 1060 provide a portion of a user interface. Input devices 1060 may include an alpha-numeric keypad, such as a keyboard, for inputting alpha-numeric and other information, a pointing device such as a mouse, a trackball, stylus, cursor direction keys, microphone, touch-screen, accelerometer, wireless device connected via radio frequency, motion sensing device, and other input devices. Additionally, the system 1000 as shown in
Display system 1070 may include a liquid crystal display (LCD) or other suitable display device. Display system 1070 receives textual and graphical information and processes the information for output to the display device. Display system 1070 may also receive input as a touch-screen.
Peripherals 1080 may include any type of computer support device to add additional functionality to the computer system. For example, peripheral device(s) 1080 may include a modem or a router, printer, and other device.
The system of 1000 may also include, in some implementations, antennas, radio transmitters and radio receivers 1090. The antennas and radios may be implemented in devices such as smart phones, tablets, and other devices that may communicate wirelessly. The one or more antennas may operate at one or more radio frequencies suitable to send and receive data over cellular networks, Wi-Fi networks, commercial device networks such as a Bluetooth device, and other radio frequency networks. The devices may include one or more radio transmitters and receivers for processing signals sent and received using the antennas.
The components contained in the computer system 1000 of
The foregoing detailed description of the technology herein has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen to best explain the principles of the technology and its practical application to thereby enable others skilled in the art to best utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the technology be defined by the claims appended hereto.