Simulation program and simulation device
By dividing radar waves into blocks and managing memory allocation efficiently, the simulation program and device enhance computational accuracy for radar wave propagation simulations, addressing memory limitations in GPUs and ensuring precise power calculations.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- DENSO CORP
- Filing Date
- 2025-12-22
- Publication Date
- 2026-07-02
AI Technical Summary
Existing simulation technologies face challenges in achieving high computational accuracy for radar wave propagation due to memory limitations in GPUs, which typically have less memory than CPUs, leading to potential inaccuracies in high-precision calculations.
A simulation program and device that divides radar waves into blocks, allocating storage and performing calculations sequentially for each block, using GPUs to manage memory efficiently and improve calculation accuracy without increasing storage capacity.
The solution allows for high-precision radar wave propagation simulations by effectively utilizing GPU memory, ensuring accurate power calculations at both short and long distances while maintaining computational efficiency.
Smart Images

Figure JP2025044891_02072026_PF_FP_ABST
Abstract
Description
Simulation Program and Simulation Device Cross-Reference to Related Applications
[0001] This international application claims the benefit of Japanese Patent Application No. 2024-232483, filed with the Japan Patent Office on December 27, 2024, the entire disclosure of which is incorporated herein by reference.
[0002] This disclosure relates to a simulation program and a simulation device for simulating the propagation of a probing wave.
[0003] Non-Patent Document 1 describes performing calculations for simulation of transmission and reception of radar waves by a radar device mounted on a vehicle using a GPU.
[0004] “Real Time, GPU-Accelerated Radar Modeling for Autonomous Vehicle Design”, [online], [searched on December 17, 2024], Internet <URL: https: / / developer.download.nvidia.com / video / gputechconf / gtc / 2020 / presentations / s21966-ultra-fast-radar-simulation-for-radar-system-design-and-automotive-applications.pdf>
[0005] In the simulation of a sensor that detects the position of an object existing in the surroundings by emitting radio waves or ultrasonic waves to the outside and detecting the reflected waves, a propagation calculation processing unit that performs calculations for reproducing the propagation of the reflected waves and a sensor output calculation processing unit that calculates the output of the sensor that has detected the reflected waves are provided.
[0006] A three-dimensional shape that reproduces the external environment is input to the propagation calculation processing unit. The propagation calculation processing unit calculates the power of the reflected wave and the like based on the input three-dimensional shape.
[0007] The propagation calculation processing unit primarily uses a technique called ray tracing. Ray tracing calculates by replacing radio waves or ultrasonic waves emitted from a sensor with rays of light (hereinafter referred to as rays) sent in all directions. Generally, the accuracy of ray tracing increases as the number of rays increases.
[0008] The inventor's detailed examination revealed the following problems: The memory capacity required to store calculation results such as ray power increases as the calculation accuracy of ray tracing increases, thus requiring a high-performance computer. In particular, when performing calculations using a GPU, there is a concern that high-precision calculations may not be possible due to memory limitations, as GPUs generally have less memory than CPUs.
[0009] This disclosure provides a technology that improves computational accuracy while suppressing an increase in memory capacity.
[0010] One aspect of this disclosure is a simulation program for causing a computer to function as a propagation calculation unit, a storage and reservation unit, and an execution unit.
[0011] The propagation calculation unit is configured to perform propagation calculations for a simulation that simulates the propagation of multiple probe waves in a virtual sensor that emits probe waves in a virtual space and receives probe waves reflected at reflection points, using ray tracing.
[0012] The storage unit is configured to divide multiple search waves into multiple blocks, each containing two or more search waves and having two or more blocks. For each block, it reserves a propagation calculation data storage unit for storing propagation calculation results, which are the results of the propagation calculation unit.
[0013] The execution unit is configured to sequentially execute, for each of the divided blocks, the storage allocation unit allocates a storage unit for the propagation calculation data, and the propagation calculation unit performs the propagation calculation.
[0014] The simulation program of this disclosure, configured in this manner, only requires the storage capacity of one block for the propagation calculation data storage unit to be allocated for propagation calculations performed by the GPU. Therefore, it is possible to suppress an increase in memory capacity and improve calculation accuracy.
[0015] Another aspect of this disclosure is a simulation device (1) comprising a propagation calculation unit, a storage and securing unit, and an execution unit.
[0016] The simulation apparatus described herein is controlled by the simulation program described herein and can achieve the same effects as the simulation program described herein.
[0017] This is a block diagram showing the configuration of the simulator. This is a functional block diagram showing the functional configuration of the simulator of the first embodiment. This is a flowchart showing the output calculation process of the first embodiment. This is a diagram illustrating the method of dividing multiple rays in the first embodiment. This is a diagram showing the data configuration of the block in the first embodiment. This is a diagram showing a display example of the first embodiment. This is a diagram illustrating the method of dividing multiple rays in the second embodiment. This is a diagram showing the data configuration of the block in the second embodiment. This is a diagram showing a display example of the second embodiment. This is a diagram illustrating the method of dividing multiple rays in the third embodiment. This is a flowchart showing the output calculation process of the fourth embodiment. This is a diagram illustrating the method of dividing multiple rays in the fourth embodiment. This is a diagram showing the data configuration of the block in the fourth embodiment. This is a diagram showing a display example of the fourth embodiment. This is a flowchart showing the output calculation process of the fifth embodiment. This is a diagram showing the data configuration of the block in the fifth embodiment. This is a functional block diagram showing the functional configuration of the simulator of the fifth embodiment.
[0018] [First Embodiment] A first embodiment of the present disclosure will be described below with reference to the drawings.
[0019] As shown in Figure 1, the simulator 1 of this embodiment includes a display unit 11, an operation input unit 12, a data storage unit 13, a data input / output unit 14, and a control unit 15.
[0020] The display unit 11 includes a display device (not shown) and displays various images on the display screen of the display device.
[0021] The operation input unit 12 outputs input operation data to identify the input operations performed by the user via a keyboard and mouse (not shown).
[0022] The data storage unit 13 is a storage device for storing various types of data.
[0023] The data input / output unit 14 performs data input and output with external devices connected via wired or wireless connection.
[0024] The control unit 15 includes a CPU 21, a GPU 22, memory 23, CPU memory 24, and GPU memory 25. CPU stands for Central Processing Unit. GPU stands for Graphics Processing Unit.
[0025] The various functions of the control unit 15 are realized by the CPU 21 and GPU 22 executing a program stored in a non-transitional physical recording medium. In this example, the memory 23 corresponds to the non-transitional physical recording medium that stores the program. Furthermore, the execution of this program executes a method corresponding to the program. Note that some or all of the functions executed by the CPU 21 and GPU 22 may be configured in hardware using one or more ICs, etc.
[0026] The GPU 22 has thousands of instruction processors, enabling it to perform large-scale parallel computations. In contrast, the CPU 21 has approximately 10 to 20 instruction processors.
[0027] Memory 23 stores the simulation program 31, 3D model data 32, and moving time series data 33. The simulation program 31, 3D model data 32, and moving time series data 33 may be pre-installed on the simulator 1, or they may be installed via a recording medium or network. Examples of recording media include optical discs, magnetic discs, and semiconductor memory.
[0028] The simulation program 31 uses 3D model data 32 and movement time-series data 33 to reproduce the three-dimensional shape of the road and the three-dimensional shape of the area around the road in a virtual space, and is configured to have a moving object (for example, a car or motorcycle) travel on the road reproduced in this virtual space.
[0029] In this embodiment, the 3D model data 32 is a three-dimensional coordinate point cloud that represents the three-dimensional shape of the object surface by a set of coordinate points represented by three-dimensional coordinates. The simulation program 31 is configured to reproduce the three-dimensional shape in virtual space by generating a large number of polygons (triangular polygons in this embodiment) with each of the multiple three-dimensional coordinate points constituting the three-dimensional coordinate point cloud as its vertices.
[0030] The movement time series data 33 is data that sets the position of a moving object over time in order to move the moving object in a virtual space.
[0031] Furthermore, the simulation program 31 is configured to simulate the transmission and reception of radar waves by a radar device mounted on a vehicle traveling in a virtual space.
[0032] By starting the simulation program 31 stored in memory 23, a radar simulation is performed that simulates the movement of a vehicle and the transmission and reception of radar waves by the radar device.
[0033] The memory 23 also includes an output data storage unit 34 for storing output data, which will be described later.
[0034] The CPU memory 24 is a memory device allocated to store data used by the CPU 21 to perform various arithmetic operations.
[0035] The CPU memory 24 includes a CPU propagation calculation data storage unit 35 for storing propagation calculation data, which will be described later.
[0036] The CPU memory 24 includes a CPU sensor calculation data storage unit 36 for storing sensor calculation data, which will be described later.
[0037] The GPU memory 25 is a storage device allocated to store data used by the GPU 22 to execute various arithmetic operations.
[0038] The GPU memory 25 includes a GPU propagation calculation data storage unit 37 for storing propagation calculation data described later.
[0039] The GPU memory 25 includes a GPU sensor calculation data storage unit 38 for storing sensor calculation data described later.
[0040] As a functional block realized by the CPU 21 and the GPU 22 executing the simulation program 31 stored in the memory 23, the simulator 1 includes, as shown in FIG. 2, a three-dimensional model movement processing unit 41, a propagation calculation processing unit 42, and a sensor output calculation processing unit 43.
[0041] The three-dimensional model movement processing unit 41 executes processing for reproducing the three-dimensional shape of a road and the three-dimensional shape around the road on a virtual space using the three-dimensional model data 32. Further, the three-dimensional model movement processing unit 41 executes processing for running a moving body on the road reproduced on the virtual space using the movement time-series data 33. The processing by the three-dimensional model movement processing unit 41 is executed by the CPU 21.
[0042] Instead of the movement time-series data 33, the three-dimensional model movement processing unit 41 may execute arithmetic processing for running a moving body on the road reproduced on the virtual space using data input from the external input controller 16 or data input from the external input software 17.
[0043] The external input controller 16 includes switches and buttons operated by a user, and outputs input operation data for specifying an input operation performed by the user to run a moving body on a virtual space.
[0044] The external input software 17 is a computer program that generates data for moving a moving body on a virtual space.
[0045] The propagation calculation processing unit 42 executes propagation calculation processing for calculating the propagation of radar waves emitted from a radar device (hereinafter, virtual radar device) mounted on a vehicle traveling in a virtual space by using a ray tracing method. Thereby, the propagation calculation processing unit 42 reproduces radar waves (hereinafter, reflected waves) reflected by an object in the virtual space. The propagation calculation processing by the propagation calculation processing unit 42 is executed by the GPU 22.
[0046] The propagation calculation processing unit 42 stores the propagation calculation data generated by the propagation calculation processing in the GPU propagation calculation data storage unit 37.
[0047] Further, the propagation calculation processing unit 42 transfers the propagation calculation data stored in the GPU propagation calculation data storage unit 37 to the CPU propagation calculation data storage unit 35.
[0048] The sensor output calculation processing unit 43 executes sensor output calculation processing for calculating output data output by the virtual radar device due to receiving the reflected wave by using the propagation calculation data stored in the CPU propagation calculation data storage unit 35. The sensor output calculation processing by the sensor output calculation processing unit 43 is executed by the GPU 22.
[0049] The sensor output calculation processing unit 43 stores the sensor calculation data generated by the sensor output calculation processing in the GPU sensor calculation data storage unit 38.
[0050] Further, the sensor output calculation processing unit 43 transfers the sensor calculation data stored in the GPU sensor calculation data storage unit 38 to the CPU sensor calculation data storage unit 36.
[0051] Further, the sensor output calculation processing unit 43 transfers the sensor calculation data stored in the CPU sensor calculation data storage unit 36 to the output data storage unit 34 as output data.
[0052] Next, the procedure of the output calculation processing executed in the simulator 1 will be described.
[0053] The output calculation processing is a process that is repeatedly executed during the operation of the simulator 1 by starting the simulation program 31 by a user's input operation.
[0054] When the output calculation process is executed, the control unit 15 determines the direction of all rays emitted from the virtual radar device in S10, as shown in Figure 3. Rays are radar waves that are to be calculated using the ray tracing method.
[0055] Because rays travel radially, the ray density tends to decrease with distance. Low ray density reduces the accuracy of power calculations in radar simulations. However, radar simulations must also ensure accuracy in power calculations at long distances.
[0056] Therefore, in this embodiment, as shown in Figure 4, the virtual radar device determines the direction of rays toward each of the multiple polygons constituting the three-dimensional shape reproduced in the virtual space, such that there is a positive correlation between the area of the polygon to be emitted and the number of rays emitted toward the polygon to be emitted. Note that "there is a positive correlation between the area of the polygon and the number of rays" includes not only the case where the number of rays increases stepwise as the area of the polygon increases, but also the case where the number of rays increases continuously as the area of the polygon increases.
[0057] When the processing in S10 is completed, the control unit 15 divides all the rays whose directions were determined in S10 into multiple blocks in S20, as shown in Figure 3. Specifically, as shown in Figure 4, the control unit 15 divides all the rays into a predetermined number of divisions K (for example, 1 million), and forms multiple blocks by making each of the divided rays with the predetermined number of divisions K one block.
[0058] When the process in S20 is completed, the control unit 15 determines in S30 whether the processes in S40 to S60, described later, have been executed in all blocks, as shown in Figure 3. If the processes in S40 to S60 have been executed in all blocks, the control unit 15 proceeds to S70.
[0059] On the other hand, if there are blocks that have not been processed in steps S40 to S60, the control unit 15 reserves a GPU propagation calculation data storage unit 37 for one block in the GPU memory 25 in step S40.
[0060] As shown in Figure 5, the GPU propagation calculation data storage unit 37 has an area reserved for one block to store propagation calculation data for multiple reflections for each of the K rays. Figure 5 shows the area for storing propagation calculation data for the K rays (2K+1), (2K+2), ..., 3K, which constitute the third block. For example, for ray (2K+1), storage areas for "ray 2K+1 bounce 1", "ray 2K+1 bounce 2", ... are formed. "ray 2K+1 bounce 1" stores the propagation calculation data for the first reflection of ray (2K+1). "ray 2K+1 bounce 2" stores the propagation calculation data for the second reflection of ray (2K+1). Propagation calculation data includes data indicating power, distance, direction, and speed.
[0061] When the processing in S40 is completed, the control unit 15, as shown in Figure 3, selects one block in S50 from the one or more blocks that have not been processed in S40 to S60, and performs ray tracing on all K rays that make up the selected block. The control unit 15 then writes the propagation calculation data generated by performing ray tracing on the K rays to the GPU propagation calculation data storage unit 37.
[0062] The GPU 22 can perform the propagation calculation of K rays with almost no increase in processing time by distributing the calculation of K rays to each instruction processing unit. However, if the predetermined number of divisions K is very large, the number of cores in the GPU 22 cannot keep up, and the processing time increases significantly in proportion to the predetermined number of divisions K. For this reason, the predetermined number of divisions K is set so as not to cause a significant increase in processing time.
[0063] In S60, the control unit 15 moves the multiple propagation calculation data stored in the GPU propagation calculation data storage unit 37 to the CPU propagation calculation data storage unit 35, as shown by the arrow L1 in Figure 5, and then proceeds to S30.
[0064] As shown in Figure 3, when the process moves to S70, the control unit 15 generates sensor calculation data by executing a sensor output calculation process using the multiple propagation calculation data stored in the CPU propagation calculation data storage unit 35, and writes the generated sensor calculation data to the GPU sensor calculation data storage unit 38. Furthermore, the control unit 15 moves the multiple sensor calculation data stored in the GPU sensor calculation data storage unit 38 to the CPU sensor calculation data storage unit 36.
[0065] In S80, the control unit 15 outputs multiple sensor calculation data by transferring the multiple sensor calculation data stored in the CPU sensor calculation data storage unit 36 to the output data storage unit 34, thereby ending the output calculation process.
[0066] Therefore, the simulator 1 of the first embodiment is configured to execute the propagation calculation process block by block, as shown by the arrow L2 in Figure 2, and to execute the sensor output calculation process after the propagation calculation process has been completed in all blocks.
[0067] As shown in Figure 2, the simulator 1 further includes a block setting unit 44, an upper limit setting unit 45, a block calculation unit 46, and a block display unit 47.
[0068] The block setting unit 44 sets the number of rays included in one block (i.e., a predetermined number of divisions K) and the total number of blocks based on input operations performed by the user via the operation input unit 12.
[0069] The upper limit setting unit 45 sets the upper limit of the storage capacity of the GPU propagation calculation data storage unit 37 based on input operations performed by the user via the operation input unit 12.
[0070] The block calculation unit 46 calculates the number of blocks based on the upper limit value set in the upper limit setting unit 45, such that the storage capacity of the GPU propagation calculation data storage unit 37 secured by one block does not exceed the upper limit value.
[0071] As shown in Figure 6, the block display unit 47 displays the trajectories of multiple rays for each block on the display screen of the display unit 11. Figure 6 shows the display screen showing the trajectories of multiple rays that make up the second block, because "2" has been entered in the block instruction box BB1.
[0072] The block display unit 47 also has the function of displaying the trajectories of multiple rays in different colors for each block, the function of displaying the polygons that are the targets of multiple rays for each block, the function of displaying only the initial firing direction, and the function of displaying only the trajectory of rays with a specific number of reflections.
[0073] The simulator 1 configured in this way is set up to perform propagation calculations for simulations that simulate the propagation of multiple radar waves in a virtual radar device, using ray tracing. The virtual radar device is configured to emit radar waves in a virtual space and receive radar waves reflected at reflection points.
[0074] Simulator 1 is configured to divide multiple radar waves into multiple blocks, each containing two or more radar waves and having two or more blocks, and to reserve a GPU propagation calculation data storage unit 37 for each block to store the calculation results (hereinafter referred to as propagation calculation results) from the propagation calculation processing unit 42.
[0075] The simulator 1 is configured to sequentially execute, for each of the divided blocks, the allocation of the GPU propagation calculation data storage unit 37 and the propagation calculation by the propagation calculation processing unit 42.
[0076] Such a simulator 1 only requires allocating the storage capacity of the GPU propagation calculation data storage unit 37 to one block for GPU propagation calculations, thus suppressing an increase in storage capacity and improving calculation accuracy.
[0077] Simulator 1 also divides multiple initial radar waves into multiple blocks, with each block containing multiple initial radar waves. Initial radar waves are radar waves emitted from a virtual radar device. Since such a simulator 1 only needs to perform a block division process once for multiple initial radar waves emitted from the virtual radar device, the block division process can be simplified.
[0078] Furthermore, the virtual radar device is configured to emit multiple initial radar waves toward each of the multiple polygons that constitute the three-dimensional shape reproduced in the virtual space, such that there is a positive correlation between the area of the polygon to be emitted toward and the number of initial radar waves emitted toward the polygon. The simulator 1 then divides the multiple initial radar waves into multiple blocks by dividing them into a predetermined number of divisions K. Such a simulator 1 can perform block division processing in a simple way by dividing the initial radar waves into a predetermined number of divisions K.
[0079] Furthermore, the simulator 1 is configured to calculate sensor output data output by a virtual radar device that receives radar waves. After the propagation calculation processing unit 42 has completed the propagation calculation for all blocks, the simulator 1 uses the propagation calculation results from the propagation calculation processing unit 42 to calculate the sensor output data. Since such a simulator 1 can calculate the sensor output data all at once using the propagation calculation results for all blocks, the procedure for sensor output calculation processing can be simplified.
[0080] The simulator 1 also includes a block setting unit 44. In such a simulator 1, the user can set an appropriate predetermined number of divisions K and number of blocks in order to perform propagation calculation processing.
[0081] The simulator 1 also includes an upper limit setting unit 45 and a block calculation unit 46. Such a simulator 1 can set the number of blocks based on the upper limit of the storage capacity of the GPU propagation calculation data storage unit 37.
[0082] The simulator 1 also includes a block display unit 47 configured to display the trajectories of multiple radar waves included in a block on a display screen. Such a simulator 1 allows the user to check the trajectory of radar waves for each block and can provide the user with information to consider how to divide multiple radar waves into blocks.
[0083] In the embodiments described above, the simulator 1 corresponds to a simulation device, the radar wave corresponds to a search wave, the virtual radar device corresponds to a virtual sensor, and the GPU propagation calculation data storage unit 37 corresponds to a propagation calculation data storage unit.
[0084] Furthermore, S50 corresponds to processing as a propagation calculation unit, S20 and S40 correspond to processing as a storage and securing unit, S30 corresponds to processing as an execution unit, and S70 corresponds to processing as an output calculation unit.
[0085] [Second Embodiment] A second embodiment of the present disclosure will be described below with reference to the drawings. In the second embodiment, the parts that differ from the first embodiment will be described. Common components will be denoted by the same reference numerals.
[0086] The simulator 1 of the second embodiment differs from the first embodiment in that the output calculation processes S10 and S20 have been modified.
[0087] In other words, once the output calculation process is executed, the control unit 15 determines the direction of all rays emitted from the virtual radar device in S10.
[0088] In the second embodiment, the virtual radar device emits rays at a uniform density regardless of the distance between the virtual radar device and the polygon. That is, the virtual radar device emits rays at a uniform density even at long distances.
[0089] In S10, the control unit 15 divides the emission area from which the virtual radar device emits rays into multiple areas, and determines the direction of the rays for each area such that there is a positive correlation between the volume of the area and the number of rays emitted toward the area.
[0090] For example, as shown in Figure 7, the control unit 15 divides the launch area into 12 areas, from the first area to the twelfth area.
[0091] When the process in S10 is completed, the control unit 15 divides all the rays whose directions were determined in S10 into multiple blocks in S20. Specifically, the control unit 15 forms multiple blocks by making multiple rays from the area from which the rays are emitted into one block.
[0092] Let the number of rays fired into the 1st area, 2nd area, 3rd area, ..., 12th area be N1, (N2-N1), (N3-N2), ..., (N12-N11), respectively. In this case, the blocks of the 1st area, 2nd area, 3rd area, ..., 12th area are composed of N1 rays, (N2-N1), (N3-N2), ..., (N12-N11), respectively.
[0093] Therefore, as shown in Figure 8, the GPU propagation calculation data storage unit 37 is allocated a region to store propagation calculation data for multiple reflections for each of the following rays, N1, (N2-N1), (N3-N2), ..., (N12-N11), as one block corresponding to one area. Figure 8 shows the region for storing propagation calculation data for (N3-N2) rays, (N2+1), (N2+2), ..., N3, which constitute the block of the third area. For example, for ray (N2+1), storage regions for "ray 2K+1 bounce 1", "ray 2K+1 bounce 2", ... are formed. "ray N2+1 bounce 1" stores the propagation calculation data for the first reflection of ray (N2+1). The "ray N2+1 bounce 2" field stores the propagation calculation data for the second reflection of ray (2K+1).
[0094] Then, in S60, the control unit 15 moves the multiple propagation calculation data stored in the GPU propagation calculation data storage unit 37 to the CPU propagation calculation data storage unit 35, as shown by arrow L3 in Figure 8, and proceeds to S30.
[0095] As shown in Figure 9, the block display unit 47 of the second embodiment has the function of displaying the outlines of the areas divided in S10 for each block on the display screen of the display unit 11. Figure 9 shows the display screen in which the outline of the block of the 12th area is highlighted because "12" has been entered in the block instruction box BB2.
[0096] In the simulator 1 configured in this way, the virtual radar device divides the exploration range from which the initial radar waves are emitted into multiple areas, and for each of the multiple areas, it is configured to emit multiple initial radar waves such that there is a positive correlation between the volume of the area and the number of initial radar waves emitted toward the area. The simulator 1 then divides the multiple initial radar waves into multiple blocks by separating them according to the area from which the initial radar waves are emitted. Such a simulator 1 can perform block division processing in a simple way by dividing the initial radar waves into areas.
[0097] In the embodiments described above, the first to twelfth areas correspond to the exploration range.
[0098] [Third Embodiment] A third embodiment of the present disclosure will be described below with reference to the drawings. In the third embodiment, the parts that differ from the first embodiment will be described. Common components will be denoted by the same reference numerals.
[0099] The simulator 1 of the third embodiment differs from the first embodiment in that it uses a virtual lidar device instead of a virtual radar device. Lidar is also written as LIDAR. LIDAR is an abbreviation for Light Detection and Ranging. A lidar device measures the distance to an object by emitting light while scanning and receiving the reflected light from an object that reflects the emitted light.
[0100] As shown in Figure 10, the optical scanning region SR emitted by the virtual lidar device while scanning the light is divided into m rectangular subregions (hereinafter referred to as pixels) in the X-axis direction and n rectangular subregions in the Y-axis direction, with the horizontal direction being the X-axis and the vertical direction being the Y-axis. m and n are positive integers.
[0101] The simulator 1 of the third embodiment differs from the first embodiment in that the output calculation processes S10 and S20 have been modified.
[0102] In other words, once the output calculation process is executed, the control unit 15 determines the direction of all rays emitted from the virtual radar device in S10.
[0103] In the third embodiment, the virtual lidar device emits light toward each of the multiple pixels that constitute the optical scanning region SR.
[0104] Therefore, in S10, the control unit 15 determines the direction of the ray so as to emit a ray toward each of the multiple pixels that constitute the optical scanning area SR.
[0105] When the processing in S10 is completed, the control unit 15 divides all the rays whose direction was determined in S10 into multiple blocks in S20. Specifically, the control unit 15 divides the optical scanning area SR into multiple areas, and for each area, it divides all the rays into multiple blocks by making a block of multiple rays emitted toward multiple pixels that make up one area.
[0106] For example, as shown in Figure 10, the control unit 15 divides the optical scanning region SR into multiple areas by dividing the optical scanning region SR along the Y-axis direction. In the optical scanning region SR of Figure 10, the hatched area forms one area. The control unit 15 may divide the optical scanning region SR along the X-axis direction, or it may divide it along both the X-axis and Y-axis directions.
[0107] Therefore, as shown in Figure 5, the GPU propagation calculation data storage unit 37 is provided with an area for storing propagation calculation data for multiple reflections for each of the K rays, as one block, similar to the first embodiment.
[0108] Then, in S60, as shown by arrow L1 in Figure 5, the control unit 15 moves the multiple propagation calculation data stored in the GPU propagation calculation data storage unit 37 to the CPU propagation calculation data storage unit 35, similar to the first embodiment, and proceeds to S30.
[0109] In the simulator 1 configured in this way, the virtual lidar device is configured to emit multiple initial beams of light towards an optical scanning region SR that is formed in a grid and emits multiple initial beams while scanning. The initial beams of light are light emitted starting from the virtual lidar device. The simulator 1 then divides the optical scanning region SR into multiple areas and divides the multiple initial beams of light into multiple blocks by separating them according to the area from which the initial beams of light are emitted. Such a simulator 1 can perform block division processing in a simple way by dividing the initial beams of light into areas.
[0110] In the embodiments described above, the light emitted by the virtual lidar device corresponds to the probe wave, the virtual lidar device corresponds to the virtual sensor, and the optical scanning region SR corresponds to the scanning region.
[0111] [Fourth Embodiment] A fourth embodiment of the present disclosure will be described below with reference to the drawings. In the fourth embodiment, the parts that differ from the first embodiment will be described. Common components will be denoted by the same reference numerals.
[0112] The simulator 1 of the fourth embodiment differs from the first embodiment in that the output calculation process has been modified.
[0113] When the output calculation process of the fourth embodiment is executed, the control unit 15 determines the direction of all rays emitted from the virtual radar device in S110, as shown in Figure 11, in the same manner as in S10.
[0114] In S120, the control unit 15 determines whether or not there is a ray emission from the virtual radar device, or a ray emission from a reflective object resulting from reflection by an object reproduced in the virtual space.
[0115] For example, as shown in Figure 12, rays R1, R2, R3, and R4 are rays emitted from the virtual radar device. Rays R11, R12, R13, and R14 are rays emitted as a result of the first reflection. Rays R22, R23, and R24 are rays emitted as a result of the second reflection. Ray R34 is a ray emitted as a result of the third reflection.
[0116] If no rays are emitted in S120, the control unit 15 proceeds to S170, as shown in Figure 11. On the other hand, if rays are emitted, the control unit 15 sets the multiple rays to be emitted as a single block in S130.
[0117] In S140, the control unit 15 allocates a GPU propagation calculation data storage unit 37 in the GPU memory 25 for the number of rays included in one block set in S130.
[0118] For example, if the number of rays emitted from the virtual radar device is N1, then the GPU propagation calculation data storage unit 37 for N1 rays is reserved. Also, if the number of rays emitted from the reflecting object due to the first reflection is N2, then the GPU propagation calculation data storage unit 37 for N2 rays is reserved. In the first embodiment, a region is reserved to store propagation calculation data for multiple reflections for a single ray, whereas in the fourth embodiment, as shown in Figure 13, a region is reserved to store propagation calculation data for one reflection for a single ray.
[0119] When the processing in S140 is completed, the control unit 15 performs ray tracing on all emitted rays in S150, as shown in Figure 11. However, in S150, the control unit 15 performs ray tracing until it collides with an object once. The control unit 15 then writes the propagation calculation data generated by performing ray tracing on all emitted rays to the GPU propagation calculation data storage unit 37. Note that for rays that do not collide with an object, propagation calculation data is not generated, and the propagation calculation data is not written to the GPU propagation calculation data storage unit 37.
[0120] In S160, the control unit 15 moves the multiple propagation calculation data stored in the GPU propagation calculation data storage unit 37 to the CPU propagation calculation data storage unit 35, as shown by arrow L4 in Figure 13, and then proceeds to S120.
[0121] As shown in Figure 11, when the process moves to S170, the control unit 15 generates sensor calculation data by executing a sensor output calculation process using the multiple propagation calculation data stored in the CPU propagation calculation data storage unit 35, and writes the generated sensor calculation data to the GPU sensor calculation data storage unit 38. Furthermore, the control unit 15 moves the multiple sensor calculation data stored in the GPU sensor calculation data storage unit 38 to the CPU sensor calculation data storage unit 36.
[0122] In S180, the control unit 15 outputs multiple sensor calculation data by transferring the multiple sensor calculation data stored in the CPU sensor calculation data storage unit 36 to the output data storage unit 34, thereby ending the output calculation process.
[0123] As shown in Figure 14, the block display unit 47 of the fourth embodiment has the function of displaying the trajectories of multiple rays on the display screen of the display unit 11 for each reflection count. Figure 14 shows the display screen displaying the trajectories of multiple rays that have reflected for the second time, because "2" has been entered in the reflection instruction box BB3.
[0124] The block display unit 47 also has a function to display the trajectories of multiple rays in different colors for each reflection.
[0125] The simulator 1 configured in this way divides multiple radar waves into multiple blocks, such that radar waves with the same number of reflections in the virtual space are included in the same block. Such a simulator 1 can perform block division processing in a simple way by dividing multiple radar waves based on the number of reflections.
[0126] In the embodiments described above, S150 corresponds to processing as a propagation calculation unit, S130 and S140 correspond to processing as a storage and securing unit, S120 corresponds to processing as an execution unit, and S170 corresponds to processing as an output calculation unit.
[0127] [Fifth Embodiment] A fifth embodiment of the present disclosure will be described below with reference to the drawings. In the fifth embodiment, the parts that differ from the first embodiment will be described. Common components will be denoted by the same reference numerals.
[0128] The simulator 1 of the fifth embodiment differs from the first embodiment in that the output calculation process has been modified.
[0129] When the output calculation process of the fifth embodiment is executed, the control unit 15 determines the direction of all rays emitted from the virtual radar device in S210, in the same manner as in S10, as shown in Figure 15.
[0130] In S220, the control unit 15 divides all the rays whose directions were determined in S210 into multiple blocks, in the same manner as in S20.
[0131] In S230, the control unit 15 determines whether the processes described later in S240 to S280 have been executed in all blocks. If the processes in S240 to S280 have been executed in all blocks, the control unit 15 terminates the output calculation process.
[0132] On the other hand, if there are blocks that have not been processed in steps S240 to S280, the control unit 15, in step S240, reserves a GPU propagation calculation data storage unit 37 for one block in the GPU memory 25 in the same manner as in step S40.
[0133] In S250, the control unit 15 selects one block from among the one or more blocks that have not been processed in S240 to S280, in the same manner as in S50, and performs ray tracing on all K rays that make up the selected block. The control unit 15 then writes the propagation calculation data generated by performing ray tracing on the K rays to the GPU propagation calculation data storage unit 37.
[0134] In S260, the control unit 15, in the same manner as in S60, moves the multiple propagation calculation data stored in the GPU propagation calculation data storage unit 37 to the CPU propagation calculation data storage unit 35, as indicated by the arrow L5 in Figure 16.
[0135] As shown in Figure 15, in S270, the control unit 15 generates sensor calculation data by executing a sensor output calculation process using multiple propagation calculation data stored in the CPU propagation calculation data storage unit 35, and writes the generated sensor calculation data to the GPU sensor calculation data storage unit 38. Furthermore, the control unit 15 moves the multiple sensor calculation data stored in the GPU sensor calculation data storage unit 38 to the CPU sensor calculation data storage unit 36.
[0136] In S280, the control unit 15 outputs multiple sensor calculation data by transferring the multiple sensor calculation data stored in the CPU sensor calculation data storage unit 36 to the output data storage unit 34, thereby ending the output calculation process.
[0137] Therefore, the simulator 1 of the fifth embodiment is configured to execute both the propagation calculation process and the sensor output calculation process in blocks, as shown by arrow L6 in Figure 17, and to execute the propagation calculation process and sensor output calculation process in the next block only after both the propagation calculation process and the sensor output calculation process have been completed in one block.
[0138] The simulator 1 configured in this way is configured to calculate sensor output data output by a virtual radar device that receives radar waves. The simulator 1 then calculates the sensor output data using the propagation calculation result from the propagation calculation processing unit 42 in the most recently completed block each time the propagation calculation processing unit 42 completes the execution of propagation calculation for one block. With this type of simulator 1, the storage capacity of the GPU sensor calculation data storage unit 38, which stores the sensor calculation data generated by the sensor output calculation processing by the sensor output calculation processing unit 43, only needs to be allocated for one block, thus reducing the storage capacity of the GPU sensor calculation data storage unit 38.
[0139] In the embodiment described above, S250 corresponds to processing as a propagation calculation unit, S220 and S240 correspond to processing as a storage and securing unit, S230 corresponds to processing as an execution unit, and S270 corresponds to processing as an output calculation unit.
[0140] Although one embodiment of the present disclosure has been described above, the present disclosure is not limited to the above embodiment and can be implemented in various modified forms.
[0141] [Modification 1] In the above embodiment, a configuration in which radar waves or light are used as the exploration wave is shown, but ultrasound may be used as the exploration wave.
[0142] [Modification 2] In the third embodiment described above, a configuration in which a virtual lidar device is used instead of a virtual radar device was shown, but in the third embodiment, a virtual radar device may also be used.
[0143] The control unit 15 and its method described in this disclosure may be implemented by a dedicated computer provided by configuring a processor and memory programmed to perform one or more functions embodied by a computer program. Alternatively, the control unit 15 and its method described in this disclosure may be implemented by a dedicated computer provided by configuring a processor by one or more dedicated hardware logic circuits. Alternatively, the control unit 15 and its method described in this disclosure may be implemented by one or more dedicated computers configured by a combination of a processor and memory programmed to perform one or more functions and a processor configured by one or more hardware logic circuits. Furthermore, the computer program may be stored as instructions executed by the computer on a computer-readable non-transitional tangible recording medium. The method for realizing the functions of each part included in the control unit 15 does not necessarily need to include software, and all of its functions may be realized using one or more hardware components.
[0144] Multiple functions of one component in the above embodiment may be realized by multiple components, or one function of one component may be realized by multiple components. Furthermore, multiple functions of multiple components may be realized by one component, or one function realized by multiple components may be realized by one component. Also, some parts of the configuration of the above embodiment may be omitted. Furthermore, at least some parts of the configuration of the above embodiment may be added to or replaced with the configuration of other above embodiments.
[0145] In addition to the simulator 1 described above, this disclosure can also be realized in various forms, such as a system that uses the simulator 1 as a component, a program for making the computer function as the simulator 1, a non-transitional physical recording medium such as a semiconductor memory on which this program is recorded, and a simulation method. [Technical Concept Disclosed in This Specification] [Item 1] A computer configured to emit probe waves in a virtual space and receive the probe waves reflected at reflection points, and comprising: a propagation calculation unit (S50, S150, S250) configured to perform propagation calculations for a simulation that simulates the propagation of each of the plurality of probe waves using ray tracing; a storage and securing unit (S20, S40, S130, S140, S220, S240) configured to divide the plurality of probe waves into a plurality of blocks, each containing two or more probe waves and having two or more blocks, and to secure a propagation calculation data storage unit (37) for each block to store the propagation calculation results which are the calculation results of the propagation calculation unit, and A simulation program (31) for which, for each of the divided blocks, the storage and securing unit sequentially executes the securing of the propagation calculation data storage unit and the propagation calculation unit sequentially executes the propagation calculation. [Item 2] A simulation program according to Item 1, wherein the exploration wave emitted from the virtual sensor is used as the initial exploration wave, and the storage and securing unit (S20, S40) divides the multiple initial exploration waves into multiple blocks such that each block contains multiple initial exploration waves.[Item 3] A simulation program according to Item 2, wherein the virtual sensor is configured to emit a plurality of initial exploration waves toward each of a plurality of polygons constituting a three-dimensional shape reproduced in the virtual space, such that there is a positive correlation between the area of the polygon to be emitted and the number of initial exploration waves emitted toward the polygon, and the storage and securing unit is a simulation program that divides the plurality of exploration waves into a plurality of blocks by dividing the plurality of initial exploration waves into a predetermined number of divisions. [Item 4] A simulation program according to Item 2, wherein the virtual sensor is configured to divide the exploration range toward which the initial exploration waves are emitted into a plurality of areas, and for each of the plurality of areas, such that there is a positive correlation between the volume of the area and the number of initial exploration waves emitted toward the area, and the storage and securing unit is a simulation program that divides the plurality of exploration waves into a plurality of blocks by dividing the plurality of initial exploration waves toward each of the areas toward which the initial exploration waves are emitted. [Item 5] A simulation program according to Item 2, wherein the virtual sensor is configured to emit a plurality of initial exploration waves toward a scanning area (SR) which is formed in a grid and emits a plurality of initial exploration waves while scanning, and the storage and securing unit divides the scanning area into a plurality of areas and divides the plurality of initial exploration waves into a plurality of blocks by dividing them according to the area from which the initial exploration waves are emitted. [Item 6] A simulation program according to Item 1, wherein the storage and securing unit (S130, S140) divides the plurality of exploration waves into a plurality of blocks such that exploration waves that have the same number of reflections in the virtual space are included in the same block.[Item 7] A simulation program according to any one of Items 1 to 6, wherein the computer is further configured to function as an output calculation unit (S70, S170) configured to calculate sensor output data output by the virtual sensor that receives the probe wave, and the output calculation unit calculates the sensor output data using the propagation calculation results by the propagation calculation unit after the propagation calculation by the propagation calculation unit has completed for all of the blocks. [Item 8] A simulation program according to any one of Items 1 to 6, wherein the computer is further configured to function as an output calculation unit (S270) configured to calculate sensor output data output by the virtual sensor that receives the probe wave, and the output calculation unit calculates the sensor output data using the propagation calculation results by the propagation calculation unit for the most recently completed block each time the propagation calculation by the propagation calculation unit has completed for one of the blocks. [Item 9] A simulation program according to any one of Items 1 to 8, wherein the computer is configured to function as a block setting unit (44) configured to set at least one of the number of probe waves included in one block and the total number of blocks. [Item 10] A simulation program according to any one of Items 1 to 9, wherein the computer is configured to function as an upper limit setting unit (45) configured to set an upper limit of the storage capacity for storing the propagation calculation results, and a block calculation unit (46) configured to calculate the number of blocks based on the upper limit. [Item 11] A simulation program according to any one of Items 1 to 9, wherein the computer is configured to function as a block display unit (47) configured to display the trajectories of a plurality of probe waves included in each block on a display screen.[Item 12] A virtual sensor configured to emit a probe wave in a virtual space and receive the probe wave reflected at a reflection point, comprising: a propagation calculation unit (S50, S150, S250) configured to perform propagation calculations for a simulation that simulates the propagation of each of the multiple probe waves using ray tracing; and a storage and securing unit (S20, S40, S130, S140, S220, S240) configured to divide the multiple probe waves into a plurality of blocks, each containing two or more probe waves and having two or more blocks, and to secure a propagation calculation data storage unit (37) for each block to store the propagation calculation results, which are the calculation results of the propagation calculation unit, A simulation device (1) comprising an execution unit (S30, S120, S230) configured to sequentially execute, for each of the divided blocks, the storage and securing unit secures the propagation calculation data storage unit, and the propagation calculation unit performs the propagation calculation.
Claims
1. A computer configured as a virtual sensor that emits probe waves in a virtual space and receives the probe waves reflected at reflection points, the computer is configured to perform propagation calculations for a simulation that simulates the propagation of each of the multiple probe waves using ray tracing, the computer is configured as follows: a propagation calculation unit (S50, S150, S250) is configured to divide the multiple probe waves into a plurality of blocks, each block containing two or more probe waves and having two or more blocks, and to reserve a propagation calculation data storage unit (37) for each block to store the propagation calculation results calculated by the propagation calculation unit, the computer is configured as follows: a computer is configured as a virtual sensor that emits probe waves in a virtual space and receives the probe waves reflected at reflection points, the computer is configured to perform propagation calculations for each of the multiple probe waves using ray tracing, the computer is configured as a virtual sensor that emits probe waves in a virtual space and receives the probe waves reflected at reflection points, the computer is configured as a virtual sensor that emits probe waves in a virtual space and receives the probe waves reflected at reflection points, the computer is configured as a virtual sensor that performs propagation calculations for each of the multiple probe waves emits probe waves, and the computer is configured as a virtual sensor that emits probe waves in a virtual space and receives the probe waves reflected at reflection points, the computer is configured as a virtual sensor that emits probe waves, and the computer is configured as a virtual sensor that emits probe waves in a virtual sensor, the computer is configured as a virtual sensor that emits probe waves in a virtual sensor, the computer is configured as a virtual sensor that emits probe waves, and the computer is configured as a virtual sensor A simulation program (31) to enable it to function as such.
2. A simulation program according to claim 1, wherein the exploration wave emitted from the virtual sensor is used as the initial exploration wave, and the storage and securing unit (S20, S40) divides the plurality of initial exploration waves into a plurality of blocks such that each block contains a plurality of initial exploration waves.
3. A simulation program according to claim 2, wherein the virtual sensor is configured to emit a plurality of initial probe waves toward each of a plurality of polygons constituting a three-dimensional shape reproduced in the virtual space, such that there is a positive correlation between the area of the polygon to be emitted and the number of initial probe waves emitted toward the polygon, and the storage and securing unit is a simulation program that divides the plurality of probe waves into a plurality of blocks by dividing the plurality of initial probe waves into a predetermined number of divisions set in advance.
4. A simulation program according to claim 2, wherein the virtual sensor is configured to divide the exploration range from which the initial exploration waves are emitted into a plurality of areas, and for each of the plurality of areas, emit a plurality of initial exploration waves such that there is a positive correlation between the volume of the area and the number of initial exploration waves emitted toward the area, and the storage and securing unit is a simulation program that divides the plurality of exploration waves into a plurality of blocks by dividing the plurality of initial exploration waves into each of the areas from which the initial exploration waves are emitted.
5. A simulation program according to claim 2, wherein the virtual sensor is configured to emit a plurality of initial probe waves toward a scanning area (SR) which is formed in a grid shape and emits a plurality of initial probe waves while scanning, and the storage and securing unit divides the scanning area into a plurality of areas and divides the plurality of initial probe waves into a plurality of blocks by dividing them according to the area from which the initial probe waves are emitted.
6. A simulation program according to claim 1, wherein the storage and securing unit (S130, S140) divides a plurality of probe waves into a plurality of blocks such that probe waves that have the same number of reflections in the virtual space are included in the same block.
7. A simulation program according to any one of claims 1 to 6, wherein the computer is further configured to function as an output calculation unit (S70, S170) that calculates sensor output data output by the virtual sensor that receives the probe wave, and the output calculation unit calculates the sensor output data using the propagation calculation results by the propagation calculation unit after the propagation calculation by the propagation calculation unit has completed for all of the blocks.
8. A simulation program according to any one of claims 1 to 6, wherein the computer is further configured to function as an output calculation unit (S270) configured to calculate sensor output data output by the virtual sensor that receives the probe wave, and the output calculation unit calculates the sensor output data using the propagation calculation result by the propagation calculation unit for the most recently completed block each time the propagation calculation by the propagation calculation unit is completed for one block.
9. A simulation program according to any one of claims 1 to 6, wherein the computer is further configured to function as a block setting unit (44) that sets at least one of the number of probe waves included in one block and the total number of blocks.
10. A simulation program according to any one of claims 1 to 6, wherein the computer is further configured to function as: an upper limit setting unit (45) configured to set an upper limit for the storage capacity for storing the propagation calculation results; and a block calculation unit (46) configured to calculate the number of blocks based on the upper limit.
11. A simulation program according to any one of claims 1 to 6, wherein the computer is further configured to function as a block display unit (47) that displays the trajectories of a plurality of probe waves included in each block on a display screen.
12. A virtual sensor configured to emit a probe wave in a virtual space and receive the probe wave reflected at a reflection point, comprising: a propagation calculation unit (S50, S150, S250) configured to perform propagation calculations for a simulation that simulates the propagation of each of the multiple probe waves using ray tracing; and a storage and securing unit (S20, S40, S130, S140, S220, S240) configured to divide the multiple probe waves into a plurality of blocks, each containing two or more probe waves and having two or more blocks, and to secure a propagation calculation data storage unit (37) for each block to store the propagation calculation results, which are the calculation results of the propagation calculation unit; A simulation device (1) comprising an execution unit (S30, S120, S230) configured to sequentially execute, for each of the divided blocks, the storage and securing unit secures the propagation calculation data storage unit, and the propagation calculation unit performs the propagation calculation.