WO2020145057A1 - 演算装置、演算方法 - Google Patents

演算装置、演算方法 Download PDF

Info

Publication number
WO2020145057A1
WO2020145057A1 PCT/JP2019/049658 JP2019049658W WO2020145057A1 WO 2020145057 A1 WO2020145057 A1 WO 2020145057A1 JP 2019049658 W JP2019049658 W JP 2019049658W WO 2020145057 A1 WO2020145057 A1 WO 2020145057A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
output
object data
application
unit
Prior art date
Application number
PCT/JP2019/049658
Other languages
English (en)
French (fr)
Inventor
雄介 宇治土公
勇樹 堀田
Original Assignee
日立オートモティブシステムズ株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日立オートモティブシステムズ株式会社 filed Critical 日立オートモティブシステムズ株式会社
Publication of WO2020145057A1 publication Critical patent/WO2020145057A1/ja

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R21/00Arrangements or fittings on vehicles for protecting or preventing injuries to occupants or pedestrians in case of accidents or other traffic risks
    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/16Anti-collision systems

Definitions

  • the present invention relates to a computing device and a computing method.
  • the number of data required for each calculation is defined as the number of calculation unit data, and a plurality of calculation units that respectively perform different calculations to generate data, and a calculation unit for each calculation unit.
  • a data number storage unit that stores the number of data, and one of the plurality of arithmetic units is selected as a preceding arithmetic unit that executes the arithmetic operation in advance, and any other arithmetic unit is selected.
  • a selection unit that is selected as a subsequent calculation unit that executes a calculation using the data generated by the preceding calculation unit; a data accumulation unit that accumulates the data generated by the preceding calculation unit selected by the selection unit;
  • the number of data stored in the storage unit is monitored, and when the number of data in the data storage unit reaches the number of operation unit data in the subsequent operation unit, the data stored in the data storage unit is changed to the data.
  • a data processing device comprising: a data monitoring unit configured to output from a storage unit to the subsequent calculation unit.
  • a computing device stores object data, which is a set of data elements corresponding to a predetermined target element, and a storage unit that stores setting information regarding an output method of the object data, and the object data.
  • Output object data that is the object data is calculated based on a data management unit that manages and input object data that is the object data acquired from the data management unit, and the output object data is output to the data management unit.
  • An execution control unit including a plurality of software components, wherein the setting information is the input object data for the first software component, the output object data output by a second software component, and the second software component outputs the output object data.
  • the output method when the output object data is output to the first software component is associated with the information, and the data management unit manages the object data received from the second software component, The object data is output to the first software component based on the output method defined in the setting information.
  • the operation method according to the second aspect of the present invention is capable of accessing object data, which is a set of data elements corresponding to a predetermined target element, and a storage unit in which setting information regarding an output method of the object data is stored.
  • a plurality of software components for outputting the output object data to the data management unit, and the setting information is the input object data for the first software component and the output object data output by the second software component.
  • Block diagram showing a configuration of a vehicle control system 1 in the first embodiment Configuration diagram of the processing unit 100 Diagram showing an example of the application input/output data group 111 The figure which shows an example of the setting information group 112. The figure which shows the operation example A of the arithmetic unit 10. The figure which shows the operation example B of the arithmetic unit 10. The figure which shows the operation example C of the arithmetic unit 10.
  • Flowchart showing data input processing of the data management unit 104 The flowchart which shows the detail of step S704 of FIG.
  • Flowchart showing data output processing of the data management unit 104 The figure which shows an example of API which the data operation interface 201 can interpret.
  • Flowchart showing the setting information switching process of the execution control unit 102 Block diagram showing the configuration of a vehicle control system 1A in the second embodiment
  • FIG. 1 is a block diagram showing a configuration of a vehicle control system 1 including a computing device 10 according to the present invention.
  • the vehicle control system 1 includes an arithmetic unit 10, an external sensor group 20, a vehicle sensor group 30, and an actuator group 40.
  • vehicle control system 1 is mounted on vehicle 9.
  • the arithmetic unit 10, the external sensor group 20, the vehicle sensor group 30, and the actuator group 40 are connected by an in-vehicle network 50.
  • the vehicle control system 1 is mounted on a vehicle 9, determines the driving behavior and vehicle control of the vehicle 9 after recognizing the condition of an obstacle such as a traveling road and surrounding vehicles around the vehicle 9, and controls the vehicle motion. This is a system that realizes automatic driving.
  • the vehicle 9 may be referred to as “own vehicle” 9 in the sense of distinguishing other vehicles.
  • the external sensor group 20 is a sensor group that recognizes obstacles in a certain range around the vehicle, for example, other vehicles, pedestrians, objects, and other characteristic objects such as road signs and white lines.
  • the external sensor group 20 is composed of, for example, a camera, a radar, a lidar, and the like.
  • the outside world sensor group 20 outputs the detected information about obstacles and features around the vehicle, for example, the relative distance and relative angle from the vehicle 9 to the in-vehicle network 50 to which the outside world sensor group 20 and the arithmetic unit 10 are connected. To do.
  • the arithmetic unit 10 is configured to be able to obtain the output result from the external sensor group 20 via the in-vehicle network 50.
  • the external sensor group 20 is configured to detect an obstacle or a characteristic object.
  • the arithmetic device 10 and other devices are processed using signals and data output from the external sensor group 20. The device may perform these detection processes.
  • the vehicle sensor group 30 is a group of devices that detect information related to the movement of the vehicle 9, such as traveling speed, steering angle, accelerator operation amount, and brake operation amount.
  • the sensors that form the vehicle sensor group 30 are also referred to as “inner world sensors”.
  • the vehicle sensor group 30 outputs these state quantities detected on the in-vehicle network 50, for example.
  • the arithmetic unit 10 and other devices connected to the vehicle-mounted network 50 acquire the state quantities of various components output from the vehicle sensor group 30 via the vehicle-mounted network 50.
  • the actuator group 40 is a group of devices that control control elements such as steering, brakes and accelerators that determine the movement of the vehicle 9.
  • the actuator group 40 controls the movement of the vehicle 9 based on steering information such as a steering wheel, a brake pedal, and an accelerator pedal operated by the driver, and a target control value output from the arithmetic unit 10.
  • the arithmetic unit 10 is, for example, an ECU (Electronic Control Unit), and includes a processing unit 100, a storage unit 110, and a communication unit 120.
  • the form of the arithmetic unit 10 is not particularly limited.
  • the arithmetic device 10 may be integrated with the external sensor group 20.
  • the processing unit 100 includes a CPU (Central Processing Unit) and a RAM (Random Access Memory). The following functions are realized.
  • the vehicle control system 1 is equipped with one or more CPUs, and programs are executed in parallel on these CPUs.
  • the processing unit 100 has, as its functions, a sensor input unit 101, an execution control unit 102, an actuator output unit 103, and a data management unit 104.
  • a stop command is input to the arithmetic unit 10 from the outside, the processing unit 100 outputs a stop command to the sensor input unit 101, the execution control unit 102, the actuator output unit 103, and the data management unit 104.
  • the sensor input unit 101 acquires surrounding environment information related to the vicinity of the vehicle 9 and vehicle sensor information related to the movement of the vehicle 9, and sets these as “output values” in an application input/output data group 111 described later. Store.
  • the sensor input unit 101 acquires an output value from the external sensor group 20 and the vehicle sensor group 30.
  • the surrounding environment information is, for example, information on obstacles existing around the vehicle 9, information on characteristic objects indicating the characteristics of roads around the vehicle 9, and the like.
  • the obstacle existing around the vehicle 9 is, for example, another vehicle moving around the vehicle 9, a moving body such as a bicycle or a pedestrian, or a parked vehicle standing still on the road around the vehicle 9. , Fallen objects, installed objects, etc.
  • the vehicle sensor information is, for example, the position of the vehicle 9, traveling speed, steering angle, accelerator operation amount, brake operation amount, and the like.
  • the surrounding environment information and the vehicle sensor information acquired by the sensor input unit 101 are stored in the storage unit 110 as an application input/output data group 111.
  • the execution control unit 102 executes each application executed on one or more CPUs on the arithmetic unit 10.
  • the execution control unit 102 executes the application based on the application execution scheduling information stored in the setting information group 112 of the storage unit 110 and the thread number information for each application stored in the thread number information group 113. To do.
  • the information of the execution scheduling defines the operation start and end timings when the applications are operated sequentially or in parallel, the operation cycle, and the like. For example, for an application whose cycle is set to 10 ms, the execution control unit executes the application in 10 ms. Further, for example, for an application for which data parallelization is set, the execution control unit 102 performs control such as executing the application on one or more CPUs at a predetermined timing.
  • the actuator output unit 103 acquires control information from the application input/output data group 111 and outputs it to the actuator group 40 connected to the vehicle network 50.
  • the data management unit 104 controls data input/output between applications. In other words, the data management unit 104 controls data input/output between different applications. Data input/output between applications is collectively managed as the application input/output data group 111, but all data input/output to/from the application input/output data group 111 is performed via the data management unit 104.
  • Data control by the data management unit 104 is performed based on the setting information group 112. Therefore, when changing the design of data input/output between applications, only the setting information group 112 needs to be changed.
  • the data management unit 104 may control data input/output between the application and the sensor input unit and between the application and the actuator output unit, and these are also the targets of the input/output control.
  • the storage unit 110 is, for example, an HDD (HARD Disk Drive) or a flash memory. However, it may be configured to include a ROM (Read Only Memory).
  • the storage unit 110 stores a program that the processing unit 100 executes to realize its function, an application that is periodically executed, a data group necessary for the arithmetic device 10 to operate, and the like. Specifically, the storage unit 110 stores an application input/output data group 111, an inter-application setting information group 112, a thread number information group 113, and an application group 114.
  • the application group 114 includes a plurality of arbitrary applications.
  • the applications that form the application group 114 are arbitrary, but are, for example, ADAS (Advanced Driver-Assistance Systems) and control programs for automatic driving.
  • the control program for autonomous driving is, for example, a sensor fusion application, a map fusion application, a behavior prediction application, and a trajectory generation application.
  • the application input/output data group 111 stores information input to the application and information output from the application. Specifically, the application input/output data group 111 stores surrounding environment information related to the vicinity of the vehicle 9, vehicle sensor information related to the movement of the vehicle 9, and information processed by the application.
  • a set of data stored in the application input/output data group 111 and corresponding to a predetermined target element is referred to as “object data”, and the data is managed and operated in units of this object data.
  • object data a set of data stored in the application input/output data group 111 and corresponding to a predetermined target element
  • the “target element” is a conceptual target that is commonly expressed by individual information elements that are collected as object data.
  • the “target element” corresponds to, for example, the detection target of the external sensor group 20 or the vehicle sensor group 30, the control target of the actuator, and the calculation processing result of the application.
  • the recognized individual environmental elements correspond to the target elements. That is, instead of abstracting the hardware itself of each sensor that constitutes the external sensor group 20, a method of abstracting data in units of the environmental element that is the detection target is adopted.
  • object data may be configured based on the concept of the own vehicle 9, or object data may be configured for each detection target, for example, vehicle speed information for a vehicle speed sensor. You may.
  • the object data will be referred to as "data" hereinafter.
  • the data management unit in the application input/output data group 111 is based on the application of the input source and the output destination of the data and the type of the data. 104 manages.
  • the input/output setting information of data input/output between applications is, for example, the number of elements to be output in the array data or the timing of data output.
  • the data management unit 104 uses the setting information group 112 to control input/output of data between applications.
  • the communication unit 120 communicates with other devices mounted on the vehicle 9 based on various communication protocols.
  • the communication unit 120 is configured to include a network card conforming to a communication standard such as IEEE802.3 or CAN (Controller Area Network), for example.
  • the connection form between the communication unit 120 and other devices mounted on the vehicle 9 is not limited to a wired connection such as Ethernet, and Bluetooth (registered trademark) or wireless LAN (Local Area Network) is provided. It may be a short-range wireless connection such as.
  • the processing unit 100 includes the execution control unit 102, the data management unit 104, the sensor input unit 101, and the actuator output unit 103.
  • the execution control unit 102 controls the execution of two or more applications included in the application group 114.
  • four applications the sensor fusion application 102A, the map fusion application 102B, the behavior prediction application 102C, and the trajectory generation application 102D, are described as the applications whose execution is controlled by the execution control unit 102.
  • these applications access the output data output by the sensor input unit 101 or the input/output data of another application, they are performed via the data operation IF 201 provided in the data management unit.
  • the sensor input unit 101 internally includes one or more components such as a sensor A input unit 101A and a sensor B input unit 101B as a configuration corresponding to each sensor such as a camera and a radar.
  • the sensor input unit 101 may acquire an input from each sensor as sensor data, or may perform some calculation on the acquired sensor data.
  • the actuator output unit 103 includes one or more constituent elements such as an actuator A output unit 103A and an actuator B output unit 103B inside as a configuration corresponding to each actuator.
  • the actuator output unit 103 may output the data output from the data management unit 104 to the actuator as it is, or may output the result of performing some calculation on the data output from the data management unit 104. ..
  • each component of the application, the sensor input unit, and the actuator output unit is collectively referred to as a “software component” as a part of software as an abstract concept.
  • the software component accesses the application input/output data group 111 via the data operation interface 201 included in the data management unit 104.
  • the data management unit 104 centrally manages an application and data input/output to/from the sensor input unit 101 and the actuator output unit 103 as an application input/output data group 111. In this way, the data management unit 104 centrally manages all the data, and the common interface for data input/output is configured to be accessed via the data operation interface, which has the following advantages. That is, the control of data input/output of the application is hidden inside the data management unit 104.
  • Each application executed by the execution control unit 102 has the following advantages by utilizing the data operation interface 201 which is a common interface. In other words, each application does not need to modify the application itself to change the interface even if the data input/output design is changed. In other words, each application can support various data input/output without modifying the application.
  • FIG. 3 is a diagram showing an example of the application input/output data group 111.
  • the application input/output data group 111 is a set of data managed by the data management unit 104 on the storage unit 110.
  • the application input/output data group 111 is composed of one or more data, and each data includes a data type 301, a data ID 302, a time stamp 303, and a data unique attribute group 304.
  • the data type 301 indicates a conceptual type of each data.
  • the data type 301 is, for example, another vehicle, a pedestrian, a white line, or a sign.
  • the data ID 302 is an identifier for uniquely identifying the target data in the data group having the data type 301 in common. When it is determined that the same target element, for example, the same vehicle is indicated, the same value is set.
  • the data ID 302 can be duplicated in a data group having different data types 301.
  • the time stamp 303 is time information attached to the data.
  • the time information corresponds to the target time represented by the data, for example.
  • the sensor input unit is the data generation source, this corresponds to the time when the sensor detects the data.
  • the time stamp 303 is, for example, represented in a format in which the year, month, day, hour, minute, second, and the number of seconds with three digits after the decimal point are connected with a slash. For example, "2018/1/ “1/1/00/00/001” represents 1:00:0.001 seconds on January 1, 2018.
  • the above three points, that is, the data type 301, the data ID 302, and the time stamp 303 are information that holds any data regardless of the type of data.
  • the structure of the data unique attribute group 304 described below differs depending on the value of the data type 301.
  • the group of data unique attributes 304 is composed of one or more pieces of data unique information, and the number of pieces of data unique information to be configured differs depending on the type of data.
  • the data of data type 301 “own vehicle” like the first data in FIG. 3 has three-dimensional position information as the data unique information 1 and three-dimensional speed information as the data unique information 2. Have.
  • the data format shown in FIG. 3 is an example, and the data format of the application input/output data group 111 is not limited to this.
  • the format is such that the data type is uniquely specified in one column, but the data type may be expressed in two layers.
  • the major item of the data type 301 is “vehicle”, and the minor items thereof are “own vehicle” and “other vehicle”.
  • a sort method 410 described in the setting information of FIG. 4 described later describes a sort method according to a data format such as “data ID sort” and “sort by time stamp”. It is feasible because the data formats are uniformly defined.
  • FIG. 4 is a diagram showing an example of the setting information group 112.
  • the setting information group 112 is a set of setting information recorded in the storage unit 110.
  • the setting information group 112 is composed of one or more setting information.
  • Each setting information includes input source application 401, output destination application 402, data type 403, setting information ID 404, availability 405, output element number 406, notification standby 407, type 408, core number 409, sorting method 410, and allocation. Method 411 is included.
  • the output destination application 402 may be referred to as a “first software component”
  • the input source application 401 may be referred to as a “second software component”.
  • the key of the setting information group 112 is a combination of an input source application 401, an output destination application 402, and a data type 403.
  • these three pieces of information are expressed in separate columns, but they may be integrated into a single column.
  • target setting data is specified, and control setting information when outputting the data is expressed.
  • the input source application 401 indicates the type of data input source application.
  • the input source application 401 is, for example, sensor fusion or behavior estimation. However, in the example shown in FIG. 4, the sensor fusion is described as “SF” for convenience of drawing.
  • the application shown in the input source application 401 may be operated in parallel by a plurality of operation cores or may be operated by a single operation core. This item may be described as an enumeration value or an identification value that identifies the application.
  • the output destination application 402 indicates the type of application that is the output destination of the data.
  • the output destination application 402 is, for example, sensor fusion, behavior estimation, map fusion, or the like. However, in the example shown in FIG. 4, the map fusion is described as “map F” for the convenience of drawing.
  • the application shown in the output destination application 402 may be operated in parallel by a plurality of arithmetic cores or may be operated by a single arithmetic core. This item may be described as an enumeration value or an identification value that identifies the application.
  • the data type 403 indicates a conceptual type of data.
  • the data type 403 is, for example, another vehicle, a pedestrian, a white line, or a sign.
  • the data type 403 needs to be the type of data passed between the input source application 401 and the output destination application 402. This item corresponds to the data type 301 in the example shown in FIG. Similar to the case of the data type 301, the data type may be expressed by one layer or two layers.
  • the setting information ID 404 indicates the ID of the input/output setting of the application. That is, when there is a plurality of setting information for the target data specified by the combination of the input source application 401, the output destination application 402, and the data type 403, which is the key of the setting information group 112, the setting information is identified. It is an identifier. In the example shown in FIG. 4, when the setting information is single for the target data, the setting information ID 404 is set to 1. When there are a plurality of pieces of setting information for the target data, different values are set for the setting information ID, as shown in FIG. 4, for example. This item is not an indispensable item for the setting information group 112, and exists only when there are a plurality of setting information items for the target data. In other words, this item is not necessary if only single setting information exists for the target data.
  • the availability 405 indicates whether or not the setting information for the target data is used. In other words, the availability 405 indicates whether the setting information is valid or invalid.
  • the availability 405 indicates which of the three is used, and only one is set to an affirmative setting, for example, “True”.
  • the availability 405 of only the setting information having the setting information ID “1” is True, and an example in which the setting information ID is valid is shown.
  • the availability 405 is not an essential item for the setting information group 112, but is an item required only when there are a plurality of setting information items for the target data. This item is not necessary when only a single setting information exists for the target data.
  • the number of output elements 406 is an item indicating the number of elements of data output from the data management unit 104 to the output destination application 402. When the number of output elements 406 is “3”, three elements of the array are output. This item is not required if the output data type is not an array.
  • the type 408 indicates whether the data output timing from the data management unit 104 to the output destination application 402 is Pull type or Push type.
  • the data management unit 104 When the Pull type is designated, the data management unit 104 outputs the data output request at the timing when the data output request is received from the output destination application 402.
  • the Push type When the Push type is designated, the data management unit 104 outputs data to the output destination application 402 at the timing of receiving the data input request from the input source application 401.
  • This item is necessary to support both the Pull type and Push type functions as the data output of the data management unit 104 in the first place, and is not necessary when only one of the Pull type and Push type is supported. is there.
  • the notification standby 407 indicates whether or not the data management unit 104 waits for the processing completion of the input source application 401 and then outputs the data when the data management unit 104 receives an output request from the output destination application 402.
  • the notification standby 407 is designated as “True”
  • the completion notification is received from the input source application 401 operating in all the cores, and then output. Therefore, this item and the number of cores 409 are treated as a set.
  • the notification standby 407 is designated as “False”
  • the output is performed regardless of the completion of the processing of the input source application 401.
  • the notification waiting 407 is an item in which only the setting information in which the type 408 is set to Pull type is referred to.
  • the notification standby 407 may not be set in the setting information in which the type 408 is set to Push type.
  • the number of cores 409 indicates on how many CPU cores the application described in the input source application 401 is calculated.
  • the notification waiting 407 is “True”, it is necessary to wait for the notification of the processing completion from all the cores that are executing the calculation, and therefore the information of the number of cores 409 is necessary.
  • the notification standby 407 is “False”
  • the number of cores 409 does not need to be referred to, and information may not be described in the number of cores 409.
  • the sorting method 410 indicates a sorting method which is executed in advance for the data to be output by the data management unit 104 to the output destination application 402. The order in which the elements are output changes depending on the execution result of this sorting.
  • the sorting method 410 may include "data ID”, “time stamp”, “data unique information”, and “distance sort” described below.
  • Sorting by “data ID” is a method of sorting in ascending or descending order using the data ID 302 shown in FIG. 3 as a key.
  • the “time stamp” sorting is a method of sorting in ascending or descending order using the time stamp 303 shown in FIG. 3 as a key.
  • the sort by “data unique information” is a method of sorting in ascending order or descending order using any information of the data unique attribute group 304 shown in FIG. 3 as a key.
  • the allocation method 411 indicates the method of specifying the data to be output to the output destination application. Although “output request order allocation” and “spatial area allocation” will be described as examples of the allocation method 411, other specification methods may be selectable.
  • the “output request order assignment” is a method of outputting data in ascending order of the index when there is an opportunity to output data to the output destination application. The data may be indexed in the order in which they were generated, or the index may be sorted by the method described in sorting method 410.
  • the "space area allocation" is, for example, when the output target data indicates a two-dimensional plane grid map in which the vehicle 9 exists, the plane is spatially divided, and the divided space is set for the operation thread.
  • the data management unit 104 when identifying the output destination operation thread and then determining the allocation for each operation thread, the data management unit 104 uniquely identifies the operation thread that received the output request. It is necessary to have a means for specifying In the data output request API described below as an example of the API of the data operation interface 201 of FIG. 9, a value that identifies the type of application and its operating thread is passed as an argument as the application ID of the caller that makes the data output request. The example is shown.
  • the data management unit 104 controls data input/output between the input source application 401 and the output destination application 402 according to the information of each item of the setting information group 112. Therefore, for example, when it is desired to change the data input/output control method in accordance with the parallelization scheduling change, only the setting information group 112 needs to be changed.
  • FIG. 5 to 7 are diagrams showing three operation examples A to C of the arithmetic unit 10.
  • the output destination application 402 is data parallelized by the arithmetic core 1 and the arithmetic core 2.
  • the input source application 401 and the output destination application 402 are pipeline-parallelized.
  • both the input source application 401 and the output destination application 402 are data parallelized by the arithmetic core 1 and the arithmetic core 2. Details of each example will be described later.
  • a scheduling design is used as an example A or an example. It is envisioned that there will be mutual changes between B and C. Even when such a scheduling design is changed, the data management unit 104 can change the data output control by rewriting the availability 405 of the setting information group 112 shown in FIG.
  • the output destination application 402 is parallelized by the arithmetic core 1 and the arithmetic core 2.
  • the execution time of the input source application 401 is shown as the application execution time 501.
  • the execution time of the output destination application 402 is shown as an application execution time 502 on the arithmetic core 2 and an application execution time 503 on the arithmetic core 1.
  • a sequence diagram shows the state of data output by the design of "outputting data to the output destination application each time there is an output request".
  • the input source application 401 first performs a calculation, and each time the calculation result is obtained, the calculation result is output as indicated by reference numeral 510. While the input source application 401 is outputting, data is requested from the output destination application 402 to the input source application 401 as indicated by reference numeral 500. Then, the input source application 401 requires the time indicated by reference numeral 501 to complete the calculation, and transmits a notification indicating the completion of the processing as indicated by reference numeral 510A.
  • the data management unit 104 sets the setting information in the first line shown in the example of FIG. 4, that is, the number of output elements 406 is “3”, the notification standby 407 is “True”, the type 408 is “Pull”, and the number of cores 409 is “ 1” is read and the operation of the example shown in FIG. 5 is performed. That is, when “1” is received as the completion notification indicated by reference numeral 510A, output to the output destination application 402 is started, and as indicated by reference numeral 511, the data “3” received from the input source application 401 is converted into one block. Output as.
  • the input source application 401 and the output destination application 402 are pipeline-parallelized.
  • the execution time of the input source application 401 is shown as the application execution time 501.
  • the execution time of the output destination application 402 is shown as the application execution time 505.
  • These applications are running on separate computing cores and are running in parallel in time. Since the operation of the input source application 401 is the same as that of the example A, the description will be omitted.
  • the design of data output from the input source application 401 to the output destination application 402 is “one output data element at a time”, “regardless of whether or not the input source application 401 completes processing”, “
  • a sequence diagram shows a state of data output by a design of "outputting data from the input source application 401 to the output destination application 402 at the timing when the data is stored in the application input/output data group 111".
  • the data management unit 104 reads the setting information in the second line shown in the example of FIG. 4, that is, the number of output elements 406 is “1” and the type 408 is “Push”, and performs the operation of the example shown in FIG. 6. That is, when data “1” is output from the input source application 401, the data management unit 104 immediately starts transmission to the output destination application 402 without waiting for a completion notification because the type 408 is “Push”. ..
  • both the input source application 401 and the output destination application 402 are data parallelized by the arithmetic core 1 and the arithmetic core 2.
  • the execution time of the input source application 401 executed on the arithmetic core 1 is shown as an application execution time 601
  • the execution time of the input source application 401 executed on the arithmetic core 2 is shown as an application execution time 602.
  • the execution time of the output destination application 402 executed on the arithmetic core 1 is shown as an application execution time 603, and the execution time of the output destination application 402 executed on the arithmetic core 1 is shown as an application execution time 604.
  • the data output is designed such that "the output data elements are three each", “after the input source application 401 has completed processing", and "the data is output to the output destination application 402".
  • the data management unit 104 sets the setting information in the third line shown in the example of FIG. 4, that is, the number of output elements 406 is “3”, the notification standby 407 is “True”, the type 408 is “Pull”, and the number of cores 409 is “ 2” is read and the operation of the example shown in FIG. 7 is performed.
  • the input source application operates in parallel with the arithmetic core 1 and the arithmetic core 2, and each core outputs a completion notification when the arithmetic operation is completed.
  • the arithmetic core 2 completes the processing first, and outputs the data indicated by reference numeral 611 and the completion notification indicated by reference numeral 612.
  • the judgment of the data management unit 104 at this point is as follows. That is, although the data management unit 104 has the output element number 406 of “3” and has already received three pieces of data from the input source application 401, only one completion notification has been received, and the number of cores 409. It is judged that the output condition is not satisfied because it is less than “2”.
  • the data management unit 104 determines that the output condition is satisfied, and outputs the result to the output destination application 402. Output the data.
  • FIG. 8 is a flowchart showing a data input process which is a process when data is input to the data management unit 104. However, in FIG. 8, the operation of the data management unit 104 will be described assuming that data is input from a predetermined input source application X.
  • the data management unit 104 receives a data input request from the input source application X in step S701, and proceeds to step S702.
  • a common API is accessed from any input source application through a data input request API of FIG. 9 described later.
  • the data management unit 104 receives information such as the input source application 401 and the data type 403 together with the input data itself as an API argument.
  • step S702 the data management unit 104 stores data in the corresponding address of the application input/output data group 111 based on the information of the input source application 401 and the data type 403, and proceeds to step S703.
  • the table that associates the information of the input source application 401 and the data type 403 with the address that stores the data may be internally held by the data management unit 104, or may be held by another module and stored by the data management unit 104. You may refer.
  • step S703 the data management unit 104 notifies the predetermined waiting thread that the data of the input source application 401 and the data type 403 are newly stored, and proceeds to step S704.
  • This waiting thread is waiting in step S752 described later.
  • step S704 the data management unit 104 executes Push processing described later, and proceeds to step S705.
  • the processing target in step S705 is the setting information whose type 408 is “Push” in the setting information group 112.
  • the setting information whose type 408 is “Pull” is processed in the flowchart shown in FIG. 10 described later.
  • step S705 the data management unit 104 determines whether there is a completion notification from the input source application 401.
  • the “completion notice” is also referred to as “application processing completion notice” or “processing completion notice”.
  • the data processing completion notification from the input source application 401 is received through the application processing completion notification API of FIG. 11 described later. If the data management unit 104 determines that there is a data processing completion notification, the process advances to step S706, and if it is determined that there is no data processing completion notification, the process illustrated in FIG. 8 ends.
  • step S706 the data management unit 104 stores the completion notification in the application input/output data group 111 and ends the processing shown in FIG. This notification is referred to in the flowchart shown in FIG. 9 described later.
  • FIG. 9 is a flowchart showing details of step S704 in FIG.
  • the data management unit 104 determines whether or not the push processing target setting information exists.
  • the data management unit 104 proceeds to step S752 when determining that the push processing target setting information exists, and ends the processing illustrated in FIG. 9 when determining that the push processing target setting information does not exist.
  • the input source application 401 is the type of “input source application X”
  • the data type 403 is the data type of the received data
  • the usability 405 is “True”.
  • the type 408 is “Push” is determined.
  • step S752 the data management unit 104 determines whether or not the output condition of the setting information whose existence is confirmed in step S751 is satisfied.
  • the data management unit 104 proceeds to step S753 when determining that the output condition is satisfied, and stays at step S752 when determining that the output condition is not satisfied.
  • the data management unit 104 determines whether or not data corresponding to the number of output elements 406 has been accumulated in the application input/output data group 111.
  • the wait in step S752 may not be resolved in a short time. Therefore, the process following the wait is executed by another thread, and the process waits for the next data input request reception.
  • the thread generated by the negative determination in step S752 is also referred to as “waiting thread”.
  • step S753 the data management unit 104 sorts or allocates elements according to the description if the setting information describes the sorting method 410 or the allocation method 411, and proceeds to step S754. If the setting information includes a description of the sorting method 410, the sorting is performed according to the description. For example, the data IDs are sorted in ascending or descending order and the elements are replaced. When the setting information includes a description of the allocation method 411, the element is allocated according to the description. The method of allocation may be to replace the index, or another method may be to secure an array for each thread and copy the allocated elements.
  • step S754 the data management unit 104 outputs the designated element to the output destination application 402 and ends the processing illustrated in FIG.
  • FIG. 10 is a flowchart showing a data output process in which the data management unit 104 outputs data to the output destination application.
  • the process proceeds to step S801.
  • a common API is accessed from any output destination application through a data output request API of FIG. 11 described later.
  • the data management unit 104 receives information such as the input source application 401, the output destination application 402, and the data type 403 as API arguments.
  • the data management unit 104 reads the setting information group 112 in step S801 and proceeds to step S802. Specifically, the data management unit 104 searches the setting information group 112 by using the information of the input source application 401, the output destination application 402, and the data type 403 as keys, specifies the setting information, and reads the setting information. However, when there are a plurality of corresponding setting information, the data management unit 104 reads only the setting information whose availability 405 is set to “True”.
  • the data management unit 104 determines in steps S802 to S804 whether the various output conditions described in the setting information group 112 are satisfied. First, in step S802, the data management unit 104 determines whether or not the storage condition of the number of elements is satisfied, that is, whether or not the data for the number of output elements 406 is stored in the application input/output data group 111. If the data management unit 104 determines that the storage condition for the number of elements is satisfied, the process proceeds to step S803, and if it is determined that the storage condition for the number of elements is not satisfied, the process remains at step S802.
  • step S803 the data management unit 104 determines whether or not the notification standby 407 is False, the process proceeds to step S805 if it is determined to be False, and the step is determined if it is not False, that is, True. Proceed to S804.
  • step S804 the data management unit 104 determines whether or not the application processing completion notification of the input source application 401 has been received. If it is determined that the notification has been received, the process proceeds to step S805, and if it is determined that it has not been received. Remains in step S805. It should be noted that the notification of the application processing completion of the judgment material in step S804 is based on the processing of step S706 in FIG. 8 described above.
  • the data management unit 104 When the data management unit 104 makes a negative determination in steps S802 and S804, the data management unit 104 does not stop at step S802 but may notify the sender of the data output request of step S800 of an error and terminate the process shown in FIG. .. Since each of the processes of steps S805 and S806 is similar to each of the processes of step S753 and step S754, the description thereof will be omitted.
  • FIG. 11 is a diagram showing an example of an API that can be interpreted by the data operation interface 201.
  • the description example C901 is a pseudo code representation of a part of the header file when the data operation interface 201 is described in C language.
  • This API includes a data input request, a data output request, an application processing completion notification, and the like.
  • a data input request API (dataInputRequest), which is the first example of the description example C901, is an API for requesting an operation of storing data in the application input/output data group 111.
  • the argument of this API includes a caller application ID that identifies the caller application, an input data type that specifies a data type to be input, a data size, and a data address.
  • the caller application ID needs to be an identifier that can uniquely identify the type of application.
  • the data type 301 indicates a conceptual type of data. Examples include other vehicles, pedestrians, white lines, signs and the like.
  • the data size indicates the length of input data.
  • the data address stores the input data. This API call corresponds to step S701 in FIG.
  • a data output request API (dataOutputRequest), which is the second example of the description example C901, is an API that requests an operation of outputting data from the application input/output data group 111.
  • the argument of this API is an input source application ID that indicates an application that inputs the target data to the application input/output data group 111, a calling source application ID that identifies the calling source application, an output data type that specifies the type of data to be output, and a storage It consists of the destination buffer size and the buffer address.
  • the caller application ID of the argument in this data output request API is the type of application. It must be an identifier that can uniquely identify both the application and the operating thread of the application.
  • the call of this API corresponds to step S800 in FIG.
  • the application processing completion notification API which is the third example of the description example C901, is called from the input source application 401 when the input source application 401 completes the processing. Based on this, the determination in step S705 in FIG. 7 is made.
  • the data operation interface 201 included in the data management unit defines arguments that do not depend on the type of application or the execution scheduling of the application. Therefore, even when there is a change in the application execution scheduling such as data parallelization or pipeline parallelization, it is not necessary to change the application interface itself.
  • FIG. 12 is a diagram showing a pseudo code 1000 as an example of an application description format. It is assumed that all applications including the input source application 401 and the output destination application 402 are described using this description format. Inside the pseudo code 1000, the data is repeatedly processed. For example, in the case of an application that estimates the behavior of other vehicles around the own vehicle, the behavior estimation is repeated for each of the other vehicles based on the information of the other vehicles and the surrounding conditions.
  • the processing unit 100 first obtains data using the data output request API, as indicated by reference numeral 1000A.
  • the API that requests the output of a single data is called once, and the processing is performed on the output data.
  • it may be a structure in which a plurality of data are formed in this single data.
  • the output request API may be called a plurality of times in order to acquire a plurality of data divided into different data structures.
  • the calling application ID is subject to the following restrictions. That is, the caller application ID of the argument in this data output request API needs to be an identifier that can uniquely identify both the type of application and the operation thread of the application.
  • the processing unit 100 performs application-specific processing on the acquired data, as indicated by reference numeral 1000B.
  • a single data is described as the return value for the data, but a plurality of data may be used as the return value.
  • the processing unit 100 inputs the processing result using the data input request API of the data management unit 104, as indicated by reference numeral 1000C.
  • the data input request is called once to input a single data, but the data input request may be called a plurality of times to input a plurality of data.
  • the processing unit 100 issues an application processing completion notification when the processing completion notification of the application that is the output source of the data processed by the application is included in the application input/output data group 111.
  • the data management unit 104 is notified.
  • the setting information defining the output timing and the number of output data for the data input/output between the applications is stored in the arithmetic device 10 in advance, and The application inputs/outputs data via a data management unit capable of inputting/outputting data via a common interface, and the data management unit controls the number of output data to the application and the output timing based on the setting information. ..
  • the data input/output design can be changed only by changing the setting information, and there is no need to change the application interface.
  • the arithmetic unit 10 stores object data, which is a set of data elements corresponding to a predetermined target element, that is, information stored in the application input/output data group 111 and an output method of the object data, that is, the setting information group 112.
  • a storage unit 110 that stores a setting information group 112 including a plurality of setting information related to the information items 406 to 411, a data management unit 104 that manages object data, and an input that is object data acquired from the data management unit 104.
  • the execution control unit 102 includes a plurality of software components that calculate output object data that is object data based on the object data and output the output object data to the data management unit.
  • Each setting information that constitutes the setting information group 112 is input object data for the first software component (output destination application 402) and output object data output by the second software component (input source application 401), that is, the setting information group.
  • the information 411 and the information are associated with each other.
  • the data management unit 104 manages the object data received from the second software component (input source application 401), and outputs the object data to the first software component (output destination application 402) based on the output method defined in the setting information. Output to. Therefore, the arithmetic unit 10 can cope with the change of the data input/output without changing the application.
  • the output method is the output element unit information of the object data, that is, the output element number 406, the output start timing information of the object data, that is, the notification standby 407 and the type 408, the thread allocation method of the object data, that is, the allocation method 411. And any one or more of (3)
  • the output method further includes the object data sorting method 410. Therefore, the control device 10 can set various output methods.
  • the arithmetic unit 10 includes a data operation interface 201 for operating input/output of object data with respect to the data management unit.
  • the software component operates input/output of object data with respect to the data management unit 104 via the data operation interface 201.
  • the data operation interface 201 is common regardless of the method of outputting the object data to the software component by the data management unit 104. Therefore, the control of data input/output of the application can be hidden inside the data management unit 104.
  • the storage unit 110 may be provided outside the arithmetic device 10. In that case, the arithmetic unit 10 is configured to be able to access the storage unit 110 via the communication unit 120.
  • the execution control unit 102 may rewrite the setting information group 112.
  • the correspondence table 115 is further stored in the storage unit 110.
  • the correspondence table 115 is a table showing correspondence between states and setting values.
  • FIG. 13 is a diagram showing an example of the correspondence table 115.
  • the execution control unit 102 reads the correspondence table 115, and when determining that the vehicle 9 corresponds to the state described in the left column in the drawing, rewrites the setting information group 112 with the setting values described in the left column in the drawing.
  • DEF1, DEF2, etc. are described instead of specific setting values.
  • This set value is specifically the value of the item 405 of availability. For example, it may be either True or False information about all the setting information shown in FIG. 4, information specifying the setting information that is True, or information specifying the setting information that is False. May be.
  • FIG. 14 is a flowchart of the setting information switching process in which the execution control unit 102 dynamically rewrites the setting information group 112.
  • the execution control unit 102 reads the correspondence table 115.
  • the execution control unit 102 detects the state of the vehicle 9 based on the information acquired from the external sensor group 20 and the vehicle sensor group 30.
  • the execution control unit 102 reads the set value of the correspondence table 115 corresponding to the state of the vehicle 9 detected in step S1101.
  • the execution control unit 102 rewrites the setting information group 112 with the setting values read in step S1102, and ends the processing shown in FIG. Specifically, the execution control unit 102 rewrites the value of the usability 405 of the setting information group 112.
  • FIG. 13 shows the processing flow F1100 for dynamically changing the setting information, it is of course possible to change which setting information is statically activated for a plurality of setting information, not when the application is running. Good.
  • the arithmetic device 10 includes the execution control unit 102 that rewrites the setting information group 112. Therefore, the setting information group 112 can be rewritten according to the situation and the data input/output of the application can be changed at any timing.
  • the execution control unit 102 rewrites the setting information group 112 in this modified example, the setting information group 112 may be rewritten by a person other than the execution control unit 102, and the arithmetic device 10 has another functional configuration and its functional configuration. May rewrite the setting information group 112.
  • the execution control unit 102 may rewrite the setting information group 112 dynamically, that is, while the application is operating, or may statically rewrite the setting information group 112, that is, while the application is stopped.
  • the setting information group 112 may include at least one of the configurations indicated by reference numerals 406 to 411. Configurations not included in the setting information group 112 may have fixed default values. For example, the output element number 406 may be deleted from the setting information group 112, and the output element number 406 may be treated as “1” in all the setting information.
  • FIG. 15 is an overall configuration diagram of a vehicle control system according to the second embodiment.
  • the difference from the first embodiment is that the vehicle control system 1A is placed not in the vehicle 9 but in the test environment 9A existing outside the vehicle 9 and is greatly different.
  • the external sensor group 20, the vehicle sensor group 30, the actuator group 40, and the vehicle-mounted network 50A described in the first embodiment are provided in the vehicle 9. Therefore, in the present embodiment, the external sensor group is used instead of them.
  • a simulator 20A, a vehicle sensor group simulator 30A, an actuator group simulator 40A, and a network 50A are provided. Further, the vehicle control system 1A is also provided with an operator terminal 60A.
  • the external sensor group simulator 20A is a device that simulates the operation of the external sensor group 20. Specifically, the external world sensor group simulator 20A outputs predetermined data to the arithmetic device 10A at predetermined timing.
  • the vehicle sensor group simulator 30A is a device that simulates the operation of the vehicle sensor group 30. Specifically, the vehicle sensor group simulator 30A outputs predetermined data to the arithmetic unit 10A at predetermined timing.
  • the actuator group simulator 40A is a device that simulates the operation of the actuator group 40. Specifically, the actuator group simulator 40A receives an operation command from the arithmetic unit 10A.
  • the actuator group simulator 40A may process the information output from the external sensor group simulator 20A and the vehicle sensor group simulator 30A based on the information input from the arithmetic unit 10A. For example, when the arithmetic unit 10A outputs a command to increase the amount of depression of the accelerator pedal to the actuator group simulator 40A, the speed output of the host vehicle 9 output by the vehicle sensor group simulator 30A, that is, the speed value may be increased.
  • the network 50A is, for example, a LAN laid indoors. However, the network 50A may be a wireless LAN.
  • the operator terminal 60A is, for example, a personal computer operated by an operator. The operator can freely access the inside of 10A through the operator terminal 60A. The operator can rewrite the setting information group 112 and acquire the operation log 116 by operating the operator terminal 60A.
  • the configuration of the arithmetic unit 10A according to the present embodiment is the same as that of the first embodiment in that the operation log 116 is further stored in the storage unit 110, and that the processing unit 100 further includes a log recording unit 105 as its function. different.
  • the log recording unit 105 adds the time information and records the operation of the processing unit 100 in the operation log 116.
  • the external sensor group simulator 20A, the vehicle sensor group simulator 30A, and the actuator group simulator 40A are realized by hardware different from the computing device 10A and are connected by the network 50A.
  • the arithmetic unit 10A, the external sensor group simulator 20A, the vehicle sensor group simulator 30A, and the actuator group simulator 40A may be realized by the same hardware.
  • the configuration according to the second embodiment may be a virtual configuration in which one computer is used.
  • the arithmetic device 10 may include an input/output interface (not shown), and the program may be read from another device via the input/output interface and a medium that can be used by the arithmetic device 10 when necessary.
  • the medium refers to, for example, a storage medium that can be attached to and detached from the input/output interface, or a communication medium, that is, a wired, wireless, optical, or other network, or a carrier wave or digital signal that propagates through the network.
  • some or all of the functions realized by the program may be realized by a hardware circuit or an FPGA (field programmable gate array). You may combine each of the several modified example mentioned above. Although various embodiments and modifications have been described above, the present invention is not limited to these contents. Other modes that can be considered within the scope of the technical idea of the present invention are also included in the scope of the present invention.
  • Vehicle control system 9 Vehicle 10
  • Arithmetic device 100 Processing part 102
  • Data management part 105 Log recording part 110
  • Storage part 111 ...
  • Application input/output data group 112
  • Setting information group 112
  • Data Input/output setting information group 113
  • Thread number information group 114
  • Application group 201

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Traffic Control Systems (AREA)
  • Stored Programmes (AREA)

Abstract

演算装置は、所定の対象要素に対応するデータ要素の集合であるオブジェクトデータ、およびオブジェクトデータの出力方式に関する設定情報が格納される記憶部と、オブジェクトデータを管理するデータ管理部と、データ管理部から取得されるオブジェクトデータである入力オブジェクトデータに基づいてオブジェクトデータである出力オブジェクトデータを演算し、出力オブジェクトデータをデータ管理部に出力するソフト部品を複数備える実行制御部と、を備え、設定情報は、第1ソフト部品に対する入力オブジェクトデータであり第2ソフト部品が出力する出力オブジェクトデータと、第2ソフト部品が出力する出力オブジェクトデータを第1ソフト部品に対して出力する際の出力方式と、が対応付いた情報であり、データ管理部は、第2ソフト部品から受け取ったオブジェクトデータを管理し、オブジェクトデータを、設定情報に規定された出力方式に基づき、第1ソフト部品に出力する。

Description

演算装置、演算方法
 本発明は、演算装置、および演算方法に関する。
 近年、自動運転を実現する制御アプリケーションの機能高度化に伴い、アプリケーションの演算量が増加傾向にある。演算量が増加しつつあるアプリケーションを実時間で実行するためには、複数の演算コア上でアプリケーションを並列的に実行するスケジューリング、すなわちデータ並列化やパイプライン並列化などを行う必要がある。特許文献1には、それぞれの演算に必要なデータ数が演算単位データ数として定められており、それぞれが異なる演算を実行してデータを生成する複数の演算部と、演算部毎に、演算単位データ数を記憶するデータ数記憶部と、前記複数の演算部の中から、いずれかの演算部を、先行して演算を実行する先行演算部として選択し、他のいずれかの演算部を、前記先行演算部により生成されるデータを用いて演算を実行する後続演算部として選択する選択部と、前記選択部により選択された先行演算部が生成したデータを蓄積するデータ蓄積部と、前記データ蓄積部に蓄積されるデータのデータ数を監視し、前記データ蓄積部のデータ数が前記後続演算部の演算単位データ数に達した際に、前記データ蓄積部に蓄積されているデータを前記データ蓄積部から前記後続演算部に出力させるデータ監視部とを備えることを特徴とするデータ処理装置が開示されている。
日本国特開2013-114391号公報
 アプリケーションのスケジューリングを設計して演算器の性能をチューニングするためには、複数の並列化手法を単独で、および複数を組み合わせて試行することが必要である。そして試行結果に合わせて、アプリケーション間のデータの入出力の設計も必要となる。演算実行の性能チューニングのためには、スケジューリング設計の方針変更を反復することとなるが、その反復のたびに、データ入出力設計も合わせて反復せざるを得ない。特許文献1に記載されている発明では、データ入出力の変更に合わせてアプリケーションを再度作成する必要がある。
 本発明の第1の態様による演算装置は、所定の対象要素に対応するデータ要素の集合であるオブジェクトデータ、および前記オブジェクトデータの出力方式に関する設定情報が格納される記憶部と、前記オブジェクトデータを管理するデータ管理部と、前記データ管理部から取得される前記オブジェクトデータである入力オブジェクトデータに基づいて前記オブジェクトデータである出力オブジェクトデータを演算し、前記出力オブジェクトデータを前記データ管理部に出力するソフト部品を複数備える実行制御部と、を備え、前記設定情報は、第1ソフト部品に対する前記入力オブジェクトデータであり第2ソフト部品が出力する前記出力オブジェクトデータと、前記第2ソフト部品が出力する前記出力オブジェクトデータを前記第1ソフト部品に対して出力する際の出力方式と、が対応付いた情報であり、前記データ管理部は、前記第2ソフト部品から受け取った前記オブジェクトデータを管理し、前記オブジェクトデータを、前記設定情報に規定された出力方式に基づき、前記第1ソフト部品に出力する。
 本発明の第2の態様による演算方法は、所定の対象要素に対応するデータ要素の集合であるオブジェクトデータ、および前記オブジェクトデータの出力方式に関する設定情報が格納される記憶部にアクセス可能であり前記オブジェクトデータを管理するデータ管理部を備える演算装置が実行する演算方法であって、前記データ管理部から取得される前記オブジェクトデータである入力オブジェクトデータに基づいて前記オブジェクトデータである出力オブジェクトデータを演算し、前記出力オブジェクトデータを前記データ管理部に出力するソフト部品を複数備えることと、前記設定情報は、第1ソフト部品に対する前記入力オブジェクトデータであり第2ソフト部品が出力する前記出力オブジェクトデータと、前記第2ソフト部品が出力する前記出力オブジェクトデータを前記第1ソフト部品に対して出力する際の出力方式と、が対応付いた情報であり、前記データ管理部は、前記第2ソフト部品から受け取った前記オブジェクトデータを管理し、前記オブジェクトデータを、前記設定情報に規定された出力方式に基づき、前記第1ソフト部品に出力することとを含む。
 本発明によれば、アプリケーションを変更することなくデータ入出力の変更に対応できる。
第1の実施の形態における車両制御システム1の構成を示すブロック図 処理部100の構成図 アプリケーション入出力データ群111の一例を示す図 設定情報群112の一例を示す図 演算装置10の動作例Aを示す図 演算装置10の動作例Bを示す図 演算装置10の動作例Cを示す図 データ管理部104のデータ入力処理を示すフローチャート 図8のステップS704の詳細を示すフローチャート データ管理部104のデータ出力処理を示すフローチャート データ操作インタフェース201が解釈可能なAPIの一例を示す図 アプリケーションの記述様式の一例として擬似コード1000を示す図 対応表115の一例を示す図 実行制御部102の設定情報切替処理を示すフローチャート 第2の実施の形態における車両制御システム1Aの構成を示すブロック図
―第1の実施の形態―
 以下、図1~図12を参照して、演算装置の第1の実施の形態を説明する。
(システム構成)
 図1は、本発明に係る演算装置10を含む車両制御システム1の構成を示すブロック図である。車両制御システム1は、演算装置10、外界センサ群20、車両センサ群30、およびアクチュエータ群40を備える。本実施の形態では、車両制御システム1は、車両9に搭載される。演算装置10、外界センサ群20、車両センサ群30、およびアクチュエータ群40は、車載ネットワーク50により接続される。車両制御システム1は、車両9に搭載され、車両9の周辺における走行道路や周辺車両等の障害物の状況を認知した上で車両9の運転行動や車両制御を判断し、車両運動を制御することで自動運転を実現するシステムである。なお以下では、車両9を他の車両を区別する意味で「自車両」9と呼ぶこともある。
 外界センサ群20は、車両周辺の一定範囲の障害物、たとえば他車両、歩行者、物体などや、道路標識や白線などの特徴物を認識するセンサ群である。外界センサ群20は、たとえば、カメラ、レーダ、ライダ等により構成される。外界センサ群20は、検出した車両周辺の障害物や特徴物の情報、たとえば車両9からの相対距離と相対角度などを、外界センサ群20や演算装置10が接続されている車載ネットワーク50に出力する。演算装置10は、この車載ネットワーク50を介して外界センサ群20からの出力結果を取得できるように構成されている。なお本実施の形態では、外界センサ群20で障害物や特徴物を検出する処理を実施する構成になっているが、外界センサ群20から出力される信号やデータを用いて演算装置10や他装置でこれらの検出処理を行ってもよい。
 車両センサ群30は、車両9の動きに関する情報、たとえば走行速度、操舵角、アクセルの操作量、ブレーキの操作量などを検出する装置群である。車両センサ群30を構成するセンサは、「内界センサ」とも呼ばれる。車両センサ群30は、たとえば、車載ネットワーク50上に検出したこれらの状態量を出力する。車載ネットワーク50に接続された演算装置10や他装置は、この車載ネットワーク50を通じて、車両センサ群30から出力された各種部品の状態量を取得する。
 アクチュエータ群40は、車両9の動きを決定する操舵、ブレーキ、アクセル等の制御要素を制御する装置群である。アクチュエータ群40は、運転者によるハンドル、ブレーキペダル、アクセルペダル等の操舵情報や、演算装置10から出力される目標制御値に基づいて車両9の動きを制御する。
(演算装置の構成)
 演算装置10は、たとえばECU(Electronic Control Unit)であり、処理部100と、記憶部110と、通信部120とを備える。なお演算装置10の形態に特に制限はない。たとえば、演算装置10は、外界センサ群20に統合されてもよい。
 処理部100は、CPU(Central Processing Unit:中央演算処理装置)、およびRAM(Random Access Memory)を備え、CPUが記憶部110に格納された不図示のプログラムをRAMに展開して実行することにより以下の機能を実現する。車両制御システム1には1つ以上のCPUが搭載され、これらのCPU上で並列的にプログラムが実行される。処理部100はその機能として、センサ入力部101、実行制御部102、アクチュエータ出力部103、およびデータ管理部104を備える。処理部100は、演算装置10に外部から停止命令が入力されると、センサ入力部101、実行制御部102、アクチュエータ出力部103、およびデータ管理部104に停止指令を出力する。
 センサ入力部101は、車両9の周辺に関連する周辺環境情報と、車両9の動きに関連する車両センサ情報とを取得して、これらを「出力値」として後述するアプリケーション入出力データ群111に格納する。センサ入力部101は、出力値を外界センサ群20および車両センサ群30から取得する。周辺環境情報とは、たとえば車両9の周辺に存在する障害物の情報や、車両9の周辺における道路の特徴を示す特徴物等の情報等である。なお車両9の周辺に存在する障害物とは、たとえば車両9の周囲を移動している他車両、自転車、歩行者等の移動体や、車両9の周囲の道路上で静止している駐車車両、落下物、設置物等である。車両センサ情報とは、たとえば車両9の位置、走行速度、操舵角、アクセルの操作量、ブレーキの操作量等である。センサ入力部101により取得された周辺環境情報と車両センサ情報は、アプリケーション入出力データ群111として記憶部110に格納される。
 実行制御部102は、演算装置10上の1つ以上のCPU上で実行する各アプリケーションを実行する。実行制御部102は、記憶部110の設定情報群112に格納されているアプリケーションの実行スケジューリングの情報、およびスレッド数情報群113に格納されているアプリケーションごとのスレッド数の情報に基づいてアプリケーションを実行する。実行スケジューリングの情報とは、アプリケーションを逐次的または並列的に動作させるときの動作開始や終了のタイミング、および動作周期等が定義されたものである。たとえば、周期が10msと設定されたアプリケーションに対しては、実行制御部が10msで当該アプリケーションを実行する。またたとえば、データ並列化が設定されたアプリケーションに対しては、1つ以上のCPU上でアプリケーションを決められたタイミングで実行する等の制御を実行制御部102が行う。
 アクチュエータ出力部103は、アプリケーション入出力データ群111から制御情報を取得し、車載ネットワーク50に接続されたアクチュエータ群40に対して出力する。
 データ管理部104は、アプリケーション間でのデータ入出力を制御する。換言するとデータ管理部104は、異なるアプリケーション間でのデータ入出力を制御する。アプリケーション間で入出力されるデータは、アプリケーション入出力データ群111として集約的に管理されるが、アプリケーション入出力データ群111への全てのデータ入出力はデータ管理部104を介して行われる。
 データ管理部104によるデータの制御は、設定情報群112に基づいて行われる。したがって、アプリケーション間のデータ入出力の設計を変更する際には、設定情報群112のみを変更するだけよい。データ管理部104は、アプリケーションとセンサ入力部の間、およびアプリケーションとアクチュエータ出力部の間においてもデータ入出力の制御を行ってもよく、これらも入出力制御の対象とする。
 記憶部110は、たとえば、HDD(HARD Disk Drive)やフラッシュメモリである。ただしROM(Read Only Memory)を含んで構成されてもよい。記憶部110には、処理部100がその機能を実現するために実行するプログラム、周期的に実行されるアプリケーション、および演算装置10が動作するために必要なデータ群などが格納される。具体的には、記憶部110には、アプリケーション入出力データ群111、アプリケーション間の設定情報群112、スレッド数情報群113、およびアプリケーション群114が格納される。
 アプリケーション群114は任意の複数のアプリケーションが含まれる。アプリケーション群114を構成するアプリケーションは任意であるが、たとえばADAS(Advanced Driver-Assistance Systems、先進運転支援システム)や自動運転向けの制御プログラムである。自動運転向けの制御プログラムはたとえば、センサフュージョンアプリ、地図フュージョンアプリ、行動予測アプリ、および軌道生成アプリなどである。
 アプリケーション入出力データ群111には、アプリケーションに入力される情報、およびアプリケーションから出力される情報が格納される。具体的にはアプリケーション入出力データ群111には、車両9の周辺に関連する周辺環境情報や、車両9の動きに関連する車両センサ情報、およびアプリケーションがそれらを処理した情報が格納される。
 本実施の形態では、アプリケーション入出力データ群111に格納される、所定の対象要素に対応するデータの集合を「オブジェクトデータ」と呼称し、このオブジェクトデータを単位としてデータの管理及び操作を行う。「対象要素」とは、オブジェクトデータとして一纏めにした個々の情報要素が共通して表現する概念的な対象である。「対象要素」はたとえば、外界センサ群20や車両センサ群30の検出対象やアクチュエータの制御対象、およびアプリケーションの演算処理結果が該当する。
 外界センサ群20を構成するセンサにおいては、認識された個々の環境要素(障害物、道路形状、交通ルール等)が対象要素に該当することが望ましい。すなわち、外界センサ群20を構成する各センサというハードウェアそのものを抽象化するのではなく、検出対象である環境要素を単位として、データを抽象化する方式を採る。なお、車両センサ群30を構成する各センサについては、自車両9という概念でオブジェクトデータを構成してもよいし、個々の検出対象ごと、たとえば車速センサであれば車速情報ごとにオブジェクトデータを構成してもよい。
 本実施の形態ではこれ以降、オブジェクトデータを「データ」と呼ぶ。あるデータがアプリケーション入出力データ群111へ入出力される際には、そのデータの入力元のアプリケーションと出力先のアプリケーション、およびそのデータの種類に基づいてアプリケーション入出力データ群111内でデータ管理部104が管理する。
 設定情報群112には、演算装置10において実行されるアプリケーションのうちの、特定の2つのアプリケーション間で入出力されるデータの入出力の設定情報が記載されている。アプリケーション間で入出力されるデータの入出力の設定情報とは、たとえば、配列データの中で出力する要素の数やデータ出力のタイミングなどである。データ管理部104は、設定情報群112を利用して、アプリケーション間のデータの入出力を制御する。
 通信部120は各種通信プロトコルに基づいて車両9に搭載された他の装置と通信する。通信部120は、たとえば、IEEE802.3またはCAN(Controller Area Network)等の通信規格に準拠したネットワークカードを含んで構成される。なお、通信部120と車両9に搭載された他の装置との間の接続形態は、Ethernetのような有線接続に限定されることはなく、Bluetooth(登録商標)や無線LAN(Local Area Network)などの近距離無線接続であってもよい。
 図2は、本実施形態の処理部100の構成図である。前述のとおり、処理部100は、実行制御部102、データ管理部104、センサ入力部101、およびアクチュエータ出力部103を備える。
 実行制御部102はアプリケーション群114に含まれる2つ以上のアプリケーションの実行を制御する。本実施の形態では一例として、実行制御部102が実行を制御するアプリケーションをセンサフュージョンアプリ102A、地図フュージョンアプリ102B、行動予測アプリ102C、および軌道生成アプリ102Dの4つとして説明をする。これらのアプリケーションはセンサ入力部101が出力した出力データや、他のアプリケーションの入出力データにアクセスする際には、データ管理部の備えるデータ操作IF201を介して行う。
 センサ入力部101は、カメラやレーダなどの各センサに対応する構成として、センサA入力部101A、センサB入力部101Bなどの構成要素を内部に1つ以上備える。このセンサ入力部101は、各センサからの入力をセンサデータとして取得してもよいし、取得したセンサデータに対して何らかの演算を行ってもよい。
 アクチュエータ出力部103は各アクチュエータに対応する構成として、アクチュエータA出力部103A、アクチュエータB出力部103Bなどの構成要素を内部に1つ以上備える。アクチュエータ出力部103は、データ管理部104から出力されるデータをそのままアクチュエータに対して出力してもよいし、データ管理部104から出力されるデータに何らかの演算を行った結果を出力してもよい。
 センサ入力部101やアクチュエータ出力部103の各構成要素がアプリケーション入出力データ群111にアクセスする際にも、データ管理部104の備えるデータ操作インタフェース201を介して行う。このようにアプリケーションやセンサ入力部101、およびアクチュエータ出力部103はデータ管理部104の備えるデータ操作インタフェース201を介してアプリケーション入出力データ群111にアクセスする構成となっている。
 本実施の形態では、アプリケーションやセンサ入力部、およびアクチュエータ出力部の各構成部品をまとめて、抽象化した概念としてソフトウエアの一部分とみなして「ソフト部品」と呼称する。上述したように、ソフト部品はデータ管理部104の備えるデータ操作インタフェース201を介してアプリケーション入出力データ群111にアクセスする。
 データ管理部104は、アプリケーションやセンサ入力部101、アクチュエータ出力部103へ入出力するデータをアプリケーション入出力データ群111として集約管理する。このように、データをすべてデータ管理部104が集約管理し、データ入出力のための共通インタフェースとして、データ操作インタフェースを介してアクセスさせる構成とすることで、次の利点がある。すなわち、アプリケーションのデータ入出力の制御は、データ管理部104の内部に隠蔽される。
 実行制御部102により実行される各アプリケーションは、共通のインタフェースであるデータ操作インタフェース201を活用することにより次の利点がある。すなわち各アプリケーションは、データ入出力の設計が変更されたとしても、アプリケーションそのものを修正してインタフェースを変更する必要がない。換言すると各アプリケーションは、アプリケーションを修正することなく、様々なデータ入出力に対応することができる。
(アプリケーション入出力データ群111)
 図3は、アプリケーション入出力データ群111の一例を示す図である。アプリケーション入出力データ群111は、データ管理部104が記憶部110上で管理しているデータの集合である。アプリケーション入出力データ群111は1以上のデータから構成され、各データにはデータ種類301、データID302、タイムスタンプ303、およびデータ固有属性群304が含まれる。
 データ種類301は、各データの概念的な種別を示す。データ種類301はたとえば、他車両、歩行者、白線、標識などである。データID302は、データ種類301を共通に持つデータ群の中で対象のデータを一意に特定するための識別子である。同一の対象要素、たとえば同一の車両を示すと判断される場合は、同一の値が設定される。異なるデータ種類301をもつデータ群の中ではデータID302は重複しうる。
 タイムスタンプ303は、データに付随する時間情報である。時間情報は、たとえば、データが表現している対象時刻が該当する。センサ入力部がデータの生成元の場合は、データをセンサが検出した時刻に相当する。タイムスタンプ303はたとえば年、月、日、時、分、秒、および小数点以下3ケタの秒数をスラッシュで繋げた書式で表され、たとえば図3の1行目に記載の「2018/1/1/01/00/00/001」は、2018年1月1日1時0分0.001秒を表す。
 以上の3点、すなわちデータ種類301、データID302、およびタイムスタンプ303は、データの種類に関わらず、いずれのデータも保持する情報である。次に説明するデータ固有属性群304はデータ種類301の値によって構成が異なる。データ固有属性304群は1以上のデータ固有情報から構成され、構成するデータ固有情報の数はデータの種類により異なる。たとえば、図3の1つ目のデータのようにデータ種類301が「自車両」のデータは、データ固有情報1として三次元の位置情報を有し、データ固有情報2として三次元の速度情報を有する。
 なお図3に示すデータフォーマットは一例であり、アプリケーション入出力データ群111のデータフォーマットはこれに限定されない。たとえば、図3に示す例ではデータ種類を一列で一意に指定するフォーマットとしているが、データ種類を二層で表現してもよい。この場合はたとえばデータ種類301の大項目を「車両」とし、その小項目として「自車両」や「他車両」を設ける。フォーマットの形式によらず、統一的なデータフォーマットを作用することで、データに対する操作を汎用的に実装できる。たとえば、後述する図4の設定情報に記載されたソート方法410では「データIDソート」「タイムスタンプでソート」等のデータフォーマットに則るソートの方法を記載しているが、このようなソートを実現可能であるのは、データフォーマットを統一的に規定しておいたことによる。
(設定情報群112)
 図4は、設定情報群112の一例を示す図である。設定情報群112は、記憶部110上に記録されている設定情報の集合である。設定情報群112は1以上の設定情報から構成される。各設定情報には、入力元アプリ401、出力先アプリ402、データ種類403、設定情報ID404、使用可否405、出力要素数406、通知待機407、種別408、コア数409、ソート方法410、および割当方法411が含まれる。なお以下では、出力先アプリ402を「第1ソフト部品」と呼ぶこともあり、入力元アプリ401を「第2ソフト部品」と呼ぶこともある。
 設定情報群112のキーは、入力元アプリ401、出力先アプリ402、およびデータ種類403の組み合わせである。図4に示す例ではこれら3つの情報を別々の列で表現しているが、単一の列に統合した表としてもよい。これら3つの情報をもとにして対象のデータを特定し、そのデータを出力する際の制御の設定情報が表現されている。一つの対象データに対して複数の設定情報があってもよい。次に各列を順に説明する。
 入力元アプリ401は、データの入力元アプリケーションの種類を示す。入力元アプリ401はたとえば、センサフュージョンや行動推定などである。ただし図4に示す例では、作図の都合によりセンサフュージョンを「SF」と記載している。なお入力元アプリ401に示されたアプリケーションは、複数の演算コアで並列的に演算されてもよいし、単一の演算コアで演算されてもよい。本項目はアプリケーションを特定する列挙値や識別値で記載されていてもよい。
 出力先アプリ402は、データの出力先となるアプリケーションの種類を示す。出力先アプリ402はたとえば、センサフュージョン、行動推定、および地図フュージョンなどである。ただし図4に示す例では、作図の都合により地図フュージョンを「地図F」と記載している。出力先アプリ402に示されたアプリケーションは、複数の演算コアで並列的に演算されてもよいし、単一の演算コアで演算されてもよい。本項目はアプリケーションを特定する列挙値や識別値で記載されていてもよい。
 データ種類403は、データの概念的な種別を示す。データ種類403はたとえば、他車両、歩行者、白線、標識などである。データ種類403は、入力元アプリ401と出力先アプリ402の間で受け渡しされるデータの種別である必要がある。本項目は図3に示す例におけるデータ種類301に相当する。データ種類301の場合と同様に、データ種類を一層で表現しても、二層で表現してもよい。
 設定情報ID404は、アプリケーションの入出力設定のIDを示す。すなわち、設定情報群112のキーとなる、入力元アプリ401、出力先アプリ402、およびデータ種類403の組み合わせで特定される対象データに対する設定情報が複数存在する場合にそれら複数の設定情報を識別する識別子である。図4に示す例では、対象データに対して設定情報が単一の場合には、設定情報ID404は1が設定される。対象データに対して設定情報が複数存在する場合には、たとえば、図4に示すように設定情報IDに異なる値が設定される。本項目は、設定情報群112として必須の項目ではなく、対象データに対して複数の設定情報が存在する場合のみ存在するものである。つまり対象データに対して単一の設定情報のみが存在する場合には本項目は不要である。
 使用可否405は、対象データに対する設定情報が使用されるか否かを示す。換言すると使用可否405は、当該設定情報が有効か無効かを示す。図4に示す例では、入力元アプリ401がセンサフュージョン、出力先アプリ402が行動推定、データ種類403が他車両で特定されるデータに対して設定情報が3つ存在する。使用可否405はこの3つのうちいずれが使用されるかを示すものであり、1つのみが肯定的な設定、たとえば「True」に設定される。図4ではち設定情報IDが「1」の設定情報のみ使用可否405がTrueとなっており、有効である例が示されている。
 なお使用可否405は、設定情報群112としては必須の項目ではなく、対象データに対して複数の設定情報が存在する場合のみ必要な項目である。対象データに対して単一の設定情報のみが存在する場合には本項目は不要である。
 出力要素数406は、データ管理部104から出力先アプリ402に対して出力するデータの要素数を示す項目である。出力要素数406が「3」となっている場合には、配列の要素を3つずつ出力する。出力するデータの型が配列でない場合には本項目は不要である。
 種別408は、データ管理部104から出力先アプリ402に対してデータ出力するタイミングが、Pull型とPush型のいずれかであるかを示す。Pull型と指定されている場合には、データ管理部104が出力先アプリ402からデータ出力要求を受けたタイミングで出力する。Push型と指定されている場合には、データ管理部104は、入力元アプリ401からデータ入力要求を受けたタイミングに、出力先アプリ402へデータ出力を行う。本項目は、そもそもPull型とPush型の両方をデータ管理部104のデータ出力として機能をサポートする場合に必要なものであり、Pull型もしくはPush型のどちらか片方のみサポートする場合には不要である。
 通知待機407は、データ管理部104が出力先アプリ402から出力要求を受けた際に、入力元アプリ401の処理完了を待機した上でデータを出力するか否かを示す。通知待機407が「True」と指定されていた場合には、全コアで動作している入力元アプリ401から完了通知を受け取ってから出力を行う。したがって本項目とコア数409はセットで扱われる。通知待機407が「False」と指定されていた場合には、入力元アプリ401の処理完了に関わらず出力を行う。通知待機407は、種別408がPull型に設定されている設定情報のみ参照される項目である。種別408がPush型に設定されている設定情報では通知待機407は設定されなくてよい。
 コア数409は、入力元アプリ401に記載されたアプリケーションがいくつのCPUコア上で演算されるかを示す。通知待機407が「True」の場合には、演算を実行している全てのコアからの処理完了の通知を待機する必要があるので、コア数409の情報が必要となる。換言すると、通知待機407が「False」の場合にはコア数409は参照の必要はなく、コア数409に情報が記載されなくてもよい。
 ソート方法410は、データ管理部104が出力先アプリ402へ出力する対象のデータに対して、予め実行しておくソートの方法を示す。このソートの実行結果によって、どのような順序で要素が出力されるかが変化する。ソート方法410には次に説明する「データID」、「タイムスタンプ」、「データ固有情報」、および「距離ソート」が含まれてもよい。「データID」によるソートとは、図3で示したデータID302をキーとして、昇順または降順でソートする方法である。「タイムスタンプ」によるソートとは、図3で示したタイムスタンプ303をキーとして、昇順または降順でソートする方法である。「データ固有情報」によるソートとは、図3で示したデータ固有属性群304のいずれかの情報をキーとして、昇順または降順でソートする方法である。
 さらに、データの値を直接ソートキーとして使う代わりに、データの値をもとに演算した結果をキーとしてソートしてもよい。たとえば、データが固有属性として位置情報を保持する場合に、自車両9と対象データの位置情報を用いてユークリッド距離を演算し、その演算結果である距離の長さに基づいてソートすることも考えられる。図4に示す例ではこの方法を「距離ソート」と記載している。さらにソート方法を独自関数で実装し、その関数の識別子を指定することも可能である。また、ソート方法を指定しないことも可能である。このソートの設定情報に基づくソート処理は、データ管理部104が、データを集約管理している場合に効果が発生するものである。
 割当方法411は、出力先アプリへ出力するデータの指定方法を示す。割当方法411の例として、「出力要求順割当」および「空間領域割当」を説明するが、他の指定方法が選択可能でもよい。「出力要求順割当」とは、出力先アプリへデータ出力する契機があった場合に、インデックスの小さい順に出力する方法である。データのインデックスは生成された順番に付されてもよいし、ソート方法410に記載の方法でインデックスがソートされてもよい。「空間領域割当」とは、出力対象のデータがたとえば、車両9が存在する2次元平面グリッドマップを示すような際に、その平面を空間的に分割した上で、動作スレッドに対して分割空間領域に存在するデータ要素を割り当てる方法である。たとえば、車両前方と車両後方で空間領域を二分割して、車両前方は特定の動作スレッドに割り当てて、車両後方は別の特定の動作スレッドに割り当てるなどを行うことが考えられる。
 ところで、この空間領域割当の例のように、出力先の動作スレッドを識別した上で、その動作スレッドごとに割当を決める場合には、データ管理部104は、出力要求を受けた動作スレッドを一意に特定する手段を有しておく必要がある。後述する、図9のデータ操作インタフェース201のAPIの一例として記載のデータ出力要求APIでは、データ出力要求を行う呼出元のアプリIDとして、アプリケーションの種類とその動作スレッドを識別する値を引数で渡される例を記載している。
 演算装置10は、この設定情報群112の各項目の情報に従って、データ管理部104が入力元アプリ401と出力先アプリ402の間のデータ入出力を制御する。そのため、たとえば並列化スケジューリング変更に伴ってデータ入出力の制御方法を変更したい場合には、設定情報群112のみ変更すればよい。
(動作例)
 図5~図7は、演算装置10のA~Cの3つの動作例を示す図である。図5に示す例Aは、出力先アプリ402が演算コア1と演算コア2でデータ並列化されている。図6に示す例Bは、入力元アプリ401と出力先アプリ402がパイプライン並列化されている。図7に示す例Cは、入力元アプリ401と出力先アプリ402がともに演算コア1と演算コア2でデータ並列化されている。各例の詳細は後述する。
 複数の演算コアを効率よく稼動させて、入力元アプリ401、たとえばセンサフュージョンアプリと出力先アプリ402、たとえば行動推定アプリ4とを高速に実行するための性能チューニングとして、スケジューリング設計を例A、例B、例Cの間で相互に変更されることが想定される。そのようなスケジューリング設計が変更された場合にも、図4に示す設定情報群112の使用可否405を書き換えることで、データ管理部104がデータ出力制御を変更することが可能となる。
 図5に示す例Aでは、出力先アプリ402が演算コア1と演算コア2で並列化されている。入力元アプリ401の実行時間が、アプリケーション実行時間501として示されている。出力先アプリ402の実行時間が、演算コア2上でアプリケーション実行時間502、演算コア1上でアプリケーション実行時間503として示されている。この例Aでは、入力元アプリ401から出力先アプリ402へのデータ出力の設計として、「出力データ要素は3つずつ」、「入力元アプリ401が処理完了した後に」、「出力先アプリ402から出力要求があるたびにデータを出力先アプリへ出力する」、という設計によるデータ出力の様子をシーケンス図で示している。
 まず図5の左半分、すなわち符号510Aの矢印の処理までを説明する。図5に示す例Aでは、まず入力元アプリ401が演算を行い、演算結果が得られるたびに符号510で示すように演算結果を出力する。入力元アプリ401が出力を行っている最中に、符号500で示すように出力先アプリ402から入力元アプリ401にデータが要求される。そして入力元アプリ401は符号501で示す時間を要して演算を完了させ、符号510Aに示すように処理が完了した旨の通知を送信する。
 データ管理部104は、図4の例に示す1行目の設定情報、すなわち、出力要素数406が「3」、通知待機407が「True」、種別408が「Pull」、コア数409が「1」を読み取り、図5に示す例の動作を行う。すなわち、符号510Aで示す完了通知を「1」つ受信すると出力先アプリ402への出力を開始しており、符号511に示すように入力元アプリ401から受信したデータ「3」つを1つの塊として出力する。
 図6に示す例Bでは、入力元アプリ401と出力先アプリ402がパイプライン並列化されている。入力元アプリ401の実行時間が、アプリケーション実行時間501として示されている。出力先アプリ402の実行時間が、アプリケーション実行時間505として示されている。これらのアプリケーションはそれぞれ別の演算コアで実行されており、時間的に同時並列的に動いている。入力元アプリ401の動作は例Aと同様なので説明を省略する。
 この例Bでは、入力元アプリ401から出力先アプリ402へのデータ出力の設計は、「出力データ要素は1つずつ」、「入力元アプリ401が処理完了するか否かに関わらず」、「入力元アプリ401からデータがアプリケーション入出力データ群111へ格納されるタイミングでデータを出力先アプリ402へ出力する」、という設計によるデータ出力の様子をシーケンス図で示している。
 データ管理部104は、図4の例に示す2行目の設定情報、すなわち、出力要素数406が「1」、種別408が「Push」を読み取り、図6に示す例の動作を行う。すなわちデータ管理部104は、入力元アプリ401からデータが「1」つ出力されると、種別408が「Push」なので完了通知を待機せずに、即座に出力先アプリ402への送信を開始する。
 図7に示す例Cでは、入力元アプリ401と出力先アプリ402がともに演算コア1と演算コア2でデータ並列化されている。演算コア1上で実行する入力元アプリ401の実行時間がアプリケーション実行時間601として、演算コア2上で実行する入力元アプリ401の実行時間がアプリケーション実行時間602として示されている。演算コア1上で実行する出力先アプリ402の実行時間がアプリケーション実行時間603として、演算コア1上で実行する出力先アプリ402の実行時間がアプリケーション実行時間604として示されている。
 この例Cでは、データ出力の設計として、「出力データ要素は3つずつ」、「入力元アプリ401が処理完了した後に」、「データを出力先アプリ402へ出力する」、という設計によるデータ出力の様子をシーケンス図で示している。データ管理部104は、図4の例に示す3行目の設定情報、すなわち、出力要素数406が「3」、通知待機407が「True」、種別408が「Pull」、コア数409が「2」を読み取り、図7に示す例の動作を行う。
 入力元アプリは演算コア1と演算コア2で並列動作して、それぞれのコアは演算が完了すると完了通知を出力する。演算コア2は処理が先に完了し、符号611で示すデータと、符号612で示す完了通知を出力する。この時点におけるデータ管理部104の判断は次のとおりである。すなわちデータ管理部104は、出力要素数406が「3」でありすでに入力元アプリ401から3つのデータを受信しているが、受信した完了通知は1つしか受信しておらず、コア数409の「2」よりも少ないため出力条件を満たしていないと判断する。
 その後、演算コア1が演算を完了し、符号613に示す3つのデータの出力と、符号614に示す完了通知を送信すると、データ管理部104は出力条件を満たしたと判断して出力先アプリ402にデータを出力する。
(フローチャート)
 図8~図10を参照して、データ管理部104のデータ入出力処理を説明する。図8はデータ管理部104にデータが入力される際の処理であるデータ入力処理を示すフローチャートである。ただし図8では、所定の入力元アプリXからデータ入力がされるとしてデータ管理部104の動作を説明する。
 データ管理部104は、ステップS701において、入力元アプリXからデータ入力要求を受けてステップS702に進む。本データ入力要求では後述する図9のデータ入力要求APIを通じて、いずれの入力元アプリからも共通のAPIにてアクセスされる。その際に、入力元アプリ401、データ種類403等の情報を入力データそのものとともに、API引数としてデータ管理部104が受け取る。
 データ管理部104は、ステップS702において、入力元アプリ401とデータ種類403の情報をもとに、アプリケーション入出力データ群111の該当アドレスにデータを格納してステップS703に進む。入力元アプリ401とデータ種類403の情報とデータを格納するアドレスを紐付けるテーブルは、データ管理部104が内部で保持してもよいし、別のモジュールが保持してそれをデータ管理部104が参照してもよい。
 データ管理部104は、ステップS703において、所定の待機スレッドに対して、入力元アプリ401とデータ種類403のデータが新たに格納されたことを通知してステップS704に進む。この待機スレッドは後述するステップS752において待機している。データ管理部104は、ステップS704において、後述するPush処理を実行してステップS705に進む。ステップS705において処理対象となるのは、設定情報群112において種別408が「Push」である設定情報である。種別408が「Pull」である設定情報は、後述する図10に示すフローチャートにおいて処理される。
 データ管理部104は、ステップS705において、入力元アプリ401から完了通知があるか否かを判断する。なお以下では、「完了通知」は「アプリ処理完了通知」や「処理完了通知」とも呼ぶ。入力元アプリ401からのデータ処理完了通知は、後述する図11のアプリ処理完了通知APIを通じて受け付ける。データ管理部104は、データ処理完了通知があると判断する場合にはS706へ進み、ないと判断する場合は図8に示す処理を終了する。
 データ管理部104は、ステップS706において、アプリケーション入出力データ群111へ完了通知を格納して図8に示す処理を終了する。本通知は、後に説明する図9に示すフローチャートにおいて参照される。
 図9は、図8のステップS704の詳細を示すフローチャートである。データ管理部104はステップS751では、Push処理対象の設定情報が存在するか否かを判断する。データ管理部104は、Push処理対象の設定情報が存在すると判断する場合はステップS752に進み、Push処理対象の設定情報が存在しないと判断する場合は図9に示す処理を終了する。データ管理部104は具体的には、設定情報群112において入力元アプリ401が「入力元アプリX」の種別であり、データ種類403が受信したデータのデータ種類であり、使用可否405が「True」であり、かつ種別408が「Push」である設定情報が存在するか否かを判断する。
 ステップS752ではデータ管理部104は、ステップS751において存在を確認した設定情報の出力条件を満たすか否かを判断する。データ管理部104は、出力条件を満たすと判断する場合はステップS753に進み、出力条件を満たさないと判断する場合はステップS752に留まる。具体的にはデータ管理部104は、出力要素数406の要素数分のデータがアプリケーション入出力データ群111に蓄積されているか否かを判断する。ただしステップS752において否定判断する場合は、ステップS752における待機が短時間で解消しない可能性もあるため、待機以下の処理を別スレッドで実行させて、次のデータ入力要求受付に備えて待機する。以下ではステップS752において否定判断されたことで生成されるスレッドを「待機スレッド」とも呼ぶ。
 ステップS753ではデータ管理部104は、設定情報にソート方法410や割当方法411の記載がある場合には、その記載にしたがって、ソートや要素の割当を行いステップS754に進む。設定情報にソート方法410の記載がある場合には、その記載にしたがってソートを行う。たとえばデータIDで昇順もしくは降順にソートし要素を入れ替える。また設定情報に割当方法411の記載がある場合には、その記載にしたがって要素を割り当てる。割当の方法はインデックスを入れ替えるのでもよく、また別の方法としてスレッドごとに配列を確保して割当られた要素をコピーするなどしてもよい。データ管理部104は、ステップS754において、出力先アプリ402に対して指定要素分出力を行い図9に示す処理を終了する。
 図10はデータ管理部104が出力先アプリへデータを出力するデータ出力処理を示すフローチャートである。データ管理部104は、ステップS800において、出力先アプリ402からデータ出力要求を受けるとステップS801に進む。本データ出力要求では後述する図11のデータ出力要求APIを通じて、いずれの出力先アプリからも共通のAPIにてアクセスされる。その際に、入力元アプリ401、出力先アプリ402、データ種類403等の情報をAPI引数としてデータ管理部104が受け取る。
 データ管理部104は、ステップS801において、設定情報群112を読み込んでステップS802に進む。具体的にはデータ管理部104は、入力元アプリ401、出力先アプリ402、データ種類403の情報をキーにして設定情報群112を検索して設定情報を特定し、その設定情報を読み込む。ただしデータ管理部104は、該当する設定情報が複数存在する場合には、使用可否405が「True」に設定されている設定情報のみを読み込む。
 データ管理部104は、ステップS802~ステップS804において、設定情報群112に記載されている各種出力条件を満たしているかを判断する。データ管理部104はまずステップS802において、要素数の蓄積条件を満たすか否か、すなわち出力要素数406の要素数分のデータがアプリケーション入出力データ群111に格納されているか否かを判断する。データ管理部104は要素数の蓄積条件を満たすと判断する場合はステップS803に進み、要素数の蓄積条件を満たさないと判断する場合はステップS802に留まる。
 ステップS803ではデータ管理部104は、通知待機407がFalseであるか否かを判断し、Falseであると判断する場合はステップS805に進み、Falseではない、すなわちTrueであると判断する場合はステップS804に進む。ステップS804ではデータ管理部104は、入力元アプリ401のアプリ処理完了通知を受信済みであるか否かを判断し、受信済と判断する場合はステップS805に進み、受信していないと判断する場合はステップS805に留まる。なおステップS804における判断材料のアプリ処理完了通知とは、前述の図8におけるステップS706の処理によるものである。
 なおデータ管理部104は、ステップS802およびステップS804において否定判断した際にステップS802に留まらず、ステップS800におけるデータ出力要求の送信元にエラーを通知して図10に示す処理を終了してもよい。ステップS805およびステップS806の処理のそれぞれは、ステップS753およびステップS754の処理のそれぞれと同様なので説明を省略する。
 図11は、データ操作インタフェース201が解釈可能なAPIの一例を示す図である。記載例C901は、データ操作インタフェース201をC言語で記述した場合のヘッダファイルの一部を擬似コードで表現したものである。このAPIには、データの入力要求、データの出力要求、およびアプリ処理完了通知等が含まれる。
 記載例C901の最初に示す例であるデータの入力要求API(dataInputRequest)は、データをアプリケーション入出力データ群111に格納する操作を要求するAPIである。このAPIの引数は、呼出元アプリを特定する呼出元アプリID、入力するデータ種類を指定する入力データ種類、データサイズ、およびデータアドレスを含む。呼出元アプリIDは、アプリケーションの種類を一意に特定できる識別子である必要がある。データ種類はデータ種類301は、データの概念的な種別を示すものである。たとえば、他車両、歩行者、白線、標識等があげられる。データサイズは入力されるデータの長さを示す。データアドレスは入力されるデータの格納される。このAPIの呼出は、図8のステップS701に対応する。
 記載例C901の2番目の例であるデータ出力要求API(dataOutputRequest)は、データをアプリケーション入出力データ群111から出力する操作を要求するAPIである。このAPIの引数は、対象データをアプリケーション入出力データ群111に入力したアプリケーションを示す入力元アプリID、呼出元アプリを特定する呼出元アプリID、出力するデータの種類を指定する出力データ種類、格納先バッファサイズ、およびバッファアドレスから構成される。図4における割当方法411で実行スレッドIDに紐付くデータ割当方法が指定されるように設定情報が指定されていた場合には、本データ出力要求APIにおける引数の呼出元アプリIDは、アプリケーションの種類とそのアプリケーションの動作スレッドの両者を一意に特定できる識別子である必要がある。このAPIの呼出が、図10のステップS800に対応する。
 記載例C901の3番目の例であるアプリ処理完了通知APIは、入力元アプリ401が処理を完了した際に、入力元アプリ401から呼び出されるものである。これに基づいて、図7におけるステップS705での判定がなされる。
 以上のように、データ管理部の備えるデータ操作インタフェース201は、アプリケーションの種類やアプリケーションの実行スケジューリングに依存しない引数が定義されている。そのため、データ並列化やパイプライン並列化等のアプリケーションの実行スケジューリングに変更があった場合にも、アプリケーションのインタフェース自体は変更する必要がない。
 図12は、アプリケーションの記述様式の一例として擬似コード1000を示す図である。この記述様式を用いて、入力元アプリ401や出力先アプリ402を含めあらゆるアプリケーションが記述されることを想定している。擬似コード1000の内部では、データが繰り返し処理される。たとえば、自車両周辺の他車両の行動を推定するアプリケーションの場合には、他車両1台ずつについて、その他車両の情報や周辺状況に基づいて、行動推定が繰り返される。
 その繰り返し処理の先頭において処理部100は、符号1000Aで示すように、まずアプリケーションはデータの出力要求APIを用いてデータを取得する。図12の擬似コード1000では、単一のデータの出力要求するAPIを一度呼び、その出力データに対して処理を行う記述となっている。たとえば、この単一のデータの中に複数のデータを構成した構造体としてもよい。また、別の方法として、別々のデータ構造体に分かれた複数のデータを取得するために、出力要求APIを複数回呼ぶ構成としても構わない。図4における割当方法411で実行スレッドIDに紐付くデータ割当方法が指定されるように設定情報が指定されていた場合には、呼出元アプリIDは次の制約が課せられる。すなわち本データ出力要求APIにおける引数の呼出元アプリIDは、アプリケーションの種類とそのアプリケーションの動作スレッドの両者を一意に特定できる識別子である必要がある。
 次に処理部100は、符号1000Bで示すように、取得したデータに対してアプリケーション独自の処理を行う。データに対する処理結果として図12の擬似コード1000では、単一のデータを返り値として記述しているが、複数のデータを処理結果としてもよい。次に処理部100は、符号1000Cで示すように、処理結果を次にデータ管理部104のデータ入力要求APIを用いて入力する。図12の擬似コード1000では、単一のデータを入力するために、データの入力要求を一度呼んでいるが、複数のデータを入力するためにデータの入力要求を複数回呼ぶ構成としてもよい。
 次に処理部100は、符号1000Dで示すように、アプリケーションが処理するデータの出力元であるアプリケーションの処理完了通知がアプリケーション入出力データ群111に入っている場合には、アプリ処理完了通知を、データ管理部104に対して通知する。
 図12の擬似コード1000のような記述様式としておくことで、アプリケーションからはデータ入出力設計の設定情報に関わらず統一的な記述が可能となる。データ入出力の制御に関しては、擬似コード1000で呼ぶデータ管理部104の提供するデータ操作インタフェース201の内部に隠蔽される。
 以上のように、本実施形態によれば、予めアプリケーションとアプリケーション間で入出力されるデータに対して、出力タイミングや出力データ数を定義した設定情報を演算装置10に保持しておき、さらにアプリケーションから共通のインタフェースでデータ入出力可能なデータ管理部を介して、アプリケーションはデータを入出力することで、データ管理部は、設定情報に基づいて、アプリケーションへの出力データ数や出力タイミングを制御する。これにより、データの入出力設計の変更を設定情報の変更のみで行うことができ、アプリケーションのインタフェースを変更する必要がない。
 上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)演算装置10は、所定の対象要素に対応するデータ要素の集合であるオブジェクトデータ、すなわちアプリケーション入出力データ群111に格納される情報、およびオブジェクトデータの出力方式、すなわち設定情報群112の符号406~符号411の情報に関する設定情報を複数含む設定情報群112が格納される記憶部110と、オブジェクトデータを管理するデータ管理部104と、データ管理部104から取得されるオブジェクトデータである入力オブジェクトデータに基づいてオブジェクトデータである出力オブジェクトデータを演算し、出力オブジェクトデータをデータ管理部に出力するソフト部品を複数備える実行制御部102と、を備える。設定情報群112を構成するそれぞれの設定情報は、第1ソフト部品(出力先アプリ402)に対する入力オブジェクトデータであり第2ソフト部品(入力元アプリ401)が出力する出力オブジェクトデータ、すなわち設定情報群112の符号401~符号403により特定されるオブジェクトデータと、第2ソフト部品が出力する出力オブジェクトデータを第1ソフト部品に対して出力する際の出力方式、すなわち設定情報群112の符号406~符号411の情報と、が対応付いた情報である。データ管理部104は、第2ソフト部品(入力元アプリ401)から受け取ったオブジェクトデータを管理し、オブジェクトデータを、設定情報に規定された出力方式に基づき、第1ソフト部品(出力先アプリ402)に出力する。そのため演算装置10は、アプリケーションを変更することなくデータ入出力の変更に対応できる。
(2)出力方式は、オブジェクトデータの出力要素単位情報、すなわち出力要素数406と、オブジェクトデータの出力開始タイミング情報、すなわち通知待機407および種別408と、オブジェクトデータのスレッド割当方法、すなわち割当方法411と、のいずれか1つ以上を含む。
(3)出力方式は、さらにオブジェクトデータのソート方法410を含む。そのため制御装置10は、多彩な出力方式を設定可能である。
(4)演算装置10は、データ管理部に対するオブジェクトデータの入出力を操作するためのデータ操作インタフェース201を備える。ソフト部品は、データ操作インタフェース201を介してデータ管理部104に対するオブジェクトデータの入出力を操作する。データ操作インタフェース201は、データ管理部104によるソフト部品に対するオブジェクトデータの出力方式に関わらず共通である。そのため、アプリケーションのデータ入出力の制御はデータ管理部104の内部に隠蔽できる。
(変形例1)
 記憶部110は演算装置10の外部に設けられてもよい。その場合は演算装置10は、通信部120を介して記憶部110にアクセス可能に構成される。
(変形例2)
 実行制御部102は、設定情報群112を書き換えてもよい。本変形例では、記憶部110に対応表115がさらに格納される。対応表115は、状態と設定値との対応を示す表である。
 図13は対応表115の一例を示す図である。実行制御部102は対応表115を読み込み、車両9が図示左側の欄に記載した状態に該当すると判断すると、設定情報群112を図示左側の欄に記載した設定値に書き換える。ただし図13に示す例では、具体的な設定値の代わりにDEF1、DEF2、などを記載している。この設定値は具体的には、使用可否405の項目の値である。たとえば図4に示す全ての設定情報についてのTrueまたはFalseのいずれかの情報であってもよいし、Trueである設定情報を特定する情報でもよいし、Falseである設定情報を特定する情報であってもよい。
 図14は、実行制御部102が設定情報群112を動的に書き換える設定情報切替処理のフローチャートである。ステップS1100では実行制御部102は、対応表115を読み込む。続くステップS1101では実行制御部102は、外界センサ群20および車両センサ群30から取得した情報に基づき、車両9の状態を検出する。続くステップS1102では実行制御部102は、ステップS1101において検出した車両9の状態に対応する対応表115の設定値を読み取る。続くステップS1103では実行制御部102は、ステップS1102において読み取った設定値に設定情報群112を書き換えて図14に示す処理を終了する。具体的には実行制御部102は、設定情報群112の使用可否405の値を書き換える。
 このように、アプリケーションの実行スケジュールの切替に合わせて、データ管理部から参照される設定情報群112を書き換えておくことで、アプリケーションの実行スケジュールに合わせた、データ入出力の設計を、アプリケーションの変更なしに動的に実現することができる。図13では、動的に設定情報を変更する処理フローF1100を示したが、もちろん複数の設定情報に対して、アプリケーション動作中ではなく、静的にどの設定情報を有効化するかを変更してもよい。
 この変形例2によれば次の作用効果が得られる。
(5)演算装置10は、設定情報群112を書き換える実行制御部102を備える。そのため状況に応じて設定情報群112を書き換え、アプリケーションのデータ入出力を任意のタイミングで変更できる。なお本変形例では実行制御部102が設定情報群112を書き換えたが、実行制御部102以外が設定情報群112を書き換えてもよいし、演算装置10が他の機能構成を備え、その機能構成が設定情報群112を書き換えてもよい。また実行制御部102は、動的に、すなわちアプリケーションの動作中に設定情報群112を書き換えてもよいし、静的に、すなわちアプリケーションの停止中に設定情報群112を書き換えてもよい。
(変形例3)
 設定情報群112は、符号406から符号411に示す構成の少なくとも1つを含めばよい。設定情報群112に含まれない構成は既定の固定値としてもよい。たとえば設定情報群112から出力要素数406を削除し、全ての設定情報において出力要素数406を「1」として扱ってもよい。
―第2の実施の形態―
 図15を参照して、車両制御システムの第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、演算装置をテスト環境で動作させる点で、第1の実施の形態と異なる。
(構成)
 図15は、第2の実施の形態に係る車両制御システムの全体構成図である。第1の実施の形態との相違点は、車両制御システム1Aが車両9ではなく車両9の外部に存在するテスト環境9Aに置かれる点が大きく異なる。また第1の実施の形態において説明した外界センサ群20、車両センサ群30、アクチュエータ群40、および車載ネットワーク50Aは車両9に備えられる構成なので、本実施の形態ではそれらに代わって、外界センサ群シミュレータ20A、車両センサ群シミュレータ30A、アクチュエータ群シミュレータ40A、およびネットワーク50Aが備えられる。さらに車両制御システム1Aにはオペレータ端末60Aも備えられる。
 外界センサ群シミュレータ20Aは、外界センサ群20の動作をシミュレートする装置である。具体的には外界センサ群シミュレータ20Aは、予め定められたタイミングであらかじめ定められたデータを演算装置10Aに出力する。車両センサ群シミュレータ30Aは、車両センサ群30の動作をシミュレートする装置である。具体的には車両センサ群シミュレータ30Aは、予め定められたタイミングであらかじめ定められたデータを演算装置10Aに出力する。アクチュエータ群シミュレータ40Aは、アクチュエータ群40の動作をシミュレートする装置である。具体的にはアクチュエータ群シミュレータ40Aは、演算装置10Aからの動作指令を受ける。
 なおアクチュエータ群シミュレータ40Aが演算装置10Aから入力される情報に基づき、外界センサ群シミュレータ20Aおよび車両センサ群シミュレータ30Aが出力する情報を加工してもよい。たとえば演算装置10Aがアクチュエータ群シミュレータ40Aにアクセルペダルの踏み込み量増加の指令を出力すると、車両センサ群シミュレータ30Aが出力する自車両9の速度の出力、すなわち速度の値を増加させてもよい。
 ネットワーク50Aは、たとえば室内に敷設されたLANである。ただしネットワーク50Aは無線LANであってもよい。オペレータ端末60Aはたとえばオペレータが操作するパーソナルコンピューターである。オペレータは、オペレータ端末60Aを介して10Aの内部に自由にアクセスができる。オペレータはオペレータ端末60Aを操作することで、設定情報群112の書き換え、および動作ログ116の取得が可能である。
 本実施の形態における演算装置10Aの構成は、記憶部110に動作ログ116がさらに格納される点、および処理部100がその機能としてログ記録部105をさらに有する点が第1の実施の形態と異なる。ログ記録部105は、時間の情報を付して処理部100の動作を動作ログ116に記録する。
 上述した第2の実施の形態によれば、車両9の外部で事前に様々な状況をテストすることができる。
(第2の実施の形態の変形例)
 上述した第2の実施の形態では、外界センサ群シミュレータ20A、車両センサ群シミュレータ30A、およびアクチュエータ群シミュレータ40Aは演算装置10Aとは異なるハードウエアにより実現され、ネットワーク50Aにより接続された。しかし演算装置10A、外界センサ群シミュレータ20A、車両センサ群シミュレータ30A、およびアクチュエータ群シミュレータ40Aが同一のハードウエアにより実現されてもよい。換言すると、第2の実施の形態における構成は、全てが1台のコンピュータにおける仮想的な構成であってもよい。
 演算装置10が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースと演算装置10が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、たとえば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やFPGA(field programmable gate array)により実現されてもよい。上述した複数の変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
 次の優先権基礎出願の開示内容は引用文としてここに組み込まれる。
 日本国特許出願2019-3818(2019年1月11日出願)
1…車両制御システム
9…車両
10…演算装置
100…処理部
102…実行制御部
104…データ管理部
105…ログ記録部
110…記憶部
111…アプリケーション入出力データ群
112…設定情報群
112…データ入出力設定情報群
113…スレッド数情報群
114…アプリケーション群
201…データ操作インタフェース

Claims (6)

  1.  所定の対象要素に対応するデータ要素の集合であるオブジェクトデータ、および前記オブジェクトデータの出力方式に関する設定情報が格納される記憶部と、
     前記オブジェクトデータを管理するデータ管理部と、
     前記データ管理部から取得される前記オブジェクトデータである入力オブジェクトデータに基づいて前記オブジェクトデータである出力オブジェクトデータを演算し、前記出力オブジェクトデータを前記データ管理部に出力するソフト部品を複数備える実行制御部と、を備え、
     前記設定情報は、第1ソフト部品に対する前記入力オブジェクトデータであり第2ソフト部品が出力する前記出力オブジェクトデータと、前記第2ソフト部品が出力する前記出力オブジェクトデータを前記第1ソフト部品に対して出力する際の出力方式と、が対応付いた情報であり、
     前記データ管理部は、前記第2ソフト部品から受け取った前記オブジェクトデータを管理し、前記オブジェクトデータを、前記設定情報に規定された出力方式に基づき、前記第1ソフト部品に出力する演算装置。
  2.  請求項1に記載の演算装置において、
     前記出力方式は、
     前記オブジェクトデータの出力要素単位情報と、前記オブジェクトデータの出力開始タイミング情報と、前記オブジェクトデータのスレッド割当方法と、のいずれか1つ以上を含む演算装置。
  3.  請求項2に記載の演算装置において、
     前記出力方式は、さらに前記オブジェクトデータのソート方法を含む演算装置。
  4.  請求項1に記載の演算装置において、
     前記設定情報を書き換える演算実行制御部をさらに備える演算装置。
  5.  請求項1に記載の演算装置において、
     前記データ管理部に対する前記オブジェクトデータの入出力を操作するためのインタフェース部と、を更に備え、
     前記ソフト部品は、前記インタフェース部を介して前記データ管理部に対する前記オブジェクトデータの入出力を操作し、
     前記インタフェース部は、前記データ管理部によるソフト部品に対する前記オブジェクトデータの出力方式に関わらず共通である演算装置。
  6.  所定の対象要素に対応するデータ要素の集合であるオブジェクトデータ、および前記オブジェクトデータの出力方式に関する設定情報が格納される記憶部にアクセス可能であり前記オブジェクトデータを管理するデータ管理部を備える演算装置が実行する演算方法であって、
     前記データ管理部から取得される前記オブジェクトデータである入力オブジェクトデータに基づいて前記オブジェクトデータである出力オブジェクトデータを演算し、前記出力オブジェクトデータを前記データ管理部に出力するソフト部品を複数備えることと、
     前記設定情報は、第1ソフト部品に対する前記入力オブジェクトデータであり第2ソフト部品が出力する前記出力オブジェクトデータと、前記第2ソフト部品が出力する前記出力オブジェクトデータを前記第1ソフト部品に対して出力する際の出力方式と、が対応付いた情報であり、
     前記データ管理部は、前記第2ソフト部品から受け取った前記オブジェクトデータを管理し、前記オブジェクトデータを、前記設定情報に規定された出力方式に基づき、前記第1ソフト部品に出力することとを含む演算方法。
PCT/JP2019/049658 2019-01-11 2019-12-18 演算装置、演算方法 WO2020145057A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019003818A JP7149189B2 (ja) 2019-01-11 2019-01-11 演算装置、演算方法
JP2019-003818 2019-01-11

Publications (1)

Publication Number Publication Date
WO2020145057A1 true WO2020145057A1 (ja) 2020-07-16

Family

ID=71521300

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/049658 WO2020145057A1 (ja) 2019-01-11 2019-12-18 演算装置、演算方法

Country Status (2)

Country Link
JP (1) JP7149189B2 (ja)
WO (1) WO2020145057A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013114391A (ja) * 2011-11-28 2013-06-10 Mitsubishi Electric Corp データ処理装置およびデータ処理方法およびプログラム
JP2018060281A (ja) * 2016-10-03 2018-04-12 日立オートモティブシステムズ株式会社 車載処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013114391A (ja) * 2011-11-28 2013-06-10 Mitsubishi Electric Corp データ処理装置およびデータ処理方法およびプログラム
JP2018060281A (ja) * 2016-10-03 2018-04-12 日立オートモティブシステムズ株式会社 車載処理装置

Also Published As

Publication number Publication date
JP2020113080A (ja) 2020-07-27
JP7149189B2 (ja) 2022-10-06

Similar Documents

Publication Publication Date Title
JP6652477B2 (ja) 車載処理装置
JP2023507695A (ja) 自律運転アプリケーションのための3次元交差点構造予測
JP6838776B2 (ja) 車載処理装置
CN111199087A (zh) 场景识别方法和装置
CN111353417A (zh) 一种目标检测的方法及装置
CN111063207A (zh) 自适应车辆基础设施通信
CN110913370A (zh) 自适应车辆对基础设施的通信
WO2020145057A1 (ja) 演算装置、演算方法
JP6853746B2 (ja) 車両制御装置
CN116245183B (zh) 基于图神经网络的交通场景泛化理解方法及装置
CN112179359B (zh) 一种地图匹配方法、装置、电子设备和存储介质
JP6501420B2 (ja) プローブ情報処理装置、プローブ情報処理方法、コンピュータプログラム及びコンピュータプログラムを記録した記録媒体
CN117382652A (zh) 作业的安全分布式执行
CN112230659A (zh) 精准规划运动轨迹的方法、智能控制设备及自动驾驶车辆
CN111983944A (zh) 电子控制单元比较
JP7301865B2 (ja) 電子制御装置
CN103443586B (zh) 导航装置
KR102615240B1 (ko) 데이터의 엔트로피를 기반으로 데이터를 필터링하는 방법 및 클라우드 서버 시스템
KR102682215B1 (ko) 레이더 센서 포인트 클라우드 데이터를 이용한 물체 검출 기술
WO2021049231A1 (ja) 占有格子地図管理装置
KR102092482B1 (ko) 패턴을 이용한 자율주행 차량 피처 간 상호작용 식별 방법 및 장치
CN114078143B (zh) 用于射线跟踪的相干性聚集
CN115826452A (zh) 基于SysML的智能驾驶系统建模方法、装置、设备及介质
US20230342161A1 (en) Boot process system-on-chip node configuration
Lu et al. Mobile Computation in Connected Vehicles

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19909041

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19909041

Country of ref document: EP

Kind code of ref document: A1