Query content capture for mobile computing networks - Patents.com
The system addresses the challenges of replicating distributed databases in vehicle fleets by adjusting queries for individual models and managing data collection, ensuring efficient and reliable data access for various user applications.
Patent Information
- Application Number
- JP2024069343
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-06-23
- Filing Date
- 2024-04-22
- Publication Date
- 2025-09-19
- Estimated Expiration
- 2044-04-22
AI Technical Summary
Distributed databases in fleets of vehicles are expensive and time-consuming to replicate due to unreliable connectivity and bandwidth, and direct queries can crash the system, necessitating careful query management to maintain operational state.
A system that screens queries for feasibility, adjusts them for different vehicle models, and executes processes tailored to individual models, allowing vehicles to store data until conditions for upload are met, while informing query creators of data collection time and likelihood, and enabling direct querying with bandwidth and computational resource estimation.
Enables efficient and reliable data collection from vehicles, allowing users to track request status and prioritize data acquisition based on user identity and payment, facilitating flexible and user-friendly data access for software development, insurance, and law enforcement applications.
Smart Images

Figure 0007742450000001 
Figure 0007742450000002 
Figure 0007742450000003
Abstract
Description
[Background technology]
[0001] Distributed databases are typically queried by replicating the database and directing all queries to the replicas rather than the original. With increasing connectivity between various products, software developers strive to develop new applications that allow users to customize their experience with various products. To develop such applications, software developers rely on data structures within the products to develop applications that will run reliably on the products. In some instances, application program interfaces (APIs) are useful for enabling applications to exchange data with products without the application being specifically tailored for the product. However, in some instances, understanding the types of data available within a product and the format of that data helps software developers improve their applications to improve the product user experience. [Brief explanation of the drawings]
[0002] Aspects of the present disclosure are best understood from the following detailed description when read in conjunction with the accompanying figures. It should be noted that, according to standard industry practice, various features have not been drawn to scale. In fact, the dimensions of various features may be arbitrarily increased or decreased for clarity of illustration.
[0003] [Figure 1] FIG. 1 is a schematic diagram of a system for content query and ingest in a mobile computing network, according to at least some embodiments of the subject disclosure. [Figure 2] FIG. 2 is an illustration of a graphical user interface (GUI) for querying content in a mobile computing network, according to at least some embodiments of the subject disclosure. [Figure 3] FIG. 3 is an illustration of a data structure for a content acquisition task, according to at least some embodiments of the subject disclosure. [Figure 4]FIG. 4 is a schematic diagram of a query content acquisition system according to at least some embodiments of the subject disclosure. [Figure 5] FIG. 5 is an operational flow for query content capture in a mobile computing network according to at least some embodiments of the subject disclosure. [Figure 6] FIG. 6 is an operational flow for performing a content ingest task according to at least some embodiments of the subject disclosure. [Figure 7] FIG. 7 is an operational flow for assigning reduction potential according to at least some embodiments of the subject disclosure. [Figure 8] FIG. 8 is an operational flow for transmitting captured content according to at least some embodiments of the subject disclosure. [Figure 9] FIG. 9 is a diagram of a hardware configuration for content query and ingest in a mobile computing network, according to at least some embodiments of the subject disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0004] The following disclosure provides numerous different embodiments or examples that implement various features of the provided subject matter. To simplify the disclosure, specific examples of components, values, operations, materials, arrangements, or the like are described below. Of course, these are merely examples and are not intended to be limiting. Other components, values, operations, materials, arrangements, or the like are contemplated. For example, in the following description, forming a first feature above or on a second feature may include embodiments in which the first and second features are formed in direct contact, and may also include embodiments in which an additional feature may be formed between the first and second features, such that the first and second features may not be in direct contact. Additionally, the present disclosure may repeat reference numerals and / or letters in various examples. This repetition is for the purposes of brevity and clarity and does not, in itself, dictate a relationship between the various embodiments and / or configurations described.
[0005] Additionally, spatially relative terms such as "lower," "below," "belower than," "upper," "above," and the like may be used herein for ease of description to describe the relationship of one element or feature to another element or feature as shown in the figures. Spatially relative terms are intended to encompass various orientations of the device in use or operation in addition to the orientation depicted in the figures. The device may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptions set forth herein may be similarly interpreted accordingly.
[0006] A fleet of vehicles as a distributed database is expensive and time-consuming to replicate because all data must be uploaded from each vehicle, and connectivity and bandwidth are unreliable and expensive. Direct queries to the distributed database must be done carefully to ensure that the query does not crash the system.
[0007] To help maintain the operational state of the distributed database, i.e., the operational state of each vehicle in the fleet, at least some embodiments herein screen queries for feasibility and adjust queries for different models in the fleet.
[0008] In at least some embodiments, adjusting a query for a model includes consulting a database of computational resources and executing a process for that model. In at least some embodiments, the process is tailored to run on a particular model to help vehicles of that model avoid resource starvation. In at least some embodiments, models with a smaller amount of computational resources are still programmed to perform more complex tasks, and the query creator is notified if the amount of time to collect data is excessive. In at least some embodiments, the query engine estimates when results can be obtained based on the likelihood of the event generating the requested data occurring, the bandwidth to the server, and the computational resources of the model.
[0009] In at least some embodiments, the vehicle is configured to execute a query to collect the requested data. In at least some embodiments, the vehicle is configured to store the requested data in the vehicle until one or more conditions for uploading the data are met. In at least some embodiments, the vehicle is configured to execute multiple queries and store multiple instances of the requested data until uploading. In at least some embodiments, the vehicle is configured to compress, filter, or purge the requested data in response to unavailable storage resources according to corresponding priority values established by the server. At least some embodiments herein enable directly querying a distributed database and informing the query of the likelihood and wait time for receiving results.
[0010] Users, such as software developers, insurance providers, market researchers, and law enforcement officers, can use the on-demand data acquisition (ODDR) system to input data requests into a user interface, such as a graphical user interface (GUI). The software developer, for example, is a software developer developing applications, middleware, or an operating system (OS) to run on the vehicle. Exemplary applications include automated driving system applications, such as object recognition applications, road recognition applications, sensor fusion applications, localization applications, path planner applications, and controller applications. The data requests are analyzed and stored at a server and then transmitted to the vehicle by the server. At the server, the data requests are stored in a storage unit, and a request queue is generated based on the stored requests. The user can view or request updates on the status of the data request. For example, while the data request is still in the server before transmission to the vehicle, the status may be indicated as “pending.” Once the server transmits the data request to the vehicle, the status may be updated to “sent.” This allows the user to view and track the status of data requests made to the vehicle. Although the description refers to a vehicle for clarity, one skilled in the art will recognize that the description is applicable to fleets of vehicles in addition to single vehicles.
[0011] The user interface for generating a data request includes a form associated with the vehicle that identifies the information, the type of data being requested, a start time, and an end time. In some embodiments, the start time and end time are absolute times, e.g., UNIX time, which is the time elapsed since UNIX epoch time. In some embodiments, the start time and end time are relative to the time the data request is received by the vehicle. In some embodiments, the start time and end time are relative to a trigger event. The trigger event is an event within the vehicle or in the vehicle's environment from which the user desires data, or receipt of a data request by the vehicle. For example, trigger events arising from the vehicle's environment include sudden acceleration, sudden braking, capturing an image of the target of the data request, detecting the target of the data request, or other suitable occurrences. The user information for monitoring the status of the data request includes identifying the information in the data request and the status of the data request, e.g., pending or sent.
[0012] In some embodiments, when a data request is received by a vehicle, the data request is processed to make the data request agnostic with respect to the source of the data request. In some embodiments, a data request identification (ID) is assigned to the received data request by the vehicle, for example, by a request extractor in the vehicle. In some embodiments, the data request ID is assigned to the data request prior to transmission of the data request to the vehicle. In some embodiments, the data request is generated by an application running in the vehicle, and the application assigns the data request ID. In other words, the data is processed in a consistent manner regardless of the program or system that sends the data request to the vehicle. In some embodiments, the data request is generated by a software component stored within the vehicle, and the data is processed consistently with data requests received from external devices. This facilitates sharing the same data collection software components between triggered data collection, where an application generates data collection requests to a logger and ODDR-based external data collection requests.
[0013] In some embodiments, when a data request is received by the vehicle, the data request is processed to make the data request agnostic to sensors and servers within the vehicle. In some embodiments, the data request is generated by an application running in the vehicle. In some embodiments, an application programming interface (API) can be used to make data requests from applications agnostic to information from sensors or servers within the vehicle. This helps maximize the ability of users to collect data without programming the request for a specific sensor model. The data request is then forwarded to a data collection unit, and the requested data is collected in response to the occurrence of a trigger event. In situations where a trigger event, such as a traffic accident, has already occurred, the data request is fulfilled based on data stored in a storage device within the vehicle. The time frame for the collected data, i.e., start time and end time, is determined based on the data request. The collected data is forwarded back to the server.
[0014] The collected data is then stored on the server and a notification is sent to the user regarding the completion of the data request, for example, the status of the data request is updated to "completed" on the user interface.
[0015] In some examples, a budgeting or payment system is implemented on the server side or vehicle side to charge the user a fee for data requests. The fee can be paid either at the time of sending the request or upon completion of data collection. The fee can be adjusted based on the type and amount of data requested. In some embodiments, if the total fee charged to the user reaches a maximum threshold for the user's budget, the data request from the user is denied.
[0016] The ODDR system allows users to access information collected by vehicles on an on-demand basis. That is, data is not necessarily collected continuously, but can be collected to meet a user's specific needs. In some embodiments, the ODDR system helps users, such as software developers, collect data and update their software design, implementation, and parameter adjustments in an experimental manner based on the collected data, allowing users to continuously improve their software by delivering updates from a server to their vehicles over a network, for example, as over-the-air (OTA) updates. In some embodiments, the ODDR system helps machine learning developers developing machine learning models for applications collect data to train their models with data that was not available when the models were initially developed, allowing machine learning developers to update their models to continuously correct weaknesses and issues. In some examples, insurance providers can collect data related to traffic accidents. In some examples, law enforcement can collect information related to crimes or traffic accidents.
[0017] 1 is a schematic diagram of a request acquisition system 100 according to some embodiments. The request acquisition system 100 includes a user interface (UI) 110. The UI 110 is configured to receive a user request for data from a vehicle 140. The request acquisition system 100 further includes a server 120, which is configured to receive the user request from the UI 110, transmit the user request to the vehicle 140, receive data from the vehicle 140, and provide the data to the user via an accessible console 150. The server 120 includes a communication section 130 that communicates with the UI 110 and the vehicle 140. The request acquisition system 100 further includes the accessible console 150 that is configured to communicate data collected from the vehicle 140 to the user.
[0018] The UI 110 is configured to receive input instructions from a user. In some embodiments, the user includes a software developer. In some embodiments, the user includes a machine learning model developer. In some embodiments, the user includes an insurance provider. In some embodiments, the user includes law enforcement personnel. In some embodiments, the user includes a market research company. The UI 110 provides the user with options to select what type of vehicle and what type of data are being requested. In some embodiments, the UI 110 can generate a data request using a form associated with the vehicle that identifies the information, the data type being requested, a start time, and an end time. In some embodiments, the start time and end time are absolute times, such as UNIX time, which is the time elapsed since UNIX epoch time. In some embodiments, the start time and end time are relative to the time the data request is received by the vehicle. In some embodiments, the start time and end time are relative to a trigger event. In some embodiments, the UI 110 also provides the user with options to select a trigger event and a data collection duration for the trigger event. In some embodiments, the UI 110 includes information related to the type of vehicle for which data is being requested. In some embodiments, the UI 110 includes a vehicle ID that can uniquely identify a vehicle as the target of the request. For example, the vehicle ID includes a universally unique identifier (UUID) format. In some embodiments, the UI 110 includes a data type that can identify the source of data the user wants to collect. For example, the data type includes a sensor ID for a sensor from which sensor data will be collected and an application ID for an application from which application logs will be collected. In some embodiments, the sensor ID and application ID format includes a universally unique identifier (UUID) format. In some embodiments, the UI 110 includes a drop-down menu. In some embodiments, the UI 110 includes editable fields that accept information related to the data request. In some embodiments, the UI 110 provides information about which data option types are available to the user.In some embodiments, the types of data options available depend on the user. For example, in some embodiments, law enforcement may have more data options to choose from than insurance providers.
[0019] In some embodiments, the UI 110 includes a graphical user interface (GUI). In some embodiments, the UI 110 includes a mobile terminal, such as a mobile phone, that can connect to the server 120. In some embodiments, the UI 110 includes a web interface, such as a RESTful API. In some embodiments, the UI 110 includes a computer that can connect to the server 120. In some embodiments, the UI 110 can connect to the server 120 wirelessly. In some embodiments, the UI can connect to the server 120 via a wired connection. The UI 110 can also provide updates to the user regarding the status of the data request. In some embodiments, the UI 110 provides status updates regarding the data request in response to further queries by the user. In some embodiments, the UI 110 provides status updates regarding the data request automatically, without user interaction, upon receiving update information from the server 120. In some embodiments, the status update causes the UI 110 to trigger an alert to the user. In some embodiments, the alert includes an audio alert or a visual alert.
[0020] In some embodiments, the UI 110 includes a means for accepting payment of a fee from a user. In some embodiments, the UI 110 includes a data entry field that allows a user to enter payment card information. In some embodiments, the UI 110 includes a reader for detecting payment card information, such as a magnetic stripe reader, a bar code reader, a chip reader, or another suitable reader.
[0021] Server 120 includes a communications section 130 configured to communicate with UI 110 and vehicle 140. Communications section 130 includes a receiver 131 configured to receive data requests from UI 110. In some embodiments, receiver 131 includes a wireless receiver. In some embodiments, receiver 131 is configured to receive data requests via a wired connection. In some embodiments, receiver 131 is further configured to perform initial processing on the received data requests. In some embodiments, the received data requests include priority level information. In some embodiments, receiver 131 is configured to assign a priority level to the data request based on the identity of the user who sent the data request or a fee paid by the user who sent the data request. In some embodiments, receiver 131 is configured to assign a request identification (ID) number to each received data request. In some embodiments, server 120 is configured to restrict access to certain sensors in vehicle 140 based on the identity of the user. For example, in some embodiments, third-party users are prevented from accessing sensors related to safety features of vehicle 140.
[0022] Communications section 130 further includes a memory unit 132 configured to store data requests received by receiver 131. In some embodiments, memory unit 132 includes random access memory, solid state memory, or another type of memory. In some embodiments, memory unit 132 is configured to store the data requests along with their status. In some embodiments, the status of the data request includes pending (before sending the data request to vehicle 140), sent (after sending the data request to vehicle 140), and completed (after receiving the requested data from vehicle 140). In some embodiments, memory unit 132 is accessible by a user. In some embodiments, updates to information in memory unit 132 trigger a notification to the user associated with the information updated in memory unit 132. In some embodiments, memory unit 132 stores the data requests along with timestamp data indicating the time the data request was received. In some embodiments, memory unit 132 stores the data requests in association with a priority level. In some embodiments, the priority level is determined based on the identity of the user. For example, in some embodiments, law enforcement has a higher priority than insurance providers, which in turn have a higher priority than regular users, such as software developers. In some embodiments, the priority level is determined based on a fee paid by the user. For example, in some embodiments, a user can pay a fee to increase the priority level of their request so that the requested data is obtained more quickly. In some embodiments, the priority level of the data request increases as the amount of time between the initial storage of the data request and the transmission of the data request to the vehicle increases.
[0023] The communications section 130 further includes a transmitter 133. The transmitter 133 is configured to transmit the status of the data request to the UI 110. In some embodiments, the status of the data request is transmitted wirelessly to the UI 110. In some embodiments, the status of the data request is transmitted to the UI 110 via a wired connection. In some embodiments, the transmitter 133 is configured to automatically provide updates to the data request in response to updates in the memory unit 132. In some embodiments, the transmitter 133 is configured to provide updates to the data request in response to an update request received from a user. In some embodiments, the transmitter 133 is configured to automatically transmit a request ID upon initially saving the data request to the memory unit 132. In some embodiments, the status of the data request includes a priority level of the data request. In some embodiments, the status of the data request includes an estimated time until the data request will be transmitted to the vehicle 140.
[0024] Communications section 130 further includes a query queue 134 configured to store data requests in a priority order for transmission to vehicle 140. In some embodiments, query queue 134 is incorporated within memory unit 132. In some embodiments, query queue 134 is separate from memory unit 132. In some embodiments, query queue 134 is configured to retrieve data requests from memory unit 132 based on priority level and timestamp information. In some embodiments, query queue 134 is configured to sort data requests based on priority level and, for data requests having the same priority level, sort data requests by time since they were first stored in memory unit 132.
[0025] The communication section 130 further includes a transmitter 135 configured to transmit data requests from the query queue 134 to the vehicle 140. The transmitter 135 is configured to transmit the data requests to the vehicle 140 based on the order of the data requests in the query queue 134. In some embodiments, the data requests are transmitted to the vehicle 140 wirelessly. In some embodiments, the data requests are transmitted to the vehicle 140 via a wired connection. The data requests transmitted to the vehicle 140 include trigger event information, data duration information relating to a period before and after the trigger event during which data should be collected, and sensor information indicating a certain type of sensor on the vehicle 140 should collect data. In some embodiments, the data requests transmitted to the vehicle 140 include priority level information. In some embodiments, when the vehicle 140 transmits a request to the server 120 to transmit a data request to the vehicle 140, the transmitter 135 is configured to transmit the data request to the vehicle 140. In some embodiments, transmitter 135 is configured to transmit a data request to vehicle 140 any time that communication section 130 has sufficient connectivity to vehicle 140 to transmit the data request, unless communication section 130 has received information indicating that vehicle 140 is unable to accept a new data request. In some embodiments, transmitter 135 is configured to periodically transmit data requests to vehicle 140, as long as vehicle 140 is able to receive a new data request and transmitter 135 has sufficient connectivity to vehicle 140. In some embodiments, transmitter 135 is configured to transmit data requests to vehicle 140 in batches, for example, in groups of five data requests, twenty data requests, or some other number of data requests. In some embodiments, transmitter 135 is configured to request confirmation of receipt of the data request from vehicle 140. In response to not receiving confirmation of receipt from the vehicle for a predetermined period of time, transmitter 135 is configured to retransmit the data request. In some embodiments, the status of the data request stored in memory unit 132 is updated to indicate transmission to vehicle 140 in response to communication section 130 receiving confirmation of receipt of the data request from vehicle 140.
[0026] Communications section 130 further includes receiver 136 configured to receive notification of the occurrence of a trigger event from vehicle 140. In some embodiments, the occurrence of the trigger event is the receipt of a data request. In some embodiments, receiver 136 is configured to receive notification of the trigger event wirelessly. In some embodiments, receiver 136 is configured to receive notification of the trigger event via a wired connection. In some embodiments, receiver 136 is configured to send a signal to memory unit 132 updating the status of a data request associated with the notified trigger event.
[0027] Communications section 130 further includes receiver 137 configured to receive data from vehicle 140 in response to a data request transmitted by transmitter 135. In some embodiments, vehicle 140 divides the data into data packets, which are units of transmission from vehicle 140 to server 120, and receiver 137 receives the data packets from vehicle 140. In some embodiments, receiver 137 is configured to receive data wirelessly. In some embodiments, receiver 137 is configured to receive data via a wired connection. In some embodiments, receiver 137 is configured to transmit a signal to memory unit 132 updating the status of the data request related to receipt of the requested data. In some embodiments, data in response to a single data request is received from vehicle 140 in a single packet. In some embodiments, data in response to a single data request is received from vehicle 140 in multiple packets. Receiver 137 forwards the received data to preprocessor 122.
[0028] Server 120 further includes a preprocessor 122 configured to receive data from receiver 137 and perform preprocessing on the data to generate collected data. In some embodiments, preprocessing includes modifying data from multiple packets to compile the data according to a data request. In some embodiments, preprocessing includes deserializing the data to compile structured data from a received byte array. In some embodiments, preprocessing includes decompressing the data if it was compressed by vehicle 140 before transmission. In some embodiments, preprocessing includes error correction with an error correcting code (ECC), such as a Reed-Solomon (RS) code, a Bose-Chaudhuri-Bockenheim (BCH) code, a low-density parity check (LDPC) code, and the like. In some embodiments, preprocessing includes smoothing the data by removing outliers to reduce the risk of reporting erroneous data to a user. In some embodiments, preprocessing includes associating data request ID information, priority level information, or other suitable information with the received data from receiver 137. In some embodiments, the data is pre-processed so that the information is presented to the user in a format that is easy to understand and does not rely on specialized knowledge or equipment to identify the information.
[0029] Server 120 further includes data storage 126 configured to store collected data generated by data preprocessor 122. In some embodiments, data storage 126 is incorporated into memory unit 132. In some embodiments, data storage 126 is separate from memory unit 132. In some embodiments, data storage 126 includes a solid-state drive (SSD), random access memory, or another suitable memory. In some embodiments, data storage 126 is accessible by a user, for example, using UI 110 or accessible console 150. In some embodiments, data storage 126 is configured to notify a user in response to the availability of data related to a data request. In some embodiments, the notification includes an alert to the user. In some embodiments, the alert includes an audio alert or a visual alert. In some embodiments, data storage 126 is configured to cause UI 110 or accessible console 150 to automatically display a notification of the availability of collected data. In some embodiments, data storage 126 is accessible by a user using accessible console 150 without the user having to submit a data request. In some embodiments, the data in data storage 126 is searchable by a user via an accessible console 150. In some embodiments, the collected data is visualized in the console 150.
[0030] The request acquisition system 100 further includes a vehicle 140. The vehicle 140 includes sensors for detecting both the interior conditions of the vehicle 140 and the external environment surrounding the vehicle 140. In some embodiments, the sensors include a camera, a light ranging (LiDAR) sensor, a radio ranging (RADAR) sensor, a sound navigation and ranging (SONAR) sensor, an accelerometer, a steering wheel position, a speedometer, or another suitable sensor. The vehicle 140 can receive data requests either wirelessly or via a wired connection.
[0031] In some embodiments, upon receiving a data request, vehicle 140 is configured to assign a data request ID to the received data request, and the data request is processed in a manner that is agnostic to the system or program that generated the data request. In another embodiment, communication section 130 assigns the data request ID on behalf of vehicle 140, and the data request ID is included in the data request sent from communication section 130 to vehicle 140. Making the data request agnostic to the system or program that generated the data request helps expand the ability of vehicle 140 to receive and process a wide range of data requests from various users and systems. Vehicle 140 includes a processor that processes the data request and determines the type of information that sensors available in vehicle 140 can use to fulfill the data request. In at least some embodiments, vehicle 140 includes a mobile computing network that is a network of processors, controllers, or combinations thereof, such as a controller area network (CAN). In at least some embodiments, each processor is an electronic control unit (ECU). Vehicle 140 further includes a memory that stores data from the sensors. In some embodiments, the processor accesses the memory to determine whether any stored data can satisfy the data request. Vehicle 140 may further transmit, either wirelessly or via a wired connection, data that it believes will satisfy the data request to server 120. In some embodiments, the processor is configured to attempt to satisfy received data requests in a prioritized order based on the received priority level of the data request. In some embodiments, vehicle 140 is configured to transmit data to the server in a prioritized order based on the received priority level of the data request.
[0032] In some embodiments, the memory and processor of vehicle 140 are configured to store and execute software applications in an electronic control unit (ECU) within vehicle 140. In some embodiments, the data request is generated by the software application stored in the ECU. In some embodiments, the data request is generated in response to a trigger event, such as sudden acceleration, sudden braking, capturing sensor data including a particular object or scene predetermined in the software application, a “crash” of the software application, an anomaly detected in the software application, or another suitable detected occurrence. In some embodiments, vehicle 140 is configured to generate a notification to a maintainer of the software application, e.g., a user, in response to detecting a trigger event associated with the software application. In some embodiments, the notification is sent directly to the user, for example, through UI 110, either wirelessly or via a wired connection. In some embodiments, the notification is sent to the user through server 120, either wirelessly or via a wired connection. In some embodiments, the notification includes an audio notification or a visual notification. In some embodiments, the notification is configured to cause UI 110 to automatically display the notification without user interaction.
[0033] Request acquisition system 100 further includes accessible console 150. Accessible console 150 allows a user to access the collected data stored in data storage 126. In some embodiments, accessible console 150 is incorporated into UI 110. In some embodiments, accessible console 150 is separate from UI 110. In some embodiments, accessible console 150 comprises a separate server separate from server 120. In some embodiments, accessible console 150 automatically receives collected data associated with a data request from a user when data storage 126 receives the collected data. In some embodiments, accessible console 150 allows a user to search data storage 126 to determine whether any of the collected data stored in data storage 126 is useful to the user without the user having to submit a data request.
[0034] Use of the request acquisition system 100 allows a user to obtain information from one or more vehicles 140 in a format that is easy to understand without relying on specialized equipment to request or read the received data. The ability to prioritize data requests in the request acquisition system 100 helps ensure that data is available to law enforcement or other users while also allowing users to pay a fee to obtain data more quickly. This flexibility helps improve the usability of the request acquisition system 100 for a wide range of users.
[0035] FIG. 2 is a diagram of graphical user interfaces (GUIs) 200 and 250 for a request acquisition system, according to some embodiments. In some embodiments, GUI 200 is usable as UI 110 in request acquisition system 100 (FIG. 1). In some embodiments, GUI 200 is usable to generate data requests to be received by receiver 131 (FIG. 1). GUI 200 includes a plurality of information types 210 that identify types of information that GUI 200 can accept from a user. GUI 200 further includes a plurality of fields 220 configured to receive information associated with the corresponding information types 210 of GUI 200. GUI 200 also includes a send button 230 that is configured to send a data request to a server, e.g., server 120 (FIG. 1), based on the information in fields 220. Those skilled in the art will recognize that the names and number of information types 210 are merely exemplary and that different numbers and types of information are within the scope of the present disclosure.
[0036] In some embodiments, field 220 includes fields for a user to enter a vehicle ID, a data type, a start time, and an end time. In some embodiments, field 220 further includes a field for a user to enter a priority level for the data request. In some embodiments, GUI 200 further includes information related to how a user can increase the priority level of the data request, for example, information indicating a fee associated with each available priority level. In some embodiments, GUI 200 includes field 220 that allows a user to enter login information to establish the user's identity. In some embodiments, GUI 200 is configured to display the user's priority level after receipt of the login information. In some embodiments, GUI 200 further includes field 220 that accepts payment information related to a fee for establishing the priority level of the data request.
[0037] GUI 250 is configured to be displayed to a user after the user selects send button 230 on GUI 200. In some embodiments, GUI 250 is usable as GUI 110 in ODDR system 100 (FIG. 1). GUI 250 includes information indicating that a data request has been received. GUI 250 includes a query ID label 260 and a query ID field 270. The information entered in query ID field 270 is received from a server, e.g., server 120 (FIG. 1), after the server receives and stores the data request. In some embodiments, GUI 250 includes vehicle ID information. In some embodiments, GUI 250 includes information related to the priority level of the data request. In some embodiments, GUI 250 includes information related to the status of the data request, e.g., pending, sent, completed, etc. In some embodiments, GUI 250 includes information related to an estimated time until the data request will be sent to a vehicle, e.g., vehicle 140 (FIG. 1). In at least some embodiments, GUI 250 includes information related to an estimated time until the requested data will be received. In at least some embodiments, GUI 250 includes information related to estimated energy consumption for receiving the requested data. In some embodiments, GUI 250 is displayed automatically in response to receiving query ID information from a server. In some embodiments, GUI 250 is displayed in response to a user submitting a request for an update to an uploaded data request.
[0038] 3 is a diagram of a data structure 300 for a get request command 310, according to some embodiments. In some embodiments, the get request command 310 is sent from the server 120 to the vehicle 140 (FIG. 1). The get request command 310 includes information related to the type of data sought by the data request to the vehicle, e.g., the vehicle 140 (FIG. 1).
[0039] The get request command 310 includes a transfer priority parameter 311 that indicates the priority level of the data request. The get request command 310 also includes a log level parameter 312 that indicates the type of data, if any, to be retrieved from other applications in the vehicle. For example, in some embodiments, the get request command 310 retrieves data from an object recognition application. The log level parameter 312 determines the type of data to retrieve from other applications, such as an error level or a critical level. In some embodiments, the log level parameter 312 is omitted from the get request command 310, or the log level parameter 312 is set to a null state. The get request command 310 also includes a collection time range parameter 313 that indicates the period before and / or after a trigger event for collecting data. The time range corresponds to the start and end times entered by the user into the GUI 200 (FIG. 2). The get request command 310 also includes a uniform resource locator (URL) endpoint parameter 314 that indicates the destination of the data to be collected in response to the data request. The get request command 310 further includes a frequency parameter 315 that indicates how often, if any, data should be sampled from the time range 313. For example, if the event time is t=100 seconds, the time range has a start time=-1 second and an end time=2 seconds, and the frequency is 10 Hz (100 millisecond cycles), then data at t=99.0 seconds, 99.1 seconds, 99.2 seconds, ..., 101.9 seconds, and 102.0 seconds will be collected by the get request command. The get request command 310 also includes a log ID parameter 316 that indicates the type of sensor and / or application that can be used to collect the data requested by the data request. In some embodiments, a unique ID (such as a universally unique identifier (UUID)) is pre-assigned to every sensor and application, and the unique ID from which the user wants to collect data is specified in the log ID parameter 316. The get request command 310 also includes a requester ID parameter 317 that indicates the identity of the user making the data request. The get request command 310 further includes an event ID parameter 318 that indicates the triggering event associated with the data request.The get request command 310 further includes a budget ID parameter 319 that indicates the amount of resources of the vehicle, e.g., vehicle 140 (FIG. 1), that should be allocated to fulfill the data request. Those skilled in the art will appreciate that additional parameters are possible in the get request command 310. For example, in some embodiments, the get request command 310 includes a vehicle location parameter that indicates a geographic area in which a trigger event can occur. Those skilled in the art will also appreciate that the get request command 310 does not always include all of the parameters of FIG. 3. For example, in some embodiments, the budget ID parameter 319 is omitted.
[0040] 4 is a block diagram of a request acquisition system 400 according to some embodiments. In some embodiments, the request acquisition system 400 is part of the request acquisition system 100 (FIG. 1). In some embodiments, the request acquisition system 400 can be used together with the request acquisition system 100 (FIG. 1). In some embodiments, the request acquisition system 400 is separate from the request acquisition system 100 (FIG. 1).
[0041] The request acquisition system 400 includes a detection vehicle system 410 configured to capture information about the vehicle or its surroundings. The detection vehicle system 410 captures information about the vehicle and its surroundings and transmits the information to a server. The request acquisition system 400 further includes a server 440 configured to receive the information, encode the information, and stream the information to a user terminal 460.
[0042] The detection vehicle system 410 includes an electronic control unit (ECU) 420 configured to receive data from sensors 414, a global positioning system (GPS) 416, and a map 418. The ECU 420 includes a situation detector 422, a data specifier 432, a log collector 434, and a log transmitter 436. The situation detector 422 includes a vehicle control monitor 424, an object detector 426, and a scene detector 428.
[0043] In some embodiments, ECU 420 further includes a localization unit configured to receive data from GPS 416 and map 418 to determine the vehicle's position relative to detected and / or known object and / or road locations, as well as the vehicle's attitude and state. Attitude is the vehicle's orientation relative to a reference point, such as the roadway. In some embodiments, vehicle position also refers to the vehicle's position vector. Vehicle attitude and state refer to the vehicle's speed and heading. In some embodiments, vehicle attitude and state also refer to the vehicle's velocity vector, acceleration vector, and jerk vector. In some embodiments, the position vector, velocity vector, acceleration vector, and jerk vector include an angular vector. In some embodiments, the vehicle state also refers to whether the vehicle's engine or motor is running.
[0044] Sensor 414 is configured to capture information, e.g., images, of the environment surrounding the vehicle. In some embodiments, sensor 414 includes a visible light camera, an IR camera. In some embodiments, sensor 414 is replaced by or further accompanied by a Light Detection and Ranging (LiDAR) sensor, a Radio Detection and Ranging (RADAR) sensor, an Acoustic Navigation and Ranging (SONAR) sensor, or another suitable sensor. In some embodiments, sensor 414 includes additional cameras positioned elsewhere in the vehicle. For example, in some embodiments, additional cameras are positioned on the sides of the vehicle to detect larger portions of the environment to the left and right of the vehicle being viewed. Because vehicle occupants can look out the side windows of the vehicle, using additional cameras to detect larger portions of the environment around the vehicle helps increase the accuracy of detecting objects or scenes around the vehicle. For example, in some embodiments, additional cameras are positioned on the rear of the vehicle to detect larger portions of the environment behind the vehicle. This information helps capture information about objects. In some embodiments, the data from the sensor 414 includes a timestamp or other metadata to help synchronize the data from the sensor 414 with data from other components.
[0045] The GPS 416 is configured to determine the location of the vehicle. Knowing the location of the viewing vehicle helps associate objects or scenes with locations determined on the map 418.
[0046] Map 418 includes information related to roadways and known objects along the roadways. In some embodiments, map 418 can be used in conjunction with GPS 416 to determine the vehicle's location and heading. In some embodiments, map 418 is received from an external device, such as server 440. In some embodiments, map 418 is updated periodically based on information from sensors 414 and / or GPS 416. In some embodiments, map 418 is updated periodically based on information received from external devices. In some embodiments, map 418 is generated from sensor data by a simultaneous localization and mapping (SLAM) algorithm. Including map 418 helps determine whether an object is a known object. Including map 418 with known objects helps increase the accuracy of new object detection.
[0047] The condition detector 422 is configured to generate information related to the performance of the vehicle and the performance of systems within the vehicle. The condition detector 422 may collect information from components within the vehicle, such as sensors 414, the braking system, the acceleration system, and other suitable components. Using this information, the condition detector 422 may determine the performance of the vehicle. In some embodiments, the condition detector 422 is further configured to monitor the performance of software and networking operations within the vehicle. For example, in some embodiments, the condition detector 422 is configured to receive information related to software or application "crashes" within the vehicle. In some embodiments, the condition detector 422 is configured to collect information related to the storage capacity of memory devices within the vehicle. In some embodiments, the condition detector 422 is configured to receive information related to the processing power of a processor within the vehicle.
[0048] Vehicle control monitor 424 is configured to receive sensor data and control logs related to the current operation of the vehicle. In some embodiments, the sensor data includes information related to the vehicle's speed, acceleration, jerk, braking, steering, pitch, roll, yaw, hazard light flashing, horn honking, or other suitable information. Vehicle control monitor 424 is configured to determine whether any of the received sensor data indicates that criteria for satisfying a request are met, for example, whether a trigger event has been detected.
[0049] The object detector 426 is configured to receive sensor data from the sensor 414 and determine whether any anomalous objects are located in the roadway. In some embodiments, the object detector 426 is further configured to determine whether any objects are present along or adjacent to the roadway. In some embodiments, the sensor data from the sensor 414 includes images, and the object detector 426 is configured to perform image recognition on the received images, for example, using a trained neural network, to identify anomalous objects. In some embodiments, the object detector 426 is configured to compare any identified objects with information from the GPS 416 and the map 418 to help determine the type of identified object. In some embodiments, the object detector 426 is configured to identify objects, such as tires, car parts, animals, potholes, traffic control signs, emergency vehicles, vehicles with active hazard lights, or other suitable objects, as objects.
[0050] The scene detector 428 is configured to receive sensor data from the sensors 414 and determine whether any scenes meeting the conditions to satisfy the request are located in the environment surrounding the vehicle. In some embodiments, the scene detector 428 is configured to determine that a vehicle accident is occurring in response to detecting two or more vehicles in contact with each other or a vehicle surrounded by multiple falling objects. In some embodiments, the scene detector 428 is configured to determine that construction is occurring based on detecting multiple construction vehicles in close proximity. In some embodiments, the scene detector 428 is configured to determine that a vehicle is parked on the shoulder based on determining that a vehicle is located adjacent to a roadway and is not moving or is moving significantly slower than other vehicles. In some embodiments, the scene detector 428 is configured to determine the content of the scene surrounding the vehicle using image recognition, such as through a trained neural network.
[0051] In some embodiments, each of the object detector 426 and the scene detector 428 is active during the entire operation of the vehicle, for example, when the vehicle engine or motor is running. In some embodiments, at least one of the object detector 426 or the scene detector 428 is activated in response to the vehicle control monitor 424 determining that a particular behavior, for example, a trigger event, has been detected.
[0052] The data specifier 432 is configured to receive a determination that fulfillment of the request has occurred or that a trigger event has been detected. The data specifier 432 is configured to analyze the received information and determine, based on the received data, which sensor data from the sensors 414 should be collected. For example, in some embodiments where an abnormal steering behavior by the driver is detected, the data specifier 432 is configured to determine that image data from the front camera of the sensor 414 should be captured. Further, the data specifier 432 is configured to determine a period of time over which data from the determined sensors should be collected based on the time of the detection event. In some embodiments, the data specifier 432 is configured to determine which sensors 414 should collect data based on instructions in the request received from the user.
[0053] In some embodiments, the data designator 432 is configured to determine a region of the received sensor data that is associated with the detected situation. In some embodiments, the region of the received sensor data is identified based on object recognition performed on the sensor data, for example, by the object detector 426 or the scene detector 428. In some embodiments, the data designator 432 is configured to crop the received image from the sensor data if the sensor data is not an image, or to remove extraneous data from the sensor data, in order to reduce the amount of information in the abnormal situation log. In some embodiments, the data designator 432 is configured to remove personal information, such as license plates, human faces, etc., from the sensor data.
[0054] Log collector 434 is configured to receive data from data specifier 432. In some embodiments, log collector 434 is configured to receive data directly from sensors 414, GPS 416, or situation detector 422 based on information provided by data specifier 432. Log collector 434 is also configured to determine what information is useful in identifying the type and location of an object, for example, location information from GPS 416 or map 418, image information from sensor 414, truncated or reduced information from data specifier 432, timestamp information associated with the time the object or scene was detected, or other suitable information.
[0055] Log collector 434 generates log data based on the received interrelated data, such as the cropped image and location data. Log collector 434 also associates timestamp information with the log data to aid in synchronization of collected data and for queue priorities within server 440. In some embodiments, log collector 434 generates the log data to further include world coordinates associated with the cropped image. In some embodiments, log collector 434 generates the log data to further include a map location associated with the cropped image. In some embodiments, log collector 434 includes additional information to aid in increasing the accuracy of determining an object or scene.
[0056] While the above description relates to generating log data based on images from sensor 414, one skilled in the art will understand that log collector 434 is not limited to generating log data based solely on images. In some embodiments, log collector 434 is configured to generate log data based on information from other sensors mounted on the vehicle, such as a RADAR, a LiDAR, or other suitable sensors. In some embodiments in which the occupant is wearing smart glasses, log collector 434 is further configured to generate log data based on information received from the smart glasses.
[0057] Log transmitter 436 is configured to receive log data from log collector 434 and transmit the log data to server 440. In some embodiments, log transmitter 436 is configured to transmit the log data wirelessly. In some embodiments, log transmitter 436 is configured to transmit the log data via a wired connection. In some embodiments, log transmitter 436 is configured to transmit the log data directly to user terminal 460. In some embodiments, log transmitter 436 is configured to transmit the log data to a mobile device accessible by a user, which then transmits the log data to server 440. In some embodiments, log transmitter 436 is configured to transmit the log data to the mobile device using Bluetooth® or another suitable wireless technology. In some embodiments, ECU 420 is configured to determine whether a data transfer rate from the mobile device to server 440 is higher than a transfer rate from log transmitter 436 to server 440. In response to determining that the data transfer rate from the mobile device to the server 440 is higher, the log transmitter 436 is configured to transmit to the mobile device the log data to be transmitted to the server 440. In response to determining that the data transfer rate from the mobile device to the server 440 is not higher, the log transmitter 436 is configured to transmit the log data from the vehicle system 410 directly to the server 440 without transferring the log data to the mobile device.
[0058] In some embodiments, the detection vehicle system 410 further includes a memory configured to store sensor data from sensors mounted on the vehicle. In some embodiments, the memory is further configured to store information associated with previously detected objects or scenes. In some embodiments, in response to detecting an object or scene matching a previous object or scene, the data specifier 432 is configured to provide results based on the matching object or scene. In some embodiments, the detection vehicle system 410 is further configured to determine whether the detection vehicle has received information from the server 440 related to an object or scene matching the object or scene determined from the situation detector 422. In some embodiments, in response to detecting that the detection vehicle has already received information related to the determined object or scene, the detection vehicle system 410 is configured to prevent transmission of log data to the server 440. Avoiding sending redundant information to the server 440 helps reduce data sent to the server 440 and minimize power consumption by the detection vehicle system 410. In some embodiments, storing previous requests is referred to as caching. Those skilled in the art will understand caching as using hardware or software to store data so that future requests for that data can be fulfilled more quickly.
[0059] Server 440 includes a log data receiver 442 configured to receive log data from log transmitter 436. In some embodiments, log data receiver 442 is configured to receive log data from a mobile device. Server 440 further includes a log encoder 444 configured to encode the log data. Server 440 further includes a log forwarder 446 configured to transmit the encoded log data to user terminal 460. Server 440 further includes a request / rule receiver 448 configured to receive requests or rules from user terminal 460.
[0060] The log data receiver 442 is configured to receive the log data from the log transmitter 436. In some embodiments, the log data receiver 442 is configured to receive the log data from a mobile device. In some embodiments, the log data receiver 442 is configured to receive the log data wirelessly. In some embodiments, the log data receiver 442 is configured to receive the log data over a wired connection. In some embodiments, the log data receiver 442 is configured to add a timestamp to the log data regarding the time the log data was received.
[0061] The log encoder 444 is configured to encode the received log data according to a predetermined encoding protocol. Encoding the log data according to a predetermined encoding protocol helps ensure that the user terminal 460 can reliably decode the log data for use by the user terminal 460. In some embodiments, the log encoder 444 is configured to perform compression, image encoding, thumbnail image generation, or other suitable encoding protocol on the log data. In some embodiments, the log encoder 444 is configured to perform encryption of the log data. In some embodiments, the log encoder 444 is further configured to perform super-resolution to make the data more perceptible to a user. Those skilled in the art will understand that super-resolution is the process of receiving a high-resolution image from a low-resolution image. Improving the resolution of the log data helps reduce false positives or false negatives.
[0062] In some embodiments, server 440 further includes a database that stores the received log data. In some embodiments, the log data is stored in the database before and / or after encoding by log encoder 444. In some embodiments, the log data is stored in the database in priority queues. In some embodiments, the priority of the priority queues is determined based on the time an object or scene, e.g., a trigger event, was detected, the time the log data was received by log data receiver 442, the type of object or scene, the identity of the driver of the detected vehicle, or other suitable priority criteria.
[0063] Log transporter 446 is configured to receive encoded log data from log encoder 444. Log transporter 446 is configured to transmit the encoded log data to user terminal 460. In some embodiments, log transporter 446 is configured to transmit the encoded log data to a mobile device accessible by a user. In some embodiments, log transporter 446 is configured to transmit the encoded log data wirelessly. In some embodiments, log transporter 446 is configured to transmit the encoded log data over a wired connection. In some embodiments, log transporter 446 is configured to transmit encoding protocol information along with the encoded log data. Transmitting the encoding protocol information for the encoded log data helps the mobile device or user terminal 460 accurately decode the encoded log data for use by user terminal 460.
[0064] Request / rules receiver 448 is configured to receive new or updated rules or requests for data from a user. In some embodiments, request / rules receiver 448 is configured to receive new or updated rules or requests wirelessly. In some embodiments, request / rules receiver 448 is configured to receive new or updated rules or requests via a wired connection. In some embodiments, request / rules receiver 448 is by UI 110 (FIG. 1).
[0065] In some embodiments, server 440 is configured to receive formation locations from multiple vehicles. In some embodiments, server 440 is configured to receive navigation plans from multiple vehicles. In some embodiments, log forwarder 446 is configured to limit transmission of encoded log data to only vehicles within a predetermined distance of a detected trigger event.
[0066] In some embodiments, server 440 is configured to transmit only log data associated with newly detected trigger events, i.e., if a trigger event has already been reported by server 440, the trigger event is not reported again. Limiting repeated reporting of trigger events helps server 440 reduce redundant data received by the user terminal.
[0067] User terminal 460 is a user terminal accessible by a user associated with a request to be satisfied. In some embodiments, user terminal 460 includes a GUI. In some embodiments, user terminal 460 is configured to automatically generate an alert in response to data received from server 440. In some embodiments, the alert includes an audio alert or a visual alert.
[0068] Those skilled in the art will understand that modifications to request acquisition system 400 are within the scope of this disclosure. For example, in some embodiments, detection vehicle system 410 can transmit log data directly to user terminal 460 over a network, such as a wireless network. In some embodiments, mobile devices of occupants in the detection vehicles can transmit log data directly to user terminal 460 over a wireless network, etc.
[0069] By automatically identifying and distributing information related to meeting rules or requirements detected within the vehicle or in the environment surrounding the vehicle, a user can improve the performance of applications or software executed using the vehicle's processing systems, such as ECU 420. In some embodiments, a user can object to information related to events such as accidents.
[0070] 5 is an operational flow for capturing query content in a mobile computing network, according to at least some embodiments of the subject disclosure. The operational flow provides a method for capturing query content in a mobile computing network. In at least some embodiments, the method is performed by a mobile computing network, such as a vehicle 140 shown in FIG. 1 or a detection vehicle system 410 shown in FIG. 4. In at least some embodiments, the method is performed by one or more processors of the mobile computing network, such as an ECU 420 shown in FIG. 4, that collectively include sections that perform certain operations.
[0071] At 550, the receiving section receives the content ingest task and retention policy. In at least some embodiments, the receiving section receives the task and retention policy from a server that is executable by the mobile computing network. In at least some embodiments, the server communicates with the receiving section over a communications network, such as network 914 of FIG. 9 described below. In at least some embodiments, the server is server 120 of FIG. 1 or server 440 of FIG. 4. In at least some embodiments, the task includes a program for ingesting targeted content. In at least some embodiments, the task is programmed to be executed by the mobile computing network using available resources of the mobile computing network. In at least some embodiments, the task includes instructions for detecting targeted content from at least one sensor. In at least some embodiments, the task is programmed to consume available resources to avoid interference with other simultaneously executing tasks.
[0072] At S552, the execution section executes a task to capture content. In at least some embodiments, the execution section executes a task to capture the targeted content using a mobile computing network. In at least some embodiments, the execution section instructs at least one sensor to detect the targeted content. In at least some embodiments, the execution section instructs at least one sensor to record the targeted content on volatile memory in response to detecting the targeted content. In at least some embodiments, the execution section performs the operational flow shown in FIG. 6, described below.
[0073] At S553, the allocation section assigns a reduction probability. In at least some embodiments, the allocation section assigns a reduction probability to the first instance of the ingested targeted content based on a retention policy. In at least some embodiments, the allocation section assigns the probability according to a priority value relative to another priority value of a concurrently executed task. In at least some embodiments, the retention policy includes a probability of purging each instance of the ingested targeted content, and the probability of purging is inversely related to the priority value. In at least some embodiments, the probability of purging is a function of age and priority value. In at least some embodiments, the allocation section performs the operational flow shown in FIG. 7, described below.
[0074] At S554, the mobile computing network determines whether storage is low. In at least some embodiments, the mobile computing network determines whether the amount of consumed storage exceeds a threshold level. In at least some embodiments, the mobile computing network determines whether the amount of remaining storage is below a threshold level. In at least some embodiments, the mobile computing network also determines whether memory is low and takes action in response to each determination. If the mobile computing network determines that storage is not low, operational flow proceeds to a network connection determination at S556. If the mobile computing network determines that storage is low, operational flow proceeds to reducing stored data at S555.
[0075] At S555, the reduction section reduces the stored data. In at least some embodiments, the reduction section reduces at least one of the first instance or a portion of the other stored data based on a reduction probability in response to the amount of available storage falling below a threshold amount. In at least some embodiments, the reduction section determines which content to reduce the consumed storage space by based on the assigned reduction probability. In at least some embodiments, the reduction section generates a random number to determine which content to reduce the consumed storage space by according to the assigned reduction probability. In at least some embodiments, the reduction section updates the reduction probability assigned to the first instance based on the retention policy and age of the first instance before determining which content to reduce the consumed storage space by. In at least some embodiments, the reduction section purges the ingested instance of content in response to the amount of available storage falling below a threshold amount. In at least some embodiments, the reduction section filters the first instance using a filtering subtask for ingested content in response to the amount of available storage falling below a threshold amount. In at least some embodiments, the reduction section compresses the first instance using a compress ingested content subtask in response to the amount of available storage being at or below a threshold amount.
[0076] At S556, the mobile computing network determines whether a network connection is available. In at least some embodiments, the mobile computing network determines whether the wireless communication transmitter detects an available access point. If the mobile computing network determines that a network connection is available, operational flow proceeds to data transmission at S557. If the mobile computing network determines that a network connection is not available, operational flow proceeds to an end condition determination at S558.
[0077] At S557, the sending section transmits the data. In at least some embodiments, the sending section transmits each instance of the captured targeted content in response to a connection to a wide area network. In at least some embodiments, the sending section transmits the instances of the targeted content to the server in priority order according to a content transmission policy. In at least some embodiments, the sending section performs the operational flow shown in FIG. 8, described below.
[0078] At S558, the mobile computing network determines whether an exit condition has been met. In at least some embodiments, the mobile computing network determines whether a sufficient amount of targeted content has been captured and transmitted. If the mobile computing network determines that the exit condition has not yet been met, the operational flow returns to task execution at S552. If the mobile computing network determines that the exit condition has been met, the operational flow ends.
[0079] 6 is an operational flow for performing a content ingest task according to at least some embodiments of the subject disclosure. The operational flow provides a method for performing a content ingest task. In at least some embodiments, the method is performed by a mobile computing network, such as vehicle 140 shown in FIG. 1 or detected vehicle system 410 shown in FIG. 4. In at least some embodiments, the method is performed by one or more processors of the mobile computing network that collectively include sections that perform certain operations, such as execution sections of ECU 420 shown in FIG. 4.
[0080] At S660, the execution section detects resource usage. In at least some embodiments, the execution section detects resource usage for each controller in the plurality of controllers. In at least some embodiments, the controllers are included in a mobile computing network, such as ECU 420 shown in FIG. 4, also referred to as a processor. In at least some embodiments, the execution section detects resource usage based on the number of active threads. In at least some embodiments, the execution section detects resource usage based on internal cache memory consumption.
[0081] At S662, the execution section determines whether any controllers are available. In at least some embodiments, the execution section determines the available controllers based on resource usage. In at least some embodiments, the execution section determines whether resource usage of each controller among the plurality of controllers is below a threshold amount. In at least some embodiments, the execution section determines that resource usage of an available controller is below a threshold amount. If the execution section determines that no controllers are available, operational flow returns to resource usage detection at S660. If the execution section determines that at least one controller is available, operational flow proceeds to task execution at S664.
[0082] At S664, the execution section executes the task. In at least some embodiments, the execution section causes the available controller to execute the task in response to detecting that the resource usage of the available controller is below a threshold amount. In at least some embodiments, the execution section executes the task within a sandbox of limited computing resources. In at least some embodiments, the sandbox is a secure computing environment isolated from the rest of the mobile computing network, for example, a virtual machine or container operating within the mobile computing network.
[0083] At S665, the execution section captures the instance of the content. In at least some embodiments, the execution section causes at least one sensor to record the target content on volatile memory in response to detecting the target content. In at least some embodiments, the target content is a video recording of the environment. In at least some embodiments, the target content is a reading from a motor sensor during an extreme event. In at least some embodiments, the execution section transfers the recorded content from volatile memory to storage.
[0084] At S667, the execution section determines whether a priority task instruction is received. In at least some embodiments, the execution section determines whether another task having a higher priority has been received, such as through the receive task operation at S550 of FIG. 1. If the execution section determines that a priority task instruction is received, the operational flow proceeds to end task at S669. If the execution section determines that a task instruction having a higher priority has not been received, the operational flow ends.
[0085] At S669, the execution section closes the task. In at least some embodiments, the execution section closes the task in response to receiving an instruction to execute a priority task. In at least some embodiments, the execution section closes the task in response to determining that the task has the lowest priority among tasks currently being executed by the controller.
[0086] 7 is an operational flow for allocating mitigation potential according to at least some embodiments of the subject disclosure. The operational flow provides a method for allocating mitigation potential. In at least some embodiments, the method is performed by a mobile computing network, such as vehicle 140 shown in FIG. 1 or detection vehicle system 410 shown in FIG. 4. In at least some embodiments, the method is performed by one or more processors of the mobile computing network that collectively include sections that perform certain operations, such as an allocation section of ECU 420 shown in FIG. 4.
[0087] At S770, the assignment section assigns a likelihood to purge. In at least some embodiments, the assignment section assigns a likelihood to purge to the first instance of the ingested targeted content based on a retention policy. In at least some embodiments, the likelihood to purge is inversely related to the priority value. In at least some embodiments, the likelihood to purge is a function of the age and the priority value. In at least some embodiments, the priority value is based on a retention policy, for example, the retention policy received at S550 of FIG. 5.
[0088] At S772, the allocation section determines whether a filtering subtask exists. In at least some embodiments, the allocation section receives a filtering subtask from a server that is programmed to filter instances of ingested target content, the filtering subtask being programmed to be executed by a mobile computing network. If the allocation section determines that a filtering subtask exists, the operational flow proceeds to filterability allocation at S774. If the allocation section determines that a filtering subtask does not exist, the operational flow proceeds to compression subtask determination at S776.
[0089] At S774, the allocation section assigns a likelihood of filtering. In at least some embodiments, the allocation section assigns a likelihood of filtering to the first instance of the ingested targeted content based on the retention policy. In at least some embodiments, the likelihood of filtering is higher than the likelihood of purging, such that the data is preserved while reducing storage consumption. In at least some embodiments, the allocation section reduces the likelihood of purging in response to determining that a filtering subtask exists.
[0090] At S776, the allocation section determines whether a compression subtask exists. In at least some embodiments, the allocation section receives a compression subtask from a server that is programmed to compress an instance of the ingested target content, the compression subtask being programmed to be executed by the mobile computing network. If the allocation section determines that a compression subtask exists, the operational flow proceeds to compressibility allocation at S778. If the allocation section determines that a compression subtask does not exist, the operational flow ends.
[0091] At S778, the allocation section assigns a likelihood of compression. In at least some embodiments, the allocation section assigns a likelihood of compression to the first instance of the ingested target content based on the retention policy. In at least some embodiments, the likelihood of compression is higher than the likelihood of purging, such that data is preserved when it reduces storage consumption. In at least some embodiments, the allocation section reduces the likelihood of purging in response to determining that a compression subtask exists. In at least some embodiments, the allocation section further reduces the likelihood of purging in response to determining that a compression subtask and a filtering subtask exist.
[0092] 8 is an operational flow for transmitting captured content according to at least some embodiments of the subject disclosure. The operational flow provides a method for transmitting captured content. In at least some embodiments, the method is performed by a mobile computing network, such as vehicle 140 shown in FIG. 1 or detection vehicle system 410 shown in FIG. 4. In at least some embodiments, the method is performed by one or more processors of the mobile computing network that collectively include sections that perform certain operations, such as the transmit section of ECU 420 shown in FIG. 4.
[0093] At S880, the transmission section transmits metadata for the ingested content. In at least some embodiments, the transmission section transmits the metadata for each instance of the ingested targeted content in response to connecting to the wide area network. In at least some embodiments, the metadata provides descriptions or keywords that describe each instance of the ingested targeted content.
[0094] At S882, the sending section receives a content sending policy. In at least some embodiments, the sending section receives from the server, in response to transmitting metadata about each instance of the ingested targeted content, the sending policy defining a sending priority value corresponding to a first instance of the ingested targeted content. In at least some embodiments, the sending priority value is based on a sending priority function of the content sending policy.
[0095] At S883, the sending section determines a priority value based on the content sending policy. In at least some embodiments, the sending section reads a sending priority value explicitly stated in the content sending policy. In at least some embodiments, the sending section derives the sending priority value from a sending priority function of the sending policy. In at least some embodiments, the sending priority function is based on one or more of the size of the instance, the age of the instance, and the bandwidth of the connection to the server.
[0096] At S885, the sending section determines the bandwidth of the network connection. In at least some embodiments, the sending section determines the bandwidth of the connection to the server in response to connecting to the wide area network before sending the first instance. In at least some embodiments, the sending section determines the bandwidth before determining the priority value, such as when a sending priority function is bandwidth-dependent. In at least some embodiments, the sending section varies the priority value according to the sending priority function to determine the bandwidth at regular intervals during transmission of the ingested content, such as when the connection bandwidth is irregular.
[0097] At S887, the sending section sends the instances of the ingested content based on the priority value. In at least some embodiments, the sending section sends the first instance of the ingested targeted content among each instance of the ingested targeted content in an order based on the sending priority value. As the repetition of the instance sending operation at S887 proceeds, the sending section sends each instance of the ingested content to the server. In at least some embodiments, the sending section refers to the sending priority value determined at S883 or re-determined in response to changes in bandwidth before sending each instance of the ingested content.
[0098] At S889, the sending section determines whether all instances of the ingested content have been sent. In at least some embodiments, the sending section determines whether all instances that were ingested and remain in storage have been sent. In at least some embodiments, the sending section determines whether all instances requested by the server have been sent. If the sending section determines that there are remaining unsent instances of the ingested content, the operational flow returns to the instance sending operation at S887. If the sending section determines that all instances of the ingested content have been sent, the operational flow ends.
[0099] 9 is a diagram of a system 900 implementing a request acquisition system, according to some embodiments. The system 900 includes a hardware processor 902 and a non-transitory computer-readable storage medium 904 encoded with, i.e., having stored thereon, computer program code 906, i.e., a set of executable instructions. The computer-readable storage medium 904 is also encoded with instructions 907 for operating in connection with external devices. The processor 902 is electrically connected to the computer-readable storage medium 904 via a bus 908. The processor 902 is also electrically connected to an I / O interface 910 by the bus 908. A network interface 912 is also electrically connected to the processor 902 via the bus 908. The network interface 912 is connected to a network 914, such that the processor 902 and the computer-readable storage medium 904 can be connected to external elements via the network 914. The processor 902 is configured to execute computer program code 906 encoded in the computer-readable storage medium 904 to enable the system 900 to perform some or all of the operations described in the ODDR system 100 (FIG. 1), the ODDR system 400 (FIG. 4), or the method 600 (FIG. 6).
[0100] In some embodiments, processor 902 is a central processing unit (CPU), a multiprocessor, a distributed processing system, an application specific integrated circuit (ASIC), and / or suitable processing unit.
[0101] In some embodiments, computer-readable storage medium 904 is an electronic, magnetic, optical, electromagnetic, infrared, and / or semiconductor system (or apparatus or device). For example, computer-readable storage medium 904 includes a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and / or an optical disk. In some embodiments using an optical disk, computer-readable storage medium 904 includes a compact disk read-only memory (CD-ROM), a compact disk read / write (CD-R / W), and / or a digital video disk (DVD).
[0102] In some embodiments, storage medium 904 stores computer program code 906 configured to cause system 900 to perform some or all of the operations as described in ODDR system 100 (FIG. 1), ODDR system 400 (FIG. 4), or method 600 (FIG. 6). In some embodiments, storage medium 904 also stores information necessary to perform some or all of the operations as described in ODDR system 100 (FIG. 1), ODDR system 400 (FIG. 4), or method 600 (FIG. 6), as well as information generated while performing some or all of the operations as described in ODDR system 100 (FIG. 1), ODDR system 400 (FIG. 4), or method 600 (FIG. 6), such as a priority level parameter 916, a query ID parameter 918, a query status parameter 920, a query data parameter 922, and / or a set of executable instructions to perform some or all of the operations as described in ODDR system 100 (FIG. 1), ODDR system 400 (FIG. 4), or method 600 (FIG. 6).
[0103] In some embodiments, the storage medium 904 stores instructions 907 for operation in connection with a manufacturing machine. The instructions 907 enable the processor 902 to generate manufacturing instructions readable by the manufacturing machine to effectively implement the method 600 during the manufacturing process.
[0104] System 900 includes an I / O interface 910. I / O interface 910 is connected to external circuitry. In some embodiments, I / O interface 910 includes a keyboard, keypad, mouse, trackball, trackpad, and / or cursor direction keys for communicating information and commands to processor 902.
[0105] System 900 also includes a network interface 912 coupled to processor 902. Network interface 912 enables system 900 to communicate with a network 914 to which one or more other computer systems are connected. Network interface 912 includes a wireless network interface, such as BLUETOOTH, WIFI, WIMAX, GPRS, or WCDMA, or a wired network interface, such as ETHERNET, USB, or IEEE-1394. In some embodiments, some or all of the operations described in ODDR system 100 (FIG. 1), ODDR system 400 (FIG. 4), or method 600 (FIG. 6) are implemented in two or more systems 900, and information such as priority level, query ID, query status, and query data is exchanged between the different systems 900 via network 914.
[0106] In at least some embodiments, the mobile computing network captures the query content by receiving from a server a task and a retention policy executable by the mobile computing network, performing the task using the mobile computing network to capture the target content, assigning a reduction probability to a first instance of the captured target content based on the retention policy, reducing at least one of the first instance and a portion of the other stored data based on the reduction probability in response to the amount of available storage falling below a threshold amount, and transmitting each instance of the captured target content in response to connection to the wide area network.
[0107] The foregoing outlines features of some embodiments so that those skilled in the art may more fully appreciate aspects of the present disclosure. Those skilled in the art should understand that they may readily use this disclosure as a basis for designing or modifying other processes and structures that carry out the same purposes and / or achieve the same advantages as the embodiments incorporated herein. Those skilled in the art should also understand that such equivalent structures do not depart from the spirit and scope of the present disclosure, and that various changes, substitutions, and alterations may be made by those skilled in the art without departing from the spirit and scope of the present disclosure.
Claims
1. A processor-implemented method, comprising: receiving from a server tasks executable by the mobile computing network system and retention policies; performing the task and retrieving targeted content using the mobile computing network system; assigning a data reduction potential to a first instance of the ingested targeted content based on the retention policy; In response to the amount of available storage being equal to or less than a threshold amount, reducing at least one of the first instance or a portion of other stored data other than the first instance to be transmitted based on the possibility of reduction; transmitting each instance of the captured targeted content in response to a connection to the wide area network; A method comprising:
2. The method of claim 1 , wherein the allocating comprises allocating a probability of purging data to a first instance of the ingested targeted content based on the retention policy.
3. The method of claim 2 , wherein the reducing comprises purging the first instance in response to an amount of available storage falling below a threshold amount.
4. The method of claim 1 or 2, wherein the assigning comprises assigning a filtering possibility to a first instance of ingested targeted content based on the retention policy.
5. 5. The method of claim 4, further comprising receiving from the server a filtering subtask programmed to filter the first instance of the ingested targeted content, the filtering subtask being programmed to be executed by the mobile computing network system.
6. The method of claim 5 , wherein the reducing comprises filtering the first instance using the filtering subtask in response to an amount of available storage falling below a threshold amount.
7. The method of claim 1 or 2, wherein the allocating comprises allocating a data compressibility potential to a first instance of the ingested targeted content based on the retention policy.
8. 8. The method of claim 7, further comprising receiving from the server a compression subtask programmed to compress the first instance of the captured target content, the compression subtask being programmed to be executed by the mobile computing network system.
9. The method of claim 8 , wherein the reducing comprises compressing the first instance using the compression subtask in response to an amount of available storage falling below a threshold amount.
10. The method of claim 1 or 2, wherein the executing comprises executing the task within a sandbox of limited computing resources.
11. The method of claim 1 or 2, wherein the executing comprises closing a priority task in response to receiving an instruction to execute the priority task.
12. The method of claim 1 or 2, wherein the performing comprises causing an available controller to perform the task in response to detecting that resource usage of the available controller is below a threshold amount.
13. The method of claim 1 or 2, wherein the transmitting comprises transmitting metadata for each instance of the ingested targeted content in response to a connection to a wide area network.
14. 14. The method of claim 13, wherein the transmitting includes receiving from the server, in response to transmitting the metadata for each instance of ingested targeted content, a transmission policy that defines a transmission priority value that corresponds to the first instance of ingested targeted content.
15. The method of claim 14 , wherein the transmitting includes transmitting the first instance of ingested targeted content among each instance of ingested targeted content in an order based on the transmission priority value.
16. 16. The method of claim 15, wherein the sending includes determining a bandwidth of a connection to the server in response to connecting to the wide area network prior to sending the first instance.
17. The method of claim 14 , wherein the transmitting includes deriving the transmission priority value from a transmission priority function of the transmission policy.
18. 18. The method of claim 17, wherein the sending priority function is based on one or more of a size of the first instance, an age of the first instance, and a bandwidth of a connection to the server.
19. A non-transitory computer-readable medium containing instructions, the instructions being executable by a processor, causing the processor to: receiving from a server tasks executable by the mobile computing network system and retention policies; performing the task and retrieving targeted content using the mobile computing network system; assigning a data reduction potential to a first instance of the ingested targeted content based on the retention policy; In response to the amount of available storage being equal to or less than a threshold amount, reducing at least one of the first instance and a portion of other stored data other than the first instance to be transmitted based on the possibility of reduction; transmitting each instance of the captured targeted content in response to a connection to the wide area network; 10. A non-transitory computer-readable medium for causing operations to be performed, comprising:
20. receiving from a server tasks executable by the mobile computing network system and retention policies; performing the task and retrieving targeted content using the mobile computing network system; assigning a data reduction potential to a first instance of the ingested targeted content based on the retention policy; In response to the amount of available storage being equal to or less than a threshold amount, reducing at least one of the first instance and a portion of other stored data other than the first instance to be transmitted based on the possibility of reduction; transmitting each instance of the captured targeted content in response to a connection to the wide area network; 12. An apparatus comprising: a controller including circuitry configured to perform operations including:
Citation Information
Patent Citations
On-vehicle device, on-vehicle system and vehicle
JP2022014797A
Customized data request system and method of using
JP2023057532A
On-demand data retrieval system and method of using
JP2023057533A
JPP7077702B