This relates generally to an autonomous driver assistance system of a vehicle, and specifically relates to automatic parking planning features of an autonomous driver assistance system.
With Autonomous Driver Assistance System (ADAS) and Autonomous Vehicle becoming more popular, a lot of companies started to incorporate ADAS into their products (e.g., vehicles). Auto-Parking (AP) (or self-parking), with the advantages of operating in a lower speed and a structured environment with less uncertainty and randomity than other driving environment such as traffic-packed roads, is identified as a common feature in ADAS software development.
Currently, there are several prominent methods to approach the auto-parking problem. Some of them rely on adding heuristic into well-known searching processes, such as A* and RRT*, while other systems try to blend vehicle kinematic models into sampling during searching, such as a hybrid A* search, in order to generate a more viable trajectory for the vehicle.
Nevertheless, those prominent methods incur tremendous computational cost due to either the delicate model that they blend in or the unreasonable and unnecessary randomity during sampling. A better and more efficient AP system is desired.
An auto parking system of a vehicle is disclosed. The auto parking system includes a planner initialization module configured to transform the key information and interfaces into favorable data structure for planner module to use; a path planning module configured to perform tree iteration of a start tree from the start state and an end tree from the end state and connect nodes from the start tree and the end tree to generate path data; and a trajectory planning module configured to receive the path data from the path planning module and construct a trajectory of the vehicle based on the path data; where the start tree and end tree comprise two different types of tree structures.
In the following description of preferred embodiments, reference is made to the accompanying drawings which form a part hereof, and in which it is shown by way of illustration specific embodiments, which can be practiced. It is to be understood that other embodiments can be used and structural changes can be made without departing from the scope of the embodiments of this disclosure.
In general, one aspect of this disclosure relates to a hybrid auto-park planner developed through combining and modifying existing sampling-based planning methods. The disclosed hybrid auto-park planner can increase the chance of a successful planning with more reasonable maneuver behavior. Another aspect of this disclosure relates to several new sampling methods of sampling the searching configuration space to promote sampling reasonability based on given scenarios. In yet another aspect, computationally efficient collision check methods are disclosed.
In a first aspect of the disclosure, embodiments of an AP planner are disclosed.
The AP planner 104 can include a number of sub-modules. In one example, as illustrated in
The planner initialization module 300 can include a number of different sub-modules as shown in
Overall, as indicated in
The OGM module 304 can be constructed with a binary occupancy grid map (i.e., the OGM map). As an example, the OGM map can be a local map with a reasonable size of 30 m×30 m and a resolution (i.e., grid cell width) of 0.25 m. The OGM module 304 can utilize the orientation-invariant property of the disk to approximate the vehicle shape into 3 disks and further use several rectangles which matches the OGM resolution to represent each disk shape. The rectangles can be saved as a look-up table that could be retrieved for collision checks. The OGM module 304 can perform a state occupancy status check by using the disk decomposition method to check its occupancy status based on a selected state. The OGM module 304 can also perform a path collision free check by using the state occupancy status check to check the sampled state occupancy status based on a pre-set checking density. In some embodiments, considering program running efficiency and the physical shape of the vehicle, it may not be necessary to iterate every sampled point along a path segment to perform the collision check.
Given the specific scenario configuration in parking lots and garages, orientational agile and directional flexible maneuver can be considered during path planning. A combo curve routing (CC routing) method that uses a set of combinations of straight lines and curve lines can be implemented by the OGM module 304 to form a solution space. A collision-free path that connects the start state and the end state can be calculated using the CC routing method.
Referring back to
where a linear mapping relationship is assumed.
This method avoids random sampling with no heuristic. The sampling range and the angle of the sampled state plays a dominant factor for sampling quality. By restricting the sampling range and constructing a rule-based sampled state's angle formula, more heuristic can be added into the sampling method to significantly increase the sampling quality and increase the sampling efficiency. This is another aspect of the present disclosure.
The combo state sampler 308 is designed to work with the end tree 312 that originates from the target parking slot. The target parking slot is usually a highly structured environment that is typically narrow and often restricted by adjacent vehicles or other obstacles. Because of the positive availability of the pose of the target parking slot due to its highly structured nature, more heuristic is added to help grow the end tree out of the target parking slot. In one embodiment, the combo state sampler 308 can serve as a sampling agent that carries property of the Hybrid A* sampling method, but with more customized heuristic added.
With the vehicle model incorporated, the combo state sampler 308 can be in a sampling state in which the vehicle is either operating in a monodirectional straight line or in vehicle's maximum steering wheel angle, both of which at a fixed distance. Because the vehicle's pose and the target parking slot pose are both available, the direction (along the orientation axis of target parking slot) of growing trees can be easily set. To reduce redundancy and repetition, a visited state list can be set up to prevent repetitious sampling.
Referring back to
The tree iteration module 502 conducts an iteration of the start tree (modified RRT* tree) during path planning. The tree iteration module 502 also conducts an iteration of the end tree (modified Hybrid A* tree) but only when the number of the end tree's nodes does not exceed a predefined threshold. The reason for that is 1) the end tree's node number will grow exponentially if not limited, which would consume too much computation resources for routing, and 2) once the end tree grows out of the narrow parking lot, the iteration result of the start tree plays a more dominant role of a successful connection between the start tree and the end tree.
The two trees can continue iterating until the connection justification module 504 determines with a threshold confidence level that the two trees can be connected. Once this determination is made, information about the two trees can be passed on to the tree connection module 506, which can connect the two trees. If the confidence level of a connection can be made by the two trees does not meet the threshold, the tree iteration module 502 will continue to iteration of the trees.
Normally, the start tree and the end tree are connected in a sparse way that would be difficult to translate into a refined maneuver of the vehicle (e.g., similar to one that a human driver would perform) due to the limitations of the CC routing method. The tree interpolation module 508 can interpolate nodes between these sparse nodes to expand solution space for the downstream tree optimization module 510.
After tree interpolation is completed, a more refined path pattern can be generated by the tree optimization module 510 based on the existing tree connection result. One of the core functions of the tree optimization module 510 is to rewire the current node and iterate over all existing nodes trying to find a new parental-child relationship between different nodes with lower cost. When the rewire function is triggered, the target nodes can be rewired using the same CC routing method discussed above.
Because the CC routing method used by the previous modules operates the vehicle in its agilest maneuver, e.g., maximum steering angle, there may still be some corner cases containing unreasonable path pattern even after rewiring. For example, when performing the parking maneuver, human drivers are not always limited to steering the vehicle in straight line and drastically turning the vehicle. The rewiring method is modified accordingly by expanding the turning radius space, where the planner can carry out rewiring according to the CC routing method with different vehicle turning radius. This will achieve a more refined path pattern.
Referring again to
The path data cleaning module 702 can serve the purpose of eliminating directional oscillation data before trajectory planning. The trajectory segmentation module 704 can separate the planned path into segments based on the number of cusp points that are indicators of a full stop and directional reversal. The total task time is a fixed number and the trajectory segmentation module 704 can allocate time to different path segments proportionally to their lengths.
The trajectory construction module 706 can construct the trajectory using an S Curve method that defines a time-symmetric stop-to-stop maneuver. To take comfortability into account as well, a curvature changing rate indicator can adjust the trajectory's peak speed based on a scaled average curvature changing rate of a trajectory.
The trajectory smoothening module 708 can smoothen the generated trajectory data without violating the kinematic and dynamic constraints. An exemplar result of a perpendicular parking case is shown in
Referring back to
Vehicle control system 900 can include one or more cameras 916 capable of capturing image data (e.g., video data) of the vehicle's surroundings. In one embodiment, the one or more cameras 906 can be front facing and/or rear facing capable of detecting objects around the vehicle. Additionally or alternatively, vehicle control system 900 can also include one or more distance sensors 917 (e.g., radar, ultrasonic, and LIDAR) capable of detecting various characteristics of the vehicle's surroundings. Additionally, vehicle control system 900 can include a speed sensor 919 for determining the speed of the vehicle. The camera(s) 916, distance sensor(s) 917, and speed sensor 919 can be part of the ADAS of the vehicle.
Additionally, vehicle control system 900 can include one or more user interfaces (UIs) 918 configured to receive input from the driver to control the movement of the vehicle. In one embodiment, the UIs 918 can include an auto-parking on/off selector that would allow a user (driver) to engage/disengage the auto-parking feature of the vehicle.
Vehicle control system 900 includes an on-board computer 910 that is operatively coupled to the cameras 916, distance sensors 917, speed sensor 919, and UIs 918. The on-board computer 910 is capable of receiving the image data from the cameras and/or outputs from the sensors 917, 919. The on-board computer 910 can also receive outputs from the UIs 918.
In accordance with one embodiment of the disclosure, the on-board computer 910 can be configured to operate the auto-parking system 900 in response to the data/outputs from the camera(s) 916, sensor(s) 917, speed sensor 919, and UIs 918.
In some examples, the on-board computer 910 may include, among other modules, a I/O interface 902, a physical processing unit 904, a storage unit 906, and a memory module 908. The on-board computer 910 may be specialized to perform the auto-parking maneuver in the embodiments described above.
I/O interface 902 may be configured for two-way communication between on-board computer 910 and various components of vehicle control system 900, such as camera(s) 916, distance sensor(s) 917, UIs 918, speed sensor 919, as well as a controller 920. I/O interface 902 may send and receive the data between each of the devices via communication cables, wireless networks, or other communication mediums.
Processing unit 904 may be configured to receive signals and process the signals to determine a plurality of conditions of the operation of the vehicle, for example, through controller 920. For example, processing unit 904 can receive image/video data from camera(s) 916 and/or sensor data from distance sensor(s) 917. The processing unit 904 can determine based on the image/video and sensor data the boundary of the parking space and whether there is another object in the path of the vehicle by analyzing the image/video and sensor data. In some embodiments, the processing unit 904 can determine a distance to other objects. Processing unit 904 can also receive user input (e.g., switching on/off AP) from UIs 918. Additionally, processing unit 904 can also receive the speed of the vehicle from the speed sensor 919.
Processing unit 904 may also be configured to generate and transmit command signals, via I/O interface 902 to controller 920 in order to actuate the various actuator systems 930 of the vehicle control system 900 as described below.
Storage unit 906 and/or memory module 908 may be configured to store one or more computer programs that may be executed by on-board computer 910 to perform functions of system. For example, storage unit 906 and/or memory module 908 may be configured to process instructions to enable the auto parking functions described herein.
Vehicle control system 900 may also include a controller 920 connected to the on-board computer 910 and capable of controlling one or more aspects of vehicle operation, such as performing auto parking operations using instructions from the onboard computer 910.
In some examples, the controller 920 is connected to one or more actuator systems 930 in the vehicle. The one or more actuator systems 930 can include, but are not limited to, a motor (or engine) 931, battery system 933, steering 935, and brakes 936. The on-board computer 910 can control, via controller 920, one or more of these actuator systems 930 during vehicle operation, for example, to control the speed and direction of the vehicle when auto-parking is engaged, using the motor 931, battery system 933, steering 935, brakes 936, and other actuator systems (not illustrated in
A person skilled in the art can further understand that, various exemplary logic blocks, modules, submodules, circuits, and algorithm steps described with reference to the disclosure herein may be implemented as specialized electronic hardware, computer software, or a combination of electronic hardware and computer software. For examples, the modules and submodules may be implemented by one or more processors to cause the one or more processors to become one or more special purpose processors to executing software instructions stored in the computer-readable storage medium to perform the specialized functions of the modules/units.
The flowcharts and block diagrams in the accompanying drawings show system architectures, functions, and operations of possible implementations of the system and method according to multiple embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent one module, one program segment, or a part of code, where the module, the program segment, or the part of code includes one or more executable instructions used for implementing specified logic functions. It should also be noted that, in some alternative implementations, functions marked in the blocks may also occur in a sequence different from the sequence marked in the drawing. For example, two consecutive blocks actually can be executed in parallel substantially, and sometimes, they can also be executed in reverse order, which depends on the functions involved. Each block in the block diagram and/or flowchart, and a combination of blocks in the block diagram and/or flowchart, may be implemented by a dedicated hardware-based system for executing corresponding functions or operations, or may be implemented by a combination of dedicated hardware and computer instructions.
As will be understood by those skilled in the art, embodiments of the present disclosure may be embodied as a method, a system or a computer program product. Accordingly, embodiments of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware for allowing specialized components to perform the functions described above. Furthermore, embodiments of the present disclosure may take the form of a computer program product embodied in one or more tangible and/or non-transitory computer-readable storage media containing computer-readable program codes. Common forms of non-transitory computer readable storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM or any other flash memory, NVRAM, a cache, a register, any other memory chip or cartridge, and networked versions of the same. Each of the modules and submodules of
Although embodiments of this disclosure have been fully described with reference to the accompanying drawings, it is to be noted that various changes and modifications will become apparent to those skilled in the art. Such changes and modifications are to be understood as being included within the scope of embodiments of this disclosure as defined by the appended claims.