A CUDA-based static obstacle processing method and processing system

By employing CUDA kernel functions on the GPU for parallel prediction and fusion of static obstacles, the contradiction between computational speed and accuracy in automatic parking is resolved, achieving efficient static obstacle localization.

CN116740678BActive Publication Date: 2026-04-21ZHEJIANG SMART INTELLIGENCE TECH CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
ZHEJIANG SMART INTELLIGENCE TECH CO LTD
Filing Date
2023-06-20
Publication Date
2026-04-21

AI Technical Summary

Technical Problem

In existing technologies, static obstacle fusion schemes in the field of automatic parking suffer from a trade-off between computational speed and accuracy, resulting in slow computation speed and low accuracy.

Method used

A CUDA-based processing approach is adopted to perform static obstacle prediction and fusion on the GPU through parallel computing. CUDA kernel functions are used to perform parallel computing on the prediction and fusion of static obstacles on the GPU. Combined with the grid map movement and fusion algorithm, the computing speed and accuracy are improved.

Benefits of technology

It significantly improves computing speed, shortens the prediction and fusion time of static obstacles, ensures the real-time performance and computing accuracy of the algorithm, and improves the accuracy of static obstacle localization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116740678B_ABST
    Figure CN116740678B_ABST
Patent Text Reader

Abstract

This invention provides a CUDA-based method and system for processing static obstacles, relating to the field of autonomous driving technology. The invention requires calling pre-written CUDA kernel functions to predict static obstacles in the current frame based on the fused data of static obstacles from the previous frame and the vehicle's position information in the current frame. This yields predicted obstacle data for the current frame. The CUDA kernel function then fuses this predicted data with the actual obstacle data to obtain fused obstacle data. This parallel computation of static obstacle prediction and fusion on the GPU using CUDA kernel functions significantly improves computation speed and shortens the computation time for static obstacle prediction and fusion compared to existing CPU-based methods that require iterative calculations. This ensures the algorithm's real-time performance and computational accuracy.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of autonomous driving technology, and in particular to a method and system for handling static obstacles based on CUDA. Background Technology

[0002] Currently, most static obstacle fusion schemes used in the field of automated parking are based on mesh-based methods, which determine which meshes are occupied between different frames. Therefore, the granularity of the mesh determines the quality of the fusion and the accuracy of obstacle boundary delineation. Smaller meshes mean higher accuracy, but also consume more computation time, preventing real-time data processing. To ensure smoother static obstacle fusion during automated parking, engineering practice typically uses an appropriate mesh granularity, such as 0.2x0.2m, to balance computational resources and resolve the conflict between computational speed and fusion accuracy. However, this method also leads to slower computation speed and lower accuracy. Summary of the Invention

[0003] One objective of the first aspect of this invention is to provide a CUDA-based method for processing static obstacles, thereby addressing the technical problem of low prediction and fusion speed and accuracy of static obstacles in the prior art.

[0004] Another objective of the first aspect of this invention is to improve the accuracy of static obstacle localization.

[0005] The second aspect of this invention aims to provide a CUDA-based system for handling static obstacles.

[0006] According to the first aspect of the present invention, the present invention provides a method for processing static obstacles based on CUDA, applied to the GPU, the method comprising the following steps:

[0007] The system acquires fused data information of static obstacles in the environment where the vehicle is located in the previous frame, and receives the vehicle's position information in the current frame acquired by the CPU.

[0008] Call a pre-written CUDA kernel function to predict the static obstacles in the current frame based on the fused data information of the static obstacles in the previous frame and the position information of the vehicle in the current frame, and obtain the predicted data information of the static obstacles in the current frame.

[0009] Receive actual data information of static obstacles in the current frame obtained by the CPU;

[0010] The predicted data information of static obstacles in the current frame and the actual data information of static obstacles in the current frame are fused using the CUDA kernel function to obtain the fused data information of static obstacles in the current frame.

[0011] The fused data information of static obstacles in the current frame is transmitted to the CPU.

[0012] Optionally, the step of fusing the predicted data information and the actual data information of the static obstacles in the current frame using the CUDA kernel function to obtain the fused data information of the static obstacles in the current frame further includes the following steps:

[0013] The fused data information of static obstacles in the current frame is normalized to obtain the processed fused data information of static obstacles in the current frame.

[0014] The fused data information of static obstacles in the current frame after processing is transmitted to the CPU.

[0015] Optionally, the step of calling a pre-written CUDA kernel function to predict the static obstacles in the current frame based on the fused data information of the static obstacles in the previous frame and the vehicle's position information in the current frame, and obtaining the predicted data information of the static obstacles in the current frame, specifically includes the following steps:

[0016] The position of the vehicle in the current frame is mapped onto the grid map. The fusion data information of the static obstacles in the previous frame includes the position data of the polygonal pattern of the fused static obstacles in the previous frame on the grid map. The vehicle in the previous frame is located at the center of the grid map. The grid map is composed of multiple thread blocks arranged in an array, and each thread block is composed of multiple threads.

[0017] The grid map is moved so that the center of the grid map is located at the position of the vehicle in the current frame. At this time, the position data of the polygonal pattern of the static obstacle fusion of the previous frame on the moved grid map is the position data of the polygonal pattern of the static obstacle prediction of the current frame on the grid map. The prediction data information of the static obstacle of the current frame includes the position data of the polygonal pattern of the static obstacle prediction of the current frame on the grid map.

[0018] Optionally, the step of fusing the predicted data information and the actual data information of the static obstacles in the current frame using the CUDA kernel function to obtain the fused data information of the static obstacles in the current frame specifically includes the following steps:

[0019] The actual polygonal pattern of the static obstacle in the current frame is mapped onto the moved grid map to obtain the position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map. The actual data information of the static obstacle in the current frame includes the actual polygonal pattern of the static obstacle in the current frame.

[0020] The position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map and the position data of the predicted polygonal pattern of the static obstacle in the current frame on the grid map are fused together to obtain the position data of the fused polygonal pattern of the static obstacle in the current frame on the grid map. The fused data information of the static obstacle in the current frame includes the position data of the fused polygonal pattern of the static obstacle in the current frame on the grid map.

[0021] Optionally, when the CUDA kernel function is executed on the GPU, all the thread blocks are launched simultaneously, and each thread performs the prediction and fusion of the static obstacles within its corresponding thread block.

[0022] Optionally, the step of fusing the position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map and the position data of the predicted polygonal pattern of the static obstacle in the current frame on the grid map to obtain the position data of the fused polygonal pattern of the static obstacle in the current frame on the grid map specifically includes the following steps:

[0023] Calculate the first probability of the polygon pattern predicted by the static obstacle in the current frame for each thread block in the grid map. The first probability represents whether the thread block is occupied by the polygon pattern predicted by the static obstacle in the current frame and the probability value of each obstacle type of the occupied static obstacle.

[0024] Calculate the second probability of the actual polygon pattern of the static obstacle in the current frame for each thread block in the grid map. The second probability represents whether the thread block is occupied by the actual polygon pattern of the static obstacle in the current frame and the probability value of each obstacle type of the occupied static obstacle.

[0025] The initial fusion probability after fusion of each thread block is calculated based on the first probability and the second probability.

[0026] Optionally, the step of normalizing the fused data information of static obstacles in the current frame to obtain the processed fused data information of static obstacles in the current frame specifically includes the following steps:

[0027] The initial fusion probability after fusion of each thread block is normalized to obtain the final fusion probability after processing each thread block.

[0028] Optionally, the first probability P1 and the second probability P2 of each thread block are calculated according to formulas (1) and (2), respectively:

[0029] P1=[C0,C1,C2,C3,…,C N-1 ] T , (1);

[0030] P2=[m0,m1,m2,m3,…,m N-1 ] T (2);

[0031] Where C0, C1, C2, C3, ..., C N-1 These represent the proportions of each obstacle type in the polygonal pattern of the static obstacle prediction in the current frame within this thread block, and the sum of the proportions of all obstacle types within this thread block is 1, m0, m1, m2, m3, ..., m N-1 These represent the proportion of each obstacle type in the actual polygon pattern of the static obstacle in the current frame within this thread block, and the sum of the proportions of all obstacle types within this thread block is 1. N represents the number of all obstacle types in the static obstacle.

[0032] Optionally, the initial fusion probability P of each thread block is calculated according to formula (3). fused :

[0033] P fused =[m0*C0, m1*C1, m2*C2, m3*C3,…,m N-1 *C N-1 ] T (3).

[0034] According to a second aspect of the present invention, the present invention also provides a processing system applied to the above-described CUDA-based static obstacle processing method, comprising:

[0035] The CPU is configured to acquire the vehicle's position information and the actual data information of static obstacles in the current frame.

[0036] The GPU, connected to the CPU, has pre-written CUDA kernel functions. The GPU is configured to acquire fused data information of static obstacles in the vehicle's environment from the previous frame, and then call the pre-written CUDA kernel functions to predict the static obstacles in the current frame based on the fused data information of the static obstacles from the previous frame and the vehicle's position information in the current frame, thus obtaining predicted data information of the static obstacles in the current frame. Then, the CUDA kernel functions are used to fuse the predicted data information of the static obstacles in the current frame with the actual data information of the static obstacles in the current frame, thus obtaining fused data information of the static obstacles in the current frame.

[0037] This invention requires calling a pre-written CUDA kernel function to predict static obstacles in the current frame based on the fused data of static obstacles from the previous frame and the vehicle's position information in the current frame. This yields predicted data for the static obstacles in the current frame. The CUDA kernel function then fuses this predicted data with the actual data of the static obstacles in the current frame to obtain fused data. This allows for parallel computation of static obstacle prediction and fusion on the GPU using the CUDA kernel function. Compared to existing technologies where the CPU needs to perform loop-by-loop computation, this significantly improves computation speed, shortens the computation time for static obstacle prediction and fusion, and ensures the algorithm's real-time performance and computational accuracy.

[0038] Furthermore, the present invention fuses the position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map with the position data of the predicted polygonal pattern of the static obstacle in the current frame on the grid map to obtain the position data of the fused polygonal pattern of the static obstacle in the current frame on the grid map, thereby improving the accuracy of static obstacle localization.

[0039] The above and other objects, advantages and features of the present invention will become more apparent to those skilled in the art from the following detailed description of specific embodiments of the invention in conjunction with the accompanying drawings. Attached Figure Description

[0040] The following sections will describe some specific embodiments of the invention in a detailed manner by way of example and not limitation, with reference to the accompanying drawings. The same reference numerals in the drawings denote the same or similar parts or portions. Those skilled in the art should understand that these drawings are not necessarily drawn to scale. In the drawings:

[0041] Figure 1 This is a schematic flowchart of a CUDA-based method for handling static obstacles according to an embodiment of the present invention;

[0042] Figure 2 This is a schematic flowchart of a CUDA-based method for handling static obstacles according to another embodiment of the present invention;

[0043] Figure 3 This is a schematic diagram of a grid map before and after movement according to an embodiment of the present invention;

[0044] Figure 4 This is a schematic flowchart of a CUDA-based method for handling static obstacles according to yet another embodiment of the present invention;

[0045] Figure 5 This is a schematic connection block diagram of a CUDA-based static obstacle processing system according to an embodiment of the present invention;

[0046] Figure 6 This is a schematic connection block diagram of a CUDA-based static obstacle processing system according to another embodiment of the present invention.

[0047] Figure label:

[0048] 100 - Processing system, 10 - CPU, 20 - GPU, 21 - Grid map prediction unit, 22 - Grid map fusion unit, 23 - Grid map prediction storage unit, 24 - Grid map fusion storage unit. Detailed Implementation

[0049] Embodiments of the present invention are described in detail below, examples of which are illustrated in the accompanying drawings, wherein the same or similar reference numerals denote the same or similar elements or elements having the same or similar functions throughout. The embodiments described below with reference to the accompanying drawings are exemplary and intended to explain the present invention, and should not be construed as limiting the present invention.

[0050] Figure 1 This is a schematic flowchart illustrating a CUDA-based method for handling static obstacles according to an embodiment of the present invention. Figure 1 As shown, in this embodiment, the CUDA-based static obstacle processing method is applied to the GPU side, and the processing method includes the following steps:

[0051] Step S100: Obtain the fusion data information of static obstacles in the environment where the vehicle is located in the previous frame, and receive the position information of the vehicle in the current frame obtained by the CPU.

[0052] Step S200: Call the pre-written CUDA kernel function to predict the static obstacles in the current frame based on the fused data information of the static obstacles in the previous frame and the position information of the vehicle in the current frame, so as to obtain the predicted data information of the static obstacles in the current frame.

[0053] Step S300: Receive the actual data information of static obstacles in the current frame obtained by the CPU;

[0054] Step S400: Use the CUDA kernel function to fuse the predicted data information of static obstacles in the current frame with the actual data information of static obstacles in the current frame to obtain the fused data information of static obstacles in the current frame.

[0055] Step S500: Transmit the fusion data information of static obstacles in the current frame to the CPU.

[0056] This embodiment utilizes CUDA kernel functions to perform parallel computation on the prediction and fusion of static obstacles on the GPU. Compared with the existing technology where the CPU needs to perform calculations in loops one by one, this greatly improves the computation speed, shortens the computation time for the prediction and fusion of static obstacles, and ensures the real-time performance and computational accuracy of the algorithm.

[0057] With the development of heterogeneous domain control platforms in recent years, many domain control platforms that integrate CPUs and GPUs are increasingly being used in mass-produced vehicles. Mesh-based static obstacle fusion is inherently very suitable for accelerating and optimizing heterogeneous domain control platforms. This allows the powerful parallel processing capabilities of GPUs to be fully utilized, making the mesh-based obstacle fusion process faster. While ensuring the output frequency, smaller granularity meshes can be set as much as possible, which greatly improves the fusion accuracy.

[0058] Figure 2 This is a schematic flowchart of a CUDA-based method for handling static obstacles according to another embodiment of the present invention. Figure 2 As shown, in this embodiment, the following steps are included after step S400:

[0059] Step S430: Normalize the fused data information of static obstacles in the current frame to obtain the processed fused data information of static obstacles in the current frame.

[0060] Step S500': Transmit the fused data information of static obstacles in the current frame after processing to the CPU.

[0061] Figure 3 This is a schematic diagram of a grid map before and after movement according to an embodiment of the present invention, as shown below. Figure 3 As shown, and see Figure 2 In this embodiment, step S200 specifically includes the following steps:

[0062] Step S210: Map the position of the vehicle in the current frame onto the grid map. The fusion data information of the static obstacles in the previous frame includes the position data of the polygon pattern after the static obstacles in the previous frame are fused on the grid map. The vehicle in the previous frame is located at the center of the grid map. The grid map is composed of multiple thread blocks arranged in an array, and each thread block is composed of multiple threads.

[0063] Step S220: Move the grid map so that the center of the grid map is located at the position of the vehicle in the current frame. At this time, the position data of the polygon pattern of the static obstacle fusion of the previous frame on the moved grid map is the position data of the polygon pattern of the static obstacle prediction in the current frame on the grid map. The prediction data information of the static obstacle in the current frame includes the position data of the polygon pattern of the static obstacle prediction in the current frame on the grid map.

[0064] Before step S100, the grid map needs to be initialized.

[0065] During parking, since the area of ​​interest is limited to static obstacles within a certain range in front of, behind, to the sides of the vehicle, the positions of these static obstacles relative to the vehicle's position in the current frame will change after fusion from the previous frame. Modeling this change is called predicting the position of the static obstacles in the current frame. After prediction, the actual and predicted positions of the static obstacles in the current frame are fused. Because both prediction and fusion are performed on irregular objects, the common practice is to perform prediction and fusion operations on each grid cell defined within the region of interest.

[0066] In existing technologies, the prediction and fusion of static obstacles on a grid map are generally based on CPU computation. The predicted coordinates of each grid cell are calculated sequentially. If the number of grid cells is in the millions, for example, if the grid map resolution is 1280x1280, the fusion process follows the same principle, requiring the fusion of the probability distribution of obstacle categories for each cell. This necessitates the CPU to traverse and calculate each cell, which is extremely time-consuming and uneconomical. This embodiment addresses this by parallelizing the prediction and fusion algorithms for static obstacles and implementing them using GPU parallel programming, significantly accelerating the prediction and fusion process while ensuring the algorithm's real-time performance and high accuracy.

[0067] This embodiment aims to accelerate the prediction and fusion process of static obstacles, fully utilizing heterogeneous embedded resources to achieve computational acceleration through the collaboration of CPU and GPU. The pseudocode for the prediction and fusion process of static obstacles in the mesh map in this embodiment consists of two nested for loops at the outermost level, with a time complexity of O(N). 2This embodiment utilizes CUDA's GPU parallel programming technology to accelerate the prediction and fusion process of static obstacles, achieving high-performance computing with low time overhead. Compared to pure CPU computing, the speedup is greater than 30 times, which allows for smaller grid settings during automatic parking, thereby achieving higher fusion accuracy.

[0068] In this embodiment, step S400 specifically includes the following steps:

[0069] Step S410: Map the actual polygonal pattern of the static obstacle in the current frame onto the moved grid map to obtain the position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map. The actual data information of the static obstacle in the current frame includes the actual polygonal pattern of the static obstacle in the current frame.

[0070] Step S420: The position data of the actual polygon pattern of the static obstacle in the current frame on the grid map and the position data of the predicted polygon pattern of the static obstacle in the current frame on the grid map are fused to obtain the position data of the fused polygon pattern of the static obstacle in the current frame on the grid map. The fused data information of the static obstacle in the current frame includes the position data of the fused polygon pattern of the static obstacle in the current frame on the grid map, thereby improving the accuracy of static obstacle localization.

[0071] In this embodiment, when the CUDA kernel function is executed on the GPU, all thread blocks are launched simultaneously, and each thread performs the prediction and fusion of static obstacles within its corresponding thread block.

[0072] Figure 4 This is a schematic flowchart of a CUDA-based method for handling static obstacles according to another embodiment of the present invention. Figure 4 As shown, in this embodiment, step S420 specifically includes the following steps:

[0073] Step S421: Calculate the first probability of the polygonal pattern predicted by the static obstacle in the current frame for each thread block in the grid map. The first probability represents whether the thread block is occupied by the polygonal pattern predicted by the static obstacle in the current frame and the probability value of each obstacle type of the occupied static obstacle.

[0074] Step S422: Calculate the second probability of the actual polygon pattern of the static obstacle in the current frame in each thread block of the grid map. The second probability represents whether the thread block is occupied by the actual polygon pattern of the static obstacle in the current frame and the probability value of each obstacle type of the occupied static obstacle.

[0075] Step S423: Calculate the initial fusion probability of each thread block after fusion based on the first probability and the second probability. Here, there is no sequential relationship between steps S421 and S422.

[0076] In this embodiment, step S430 specifically includes the following steps:

[0077] Step S430': Normalize the initial fusion probability after fusion of each thread block to obtain the final fusion probability after processing each thread block.

[0078] In this embodiment, the first probability P1 and the second probability P2 of each thread block are calculated according to formulas (1) and (2), respectively:

[0079] P1=[C0,C1,C2,C3,…,C N-1 ] T , (1);

[0080] P2=[m0,m1,m2,m3,…,m N-1 ] T (2);

[0081] Where C0, C1, C2, C3, ..., C N-1 These represent the proportions of each obstacle type in the polygonal pattern of the static obstacle prediction in the current frame within this thread block, and the sum of the proportions of all obstacle types within this thread block is 1, m0, m1, m2, m3, ..., m N-1 These represent the proportion of each obstacle type within the actual polygonal pattern of the static obstacle in the current frame, within that thread block, with the sum of the proportions of all obstacle types within the thread block being 1. N represents the total number of all obstacle types in the static obstacle. Here, each obstacle type includes categories such as cars, vehicles, walls, pillars, and blank areas, and the sequence is C0+C1+C2+C3+…+C… N-1 =1, m0+m1+m2+m3+…+m N-1 =1.

[0082] In this embodiment, the initial fusion probability P of each thread block is calculated according to formula (3). fused :

[0083] P fused =[m0*C0, m1*C1, m2*C2, m3*C3,…,m N-1 *C N-1 ] T (3).

[0084] In this embodiment, the final fusion probability P of each thread block is calculated according to formula (4). fused-norm :

[0085]

[0086] P fused-norm This refers to whether each thread block is occupied by the polygonal pattern resulting from the fusion of static obstacles in the current frame, and the probability values ​​of each obstacle type of the occupied static obstacles.

[0087] Figure 5 This is a schematic connection block diagram of a CUDA-based static obstacle processing system 100 according to an embodiment of the present invention. Figure 5 As shown, the processing system 100 for the above-described CUDA-based static obstacle processing method includes a CPU 10 and a GPU 20. The CPU 10 is configured to acquire the vehicle's position information and the actual data information of the static obstacles in the current frame. The GPU 20 is connected to the CPU 10 and has a pre-written CUDA kernel function. The GPU 20 is configured to acquire the fused data information of the static obstacles in the vehicle's environment in the previous frame, and then call the pre-written CUDA kernel function to predict the static obstacles in the current frame based on the fused data information of the static obstacles in the previous frame and the vehicle's position information in the current frame, thereby obtaining the predicted data information of the static obstacles in the current frame. Then, the CUDA kernel function is used to fuse the predicted data information of the static obstacles in the current frame with the actual data information of the static obstacles in the current frame, thereby obtaining the fused data information of the static obstacles in the current frame.

[0088] Figure 6 This is a schematic connection block diagram of a CUDA-based static obstacle processing system 100 according to another embodiment of the present invention. Figure 6 As shown, GPU 20 includes a grid map prediction unit 21, a grid map fusion unit 22, a grid map prediction storage unit 23, and a grid map fusion storage unit 24. The grid map prediction storage unit 23 stores the predicted grid map, and the grid map fusion storage unit 24 stores the fused grid map. The predicted network map contains prediction data information of static obstacles, and the fused network map contains fused data information of static obstacles.

[0089] Regarding the parallel computing logic for prediction and fusion of network maps, firstly, since a grid map is a two-dimensional area, corresponding to a rectangular region centered on the vehicle, it is divided into grids at a resolution of 0.08m x 0.08m. The occupancy and coordinate transformation calculation logic of each grid are essentially independent of each other, allowing for parallel computation. In traditional CPU10 computing logic, calculations are often performed in a loop. However, with the help of GPU20 devices, this can be divided into multiple thread blocks. A block is a concept in GPU20 programming, and each block has several threads. A thread is a smaller granularity of computing resources than a block in GPU20 programming. Each thread is responsible for the prediction or fusion calculation of its corresponding grid. Thus, when the GPU20 program is triggered to run, all threads are triggered and run simultaneously, achieving parallel computing and significantly improving computation speed while reducing the time overhead of prediction and fusion. For the prediction process of the Grid Map, see [link to relevant documentation]. Figure 3 For example, in the previous frame, a black grid along the Y-axis of the vehicle was occupied by an obstacle. However, as the vehicle moves, in the current frame, although the obstacle hasn't moved at all, its position on the Grid Map has changed. Its position relative to the vehicle is now approximately at the 10 o'clock position. This grid has essentially moved from one location to another on the Grid Map, which is what Grid Map prediction needs to accomplish.

[0090] In this embodiment, the CPU 10 transmits the polygonal pattern of the irregular static obstacle to the GPU 20, where a fusion operation is performed. During the fusion operation, the predicted value of the static obstacle in each grid is updated iteratively based on the actual value. Two storage spaces are pre-allocated on the GPU 20: a grid map prediction storage unit 23 and a grid map fusion storage unit 24, storing the predicted Grid Map and the fused Grid Map, respectively. Each time the actual polygonal pattern of the static obstacle is sent to the GPU 20 for fusion, the fused result is updated in the grid map fusion storage unit 24. Then, as the vehicle moves to the next time step, the corresponding obstacle position, i.e., the grid occupancy depicted by the Grid Map, will change accordingly. This is mainly because the vehicle moves between the current time step and the next time step, and the corresponding obstacle is based on the vehicle's rear axle center coordinate system. Therefore, the obstacle after fusion in the previous frame will also undergo a unique change in the next frame, and this displacement change is equal to the displacement of the vehicle between these two time steps. To reflect this change in the Grid Map, the Grid Map Prediction Unit 21 uses parallel computing on the GPU 20 to perform coordinate transformation calculations on each grid. The calculated results are then stored in the Grid Map Prediction Storage Unit 23. This repeated ping-pong operation ensures that Grid Map prediction and fusion are carried out in an orderly and efficient manner. Finally, the CPU 10 requests the latest fused Grid Map, and the data in the Grid Map Fusion Storage Unit 24 is copied from the GPU 20 to the CPU 10 for use.

[0091] Therefore, those skilled in the art should recognize that although numerous exemplary embodiments of the present invention have been shown and described in detail herein, many other variations or modifications conforming to the principles of the present invention can be directly determined or derived from the disclosure of the present invention without departing from the spirit and scope of the invention. Thus, the scope of the present invention should be understood and construed as covering all such other variations or modifications.

Claims

1. A method for handling static obstacles based on CUDA, characterized in that, When applied to the GPU, the processing method includes the following steps: The system acquires fused data information of static obstacles in the environment where the vehicle is located in the previous frame, and receives the vehicle's position information in the current frame acquired by the CPU. Call a pre-written CUDA kernel function to predict the static obstacles in the current frame based on the fused data information of the static obstacles in the previous frame and the position information of the vehicle in the current frame, and obtain the predicted data information of the static obstacles in the current frame. The prediction process includes: mapping the position of the vehicle in the current frame onto a grid map. The fusion data information of the static obstacles in the previous frame includes the position data of the polygonal pattern of the fused static obstacles in the previous frame on the grid map. The vehicle in the previous frame is located at the center of the grid map. The grid map is composed of multiple thread blocks arranged in an array, and each thread block is composed of multiple threads. Move the grid map so that the center of the grid map is located at the position of the vehicle in the current frame. At this time, the position data of the polygon pattern of the static obstacle fusion of the previous frame on the moved grid map is the position data of the polygon pattern of the static obstacle prediction of the current frame on the grid map. The prediction data information of the static obstacle of the current frame includes the position data of the polygon pattern of the static obstacle prediction of the current frame on the grid map. Receive actual data information of static obstacles in the current frame obtained by the CPU; The predicted data information of static obstacles in the current frame and the actual data information of static obstacles in the current frame are fused using the CUDA kernel function to obtain the fused data information of static obstacles in the current frame. The fusion process includes: mapping the actual polygonal pattern of the static obstacle in the current frame onto the moved grid map to obtain the position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map, wherein the actual data information of the static obstacle in the current frame includes the actual polygonal pattern of the static obstacle in the current frame. The position data of the actual polygon pattern of the static obstacle in the current frame on the grid map and the position data of the predicted polygon pattern of the static obstacle in the current frame on the grid map are fused to obtain the position data of the fused polygon pattern of the static obstacle in the current frame on the grid map. The fused data information of the static obstacle in the current frame includes the position data of the fused polygon pattern of the static obstacle in the current frame on the grid map. The fused data information of static obstacles in the current frame is transmitted to the CPU.

2. The processing method according to claim 1, characterized in that, The step of fusing the predicted data information and the actual data information of static obstacles in the current frame using the CUDA kernel function to obtain the fused data information of static obstacles in the current frame, further includes the following steps: The fused data information of static obstacles in the current frame is normalized to obtain the processed fused data information of static obstacles in the current frame. The fused data information of static obstacles in the current frame after processing is transmitted to the CPU.

3. The processing method according to claim 1, characterized in that, When the CUDA kernel function is executed on the GPU, all the thread blocks are launched simultaneously, and each thread performs the prediction and fusion of the static obstacles within its corresponding thread block.

4. The processing method according to claim 1, characterized in that, The step of fusing the position data of the actual polygonal pattern of the static obstacle in the current frame on the grid map and the position data of the predicted polygonal pattern of the static obstacle in the current frame on the grid map to obtain the position data of the fused polygonal pattern of the static obstacle in the current frame on the grid map specifically includes the following steps: Calculate the first probability of the polygon pattern predicted by the static obstacle in the current frame for each thread block in the grid map. The first probability represents whether the thread block is occupied by the polygon pattern predicted by the static obstacle in the current frame and the probability value of each obstacle type of the occupied static obstacle. Calculate the second probability of the actual polygon pattern of the static obstacle in the current frame for each thread block in the grid map. The second probability represents whether the thread block is occupied by the actual polygon pattern of the static obstacle in the current frame and the probability value of each obstacle type of the occupied static obstacle. The initial fusion probability after fusion of each thread block is calculated based on the first probability and the second probability.

5. The processing method according to claim 4, characterized in that, The step of normalizing the fused data information of static obstacles in the current frame to obtain the processed fused data information of static obstacles in the current frame specifically includes the following steps: The initial fusion probability after fusion of each thread block is normalized to obtain the final fusion probability after processing each thread block.

6. The processing method according to claim 5, characterized in that, Calculate the first probability P1 and the second probability P2 for each thread block according to formulas (1) and (2): P1=[C0,C1,C2,C3,…,C N-1 ] T ,(1); P2=[m0,m1,m2,m3,…,m N-1 ] T (2); Where C0, C1, C2, C3, ..., C N-1 These represent the proportions of each obstacle type in the polygonal pattern of the static obstacle prediction in the current frame within this thread block, and the sum of the proportions of all obstacle types within this thread block is 1, m0, m1, m2, m3, ..., m N-1 These represent the proportion of each obstacle type in the actual polygon pattern of the static obstacle in the current frame within this thread block, and the sum of the proportions of all obstacle types within this thread block is 1. N represents the number of all obstacle types in the static obstacle.

7. The processing method according to claim 6, characterized in that, The initial fusion probability P of each thread block is calculated according to formula (3). fused : P fused =[m0*C0,m1*C1,m2*C2,m3*C3,…,m N-1 *C N-1 ] T (3)。 8. A processing system applied to the CUDA-based static obstacle processing method according to any one of claims 1-7, characterized in that, include: The CPU is configured to acquire the vehicle's position information and the actual data information of static obstacles in the current frame. The GPU, connected to the CPU, has pre-written CUDA kernel functions. The GPU is configured to acquire fused data information of static obstacles in the vehicle's environment from the previous frame, and then call the pre-written CUDA kernel functions to predict the static obstacles in the current frame based on the fused data information of the static obstacles from the previous frame and the vehicle's position information in the current frame, thus obtaining predicted data information of the static obstacles in the current frame. Then, the CUDA kernel functions are used to fuse the predicted data information of the static obstacles in the current frame with the actual data information of the static obstacles in the current frame, thus obtaining fused data information of the static obstacles in the current frame.

Citation Information

Patent Citations

  • Energy-optimized control method for plug-in hybrid electric vehicle based on cooperative sensing

    CN109278752A

  • Obstacle recognition method, device, system, storage medium and electronic equipment

    CN112560580A