MAKING A DETERMINATION REGARDING CONSENSUS USING PROOFS OF ALTITUDE OF UNMANNED AERIAL VEHICLES
20220011784 · 2022-01-13
Inventors
- SYED MOHAMMAD ALI (LEANDER, TX, US)
- LOWELL L. DUKE (AUSTIN, TX, US)
- ZEHRA AKBAR (LEANDER, TX, US)
- SYED MOHAMMAD AMIR HUSAIN (GEORGETOWN, TX, US)
Cpc classification
H04L9/0825
ELECTRICITY
B64U2201/102
PERFORMING OPERATIONS; TRANSPORTING
B64C39/024
PERFORMING OPERATIONS; TRANSPORTING
International classification
G05D1/10
PHYSICS
Abstract
Making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs), including: receiving a request for a consensus from a pool of Unmanned Aerial Vehicles (UAVs), wherein membership in the pool of UAVs is based on an altitude threshold; sending, to each UAV in the pool of UAVs, a transaction request associated with the request for the consensus; receiving, from each UAV in the pool of UAVs, a corresponding response of a plurality of responses to the transaction request; and generating, based on the plurality of responses, a determination for the consensus.
Claims
1. A method for making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs), the method comprising: receiving a request for a consensus from a pool of UAVs, wherein membership in the pool of UAVs is based on an altitude threshold; sending, to each UAV in the pool of UAVs, a transaction request associated with the request for the consensus; receiving, from each UAV in the pool of UAVs, a corresponding response of a plurality of responses to the transaction request; and generating, based on the plurality of responses, a determination for the consensus.
2. The method of claim 1, further comprising: receiving a request from a UAV to join the pool of UAVs; and determining, based at least on whether an altitude of the UAV meets the altitude threshold, whether to add the UAV to the pool of UAVs.
3. The method of claim 2, wherein determining whether to add the UAV to the pool of UAVs comprises determining, based on a maximum number of UAVs allowed membership in the pool of UAVs, whether to add the UAVs to the pool of UAVs.
4. The method of claim 1, further comprising authenticating, based on a public key of an originator of the request for the consensus, the request for the consensus.
5. The method of claim 1, further comprising removing, based on an altitude of a UAV falling below the altitude threshold, the UAV from the pool of UAVs.
6. The method of claim 1, further comprising: modifying the altitude threshold; and sending, to the pool of UAVs, data indicating the modified altitude threshold.
7. The method of claim 6, further comprising determining, based on the modified altitude threshold, a modified pool of UAVs.
8. An apparatus for making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs), the apparatus comprising: a processor; and a memory storing instructions, the instructions executable by the processor to: receive a request for a consensus from a pool of UAVs, wherein membership in the pool of UAVs is based on an altitude threshold; send, to each UAV in the pool of UAVs, a transaction request associated with the request for the consensus; receive, from each UAV in the pool of UAVs, a corresponding response of a plurality of responses to the transaction request; and generate, based on the plurality of responses, a determination for the consensus.
9. The apparatus of claim 8, wherein the instructions are further executable by the processor to: receive a request from a UAV to join the pool of UAVs; and determine, based at least on whether an altitude of the UAV meets the altitude threshold, whether to add the UAV to the pool of UAVs.
10. The apparatus of claim 9, wherein determining whether to add the UAV to the pool of UAVs comprises determining, based on a maximum number of UAVs allowed membership in the pool of UAVs, whether to add the UAVs to the pool of UAVs.
11. The apparatus of claim 8, wherein the instructions are further executable by the processor to authenticate, based on a public key of an originator of the request for the consensus, the request for the consensus.
12. The apparatus of claim 8, wherein the instructions are further executable by the processor to remove, based on an altitude of a UAV falling below the altitude threshold, the UAV from the pool of UAVs.
13. The apparatus of claim 8, wherein the instructions are further executable by the processor to: modify the altitude threshold; and send, to the pool of UAVs, data indicating the modified altitude threshold.
14. The apparatus of claim 13, wherein the instructions are further executable by the processor to determine, based on the modified altitude threshold, a modified pool of UAVs.
15. A non-transitory computer-readable medium for making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs), the computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform operations, the operations comprising: receiving a request for a consensus from a pool of UAVs, wherein membership in the pool of UAVs is based on an altitude threshold; sending, to each UAV in the pool of UAVs, a transaction request associated with the request for the consensus; receiving, from each UAV in the pool of UAVs, a corresponding response of a plurality of responses to the transaction request; and generating, based on the plurality of responses, a determination for the consensus.
16. The non-transitory computer-readable medium of claim 15, wherein the operations further comprise: receiving a request from a UAV to join the pool of UAVs; and determining, based at least on whether an altitude of the UAV meets the altitude threshold, whether to add the UAV to the pool of UAVs.
17. The non-transitory computer-readable medium of claim 16, wherein determining whether to add the UAV to the pool of UAVs comprises determining, based on a maximum number of UAVs allowed membership in the pool of UAVs, whether to add the UAVs to the pool of UAVs.
18. The non-transitory computer-readable medium of claim 15, wherein the operations further comprise authenticating, based on a public key of an originator of the request for the consensus, the request for the consensus.
19. The non-transitory computer-readable medium of claim 15, wherein the operations further comprise removing, based on an altitude of a UAV falling below the altitude threshold, the UAV from the pool of UAVs.
20. The non-transitory computer-readable medium of claim 15, wherein the operations further comprise: modifying the altitude threshold; and sending, to the pool of UAVs, data indicating the modified altitude threshold.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
DETAILED DESCRIPTION
[0018] Particular aspects of the present disclosure are described below with reference to the drawings. In the description, common features are designated by common reference numbers throughout the drawings. As used herein, various terminology is used for the purpose of describing particular implementations only and is not intended to be limiting. For example, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It may be further understood that the terms “comprise,” “comprises,” and “comprising” may be used interchangeably with “include,” “includes,” or “including.” Additionally, it will be understood that the term “wherein” may be used interchangeably with “where.” As used herein, “exemplary” may indicate an example, an implementation, and/or an aspect, and should not be construed as limiting or as indicating a preference or a preferred implementation. As used herein, an ordinal term (e.g., “first,” “second,” “third,” etc.) used to modify an element, such as a structure, a component, an operation, etc., does not by itself indicate any priority or order of the element with respect to another element, but rather merely distinguishes the element from another element having a same name (but for use of the ordinal term). As used herein, the term “set” refers to a grouping of one or more elements, and the term “plurality” refers to multiple elements.
[0019] In the present disclosure, terms such as “determining,” “calculating,” “estimating,” “shifting,” “adjusting,” etc. may be used to describe how one or more operations are performed. It should be noted that such terms are not to be construed as limiting and other techniques may be utilized to perform similar operations. Additionally, as referred to herein, “generating,” “calculating,” “estimating,” “using,” “selecting,” “accessing,” and “determining” may be used interchangeably. For example, “generating,” “calculating,” “estimating,” or “determining” a parameter (or a signal) may refer to actively generating, estimating, calculating, or determining the parameter (or the signal) or may refer to using, selecting, or accessing the parameter (or signal) that is already generated, such as by another component or device.
[0020] As used herein, “coupled” may include “communicatively coupled,” “electrically coupled,” or “physically coupled,” and may also (or alternatively) include any combinations thereof. Two devices (or components) may be coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) directly or indirectly via one or more other devices, components, wires, buses, networks (e.g., a wired network, a wireless network, or a combination thereof), etc. Two devices (or components) that are electrically coupled may be included in the same device or in different devices and may be connected via electronics, one or more connectors, or inductive coupling, as illustrative, non-limiting examples. In some implementations, two devices (or components) that are communicatively coupled, such as in electrical communication, may send and receive electrical signals (digital signals or analog signals) directly or indirectly, such as via one or more wires, buses, networks, etc. As used herein, “directly coupled” may include two devices that are coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) without intervening components.
[0021] Exemplary methods, apparatuses, and computer program products for making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs) in accordance with the present invention are described with reference to the accompanying drawings, beginning with
[0022] A UAV, commonly known as a drone, is a type of powered aerial vehicle that does not carry a human operator and uses aerodynamic forces to provide vehicle lift. UAVs are a component of an unmanned aircraft system (UAS), which typically include at least a UAV, a control device, and a system of communications between the two. The flight of a UAV may operate with various levels of autonomy including under remote control by a human operator or autonomously by onboard or ground computers. Although a UAV may not include a human operator pilot, some UAVs, such as passenger drones (drone taxi, flying taxi, or pilotless helicopter) carry human passengers.
[0023] For ease of illustration, the UAV (102) is illustrated as one type of drone. However, any type of UAV may be used in accordance with embodiments of the present disclosure and unless otherwise noted, any reference to a UAV in this application is meant to encompass all types of UAVs. Readers of skill in the art will realize that the type of drone that is selected for a particular mission or excursion may depend on many factors, including but not limited to the type of payload that the UAV is required to carry, the distance that the UAV must travel to complete its assignment, and the types of terrain and obstacles that are anticipated during the assignment.
[0024] In
[0025] The camera (112) is configured to capture image(s), video, or both, and can be used as part of a computer vision system. For example, the camera (112) may capture images or video and provide the video or images to a pilot of the UAV (102) to aid with navigation. Additionally, or alternatively, the camera (112) may be configured to capture images or video to be used by the processor (104) during performance of one or more operations, such as a landing operation, a takeoff operation, or object/collision avoidance, as non-limiting examples. Although a single camera (112) is shown in
[0026] The positioning circuitry (114) is configured to determine a position of the UAV (102) before, during, and/or after flight. For example, the positioning circuitry (114) may include a global positioning system (GPS) interface or sensor that determines GPS coordinates of the UAV (102). The positioning circuitry (114) may also include gyroscope(s), accelerometer(s), pressure sensor(s), other sensors, or a combination thereof, that may be used to determine the position of the UAV (102).
[0027] The processor (104) is configured to execute instructions stored in and retrieved from the memory (106) to perform various operations. For example, the instructions include operation instructions (108) that include instructions or code that cause the UAV (102) to perform flight control operations. The flight control operations may include any operations associated with causing the UAV to fly from an origin to a destination. For example, the flight control operations may include operations to cause the UAV to fly along a designated route (e.g., based on route information (110), as further described herein), to perform operations based on control data received from one or more control devices, to take off, land, hover, change altitude, change pitch/yaw/roll angles, or any other flight-related operations. The UAV (102) may include one or more actuators, such as one or more flight control actuators, one or more thrust actuators, etc., and execution of the operation instructions (108) may cause the processor (104) to control the one or more actuators to perform the flight control operations. The one or more actuators may include one or more electrical actuators, one or more magnetic actuators, one or more hydraulic actuators, one or more pneumatic actuators, one or more other actuators, or a combination thereof.
[0028] The route information (110) may indicate a flight path for the UAV (102) to follow. For example, the route information (110) may specify a starting point (e.g., an origin) and an ending point (e.g., a destination) for the UAV (102). Additionally, the route information may also indicate a plurality of waypoints, zones, areas, regions between the starting point and the ending point.
[0029] The route information (110) may also indicate a corresponding set of control devices for various points, zones, regions, areas of the flight path. The indicated sets of control devices may be associated with a pilot (and optionally one or more backup pilots) assigned to have control over the UAV (102) while the UAV (102) is in each zone. The route information (110) may also indicate time periods during which the UAV is scheduled to be in each of the zones (and thus time periods assigned to each pilot or set of pilots).
[0030] In the example of
[0031] The control device (120) includes a processor (122) coupled to a memory (124), a display device (132), and communication circuitry (134). The display device (132) may be a liquid crystal display (LCD) screen, a touch screen, another type of display device, or a combination thereof. The communication circuitry (134) includes a transmitter and a receiver or a combination thereof (e.g., a transceiver). In a particular implementation, the communication circuitry (134) (or the processor (122)) is configured to encrypt outgoing message(s) using a private key associated with the control device (120) and to decrypt incoming message(s) using a public key of a device (e.g., the UAV (102) or the server (140)) that sent the incoming message(s). Thus, in this implementation, communication between the UAV (102), the control device (120), and the server (140) are secure and trustworthy (e.g., authenticated).
[0032] The processor (122) is configured to execute instructions from the memory (124) to perform various operations. The instructions also include control instructions (130) that include instructions or code that cause the control device (120) to generate control data to transmit to the UAV (102) to enable the control device (120) to control one or more operations of the UAV (102) during a particular time period, as further described herein. The instructions also include deconfliction instructions (139) that include receiving flight path data for a first unmanned aerial vehicle (UAV), wherein the flight path data indicates a first flight path that traverses a geographic cell assigned to the deconfliction controller; determining, by a deconfliction module, whether the first flight path conflicts with at least one second flight path of at least one second UAV, wherein the at least one second flight path also traverses the geographic cell; and providing, in dependence upon the determination, first navigation instructions for one or more UAVs. The deconfliction instructions (139) are further configured for determining that the first flight path conflicts with the at least one of second flight path and providing, to at least one of the first UAV and the second UAV, rerouting instructions for a rerouted flight path that avoids the conflict. In some embodiments the first UAV and the at least one second UAV are coordinated by a server and the method further comprises transmitting one or more rerouted flight paths to a server. The deconfliction instructions (139) are further configured for receiving a flight path approval request and providing a flight path approval response to the first UAV.
[0033] In the example of
[0034] The server (140) includes a processor (142) coupled to a memory (146), and communication circuitry (144). The communication circuitry (144) includes a transmitter and a receiver or a combination thereof (e.g., a transceiver). In a particular implementation, the communication circuitry (144) (or the processor (142)) is configured to encrypt outgoing message(s) using a private key associated with the server (140) and to decrypt incoming message(s) using a public key of a device (e.g., the UAV (102) or the control device (120)) that sent the incoming message(s). As will be explained further below, the outgoing and incoming messages may be transaction messages that include information associated with the UAV. Thus, in this implementation, communication between the UAV (102), the control device (120), and the server (140) are secure and trustworthy (e.g., authenticated).
[0035] The processor (142) is configured to execute instructions from the memory (146) to perform various operations. The instructions include route instructions (148) comprising computer program instructions for aggregating data from disparate data servers, virtualizing the data in a map, generating a cost model for paths traversed in the map, and autonomously selecting the optimal route for the UAV based on the cost model. For example, the route instructions (148) are configure to partition a map of a region into geographic cells, calculate a cost for each geographic cell, wherein the cost is a sum of a plurality of weighted factors, determine a plurality of flight paths for the UAV from a first location on the map to a second location on the map, wherein each flight path traverses a set of geographic cells, determine a cost for each flight path based on the total cost of the set of geographic cells traversed, and select, in dependence upon the total cost of each flight path, an optimal flight path from the plurality of flight paths. The route instructions (148) are further configured to obtain data from one or more data servers regarding one or more geographic cells, calculate, in dependence upon the received data, an updated cost for each geographic cell traversed by a current flight path, calculate a cost for each geographic cell traversed by at least one alternative flight path from the first location to the second location, determine that at least one alternative flight path has a total cost that is less than the total cost of the current flight path, and select a new optimal flight path from the at least one alternative flight paths. The route instructions (148) may also include instructions for storing the parameters of the selected optimal flight path as route information (110). For example, the route information may include waypoints marked by GPS coordinates, arrival times for waypoints, pilot assignments. The server (140) may be configured to transmit the route information (110) to the UAV (102).
[0036] The instructions may also include control instructions (150) that include instructions or code that cause the server (140) to generate control data to transmit to the UAV (102) to enable the server (140) to control one or more operations of the UAV (102) during a particular time period, as further described herein.
[0037] In the example of
[0038] The distributed computing network (151) of
[0039] The processor (145) is configured to execute instructions from the memory (154) to perform various operations. The memory (154) includes a blockchain manager (155) that includes computer program instructions for recording data associated with the UAV (102). Specifically, the blockchain manager (155) includes computer program instructions that when executed by the processor (152) cause the processor (152) to receive a transaction message associated with a UAV. For example, the blockchain manager may receive transaction messages from the UAV (102), the control device (120), or the server (140). As will be explained below, other entities (e.g., a service repair technician) may transmit transaction messages associated with a UAV to the blockchain manager (155). The blockchain manager (155) also includes computer program instructions that when executed by the processor (152) cause the processor (152) to use the information within the transaction message to create a block of data; and store the created block of data in a blockchain data structure (156) associated with the UAV.
[0040] The blockchain manager may also include instructions for accessing information regarding an unmanned aerial vehicle (UAV). For example, the blockchain manager (155) also includes computer program instructions that when executed by the processor (152) cause the processor to receive from a user, a request for information regarding the UAV; in response to receiving the request, retrieve from a blockchain data structure associated with the UAV, data associated with the information requested; and based on the retrieved data, respond to the user.
[0041] The memory (154) also includes a consensus manager (159). The consensus manager (159) facilitates using a plurality of UAVs (102) to come to a consensus regarding a particular problem, task, or determination. The consensus manager (159) may use a pool of UAVs (102) meeting or exceeding an altitude threshold to come to the consensus. Thus, each UAV (102) in the pool of UAVs (102) has provided a “Proof of Altitude” in order to contribute to the consensus.
[0042] For example, the consensus manager (159) may receive a request for a consensus (e.g., regarding a particular problem, task, or determination). The request may be received from a user via the distributed computing network (151), a server (120), or another entity. The consensus may be reached based on responses from a plurality of UAVs (102) in a pool of UAVs (102). Each UAV (102) in the pool of UAVs (102) that can contribute to the consensus has reached an altitude threshold. The request may be associated with a computational problem or determination to be solved by the pool of UAVs (102). The request may also be associated with an observation performed by the pool of UAVs (102). For example, the request may to determine whether a particular detectable object (e.g., visible by a camera (112)) is at a particular location.
[0043] The consensus manager (159) then sends, to each UAV (102) in the pool of UAVs (102), a transaction request associated with the request for the consensus. The transaction request may indicate a task, problem, or determination to be performed by the UAV (102) receiving the request. The transaction request may be sent to each UAV (102) in the pool via a network (118). The transaction request may also be sent to one or more UAVs (102) for forwarding to other UAVs (102) in the pool.
[0044] The consensus manager (159) then receives, from each UAV (102) in the pool of UAVs (102), a corresponding response of a plurality of responses to the transaction request. Each response may indicate a binary response (e.g. “yes” or “no”) to the transaction request associated with the request for the consensus. For example, each response may indicate whether a particular object or sensor reading was detected by the respective UAV (102). The responses may also indicate a current altitude of a respective UAV (102) from which the response was received. Thus, if the UAV (102) has since fallen below the altitude threshold since its addition to the pool, the consensus manager (159) may remove the UAV (102) from the pool and/or discount or ignore the response from the UAV (102). The responses may be received via the network (118).
[0045] The consensus manager (159) may then generate, based on the plurality of responses, a determination for the consensus. The determination may be based on a majority of the responses (e.g., greater than fifty percent). For example, if greater than fifty percent of UAVs (102) in the pool of UAVs (102) indicate “yes” to the transaction request, the determination would indicate “yes” for the consensus. The determination may also indicate a ratio or distribution of responses to the transaction request.
[0046] Generating the determination may include sending data indicating the determination to an originator of the request for the consensus. Generating the determination may also include writing (e.g., via a blockchain manager (155)) a block to a blockchain (156) indicating the determination.
[0047] Each UAV (102) effectively shows a proof of work for eligibility in the pool for the consensus through the work required to reach the altitude threshold (e.g., through fuel and/or power expenditure). Moreover, as each UAV (102) eventually has to return to the ground for refueling and/or recharging, UAVs (102) will continuously enter and leave the pool. Thus, the pool of UAVs (102) is effectively a semirandom sampling of UAVs (102).
[0048] The consensus manager (159) may be configured to manage requests from UAVs (102) to join the pool of UAVs (102). For example, the consensus manager (159) may receive a request from a UAV (102) to join the pool of UAVs (102). The request may indicate an altitude of the UAV (102). For example, the request may indicate telemetry data (107) or other data indicating the altitude of the UAV (102). The request may also identify an entry in a blockchain (156) indicating the altitude of the UAV (102).
[0049] The consensus manager (159) may then determine, based on at least whether an altitude of the UAV (102) meets an altitude threshold, whether to add the UAV (102) to the pool of UAVs (102). For example, where the altitude falls below the altitude threshold, the consensus manager (159) may deny entry to the UAV (102) into the pool of UAVs (102). As another example, where the altitude meets or exceeds the altitude threshold, the consensus manager (159) may allow entry to the UAV (102) into the pool of UAVs (102).
[0050] In some embodiments, determining whether to add the UAV (102) to the pool of UAVs (102) comprises determining, based on a maximum number of UAVs (102) allowed membership in the pool of UAVs (102), whether to add the UAVs (102) to the pool of UAVs (102). For example, the consensus manager (159) may enforce a membership threshold defining a maximum number of UAVs (102) that may be included in the pool of UAVs (102). Accordingly, the consensus manager (159) may deny entry of a UAV (102) into the pool of UAVs (102) where a number of UAVs (102) in the pool meets the membership threshold. The consensus manager (159) may also allow entry of the UAV (102) into the pool if the number of UAVs (102) in the pool falls below the membership threshold.
[0051] The consensus manager (159) may also be configured to authenticate the request for the consensus. For example, the request for the consensus may be encrypted by an originator of the request using a private key or other encryption key. The consensus manager (159) may then authenticate the request for the consensus by decrypting the request using a public key or other decryption key.
[0052] The consensus manager (159) may remove, based on an altitude of a UAV (102) falling below the altitude threshold, the UAV (102) from the pool of UAVs (102). For example, a response to a transaction request received from a UAV (102) may indicate an altitude falling below the altitude threshold. The consensus manager (159) may then remove the UAV (102) from the pool. The consensus manager (159) may also poll UAVs (102) in the pool for current altitude data and remove, from the pool, those UAVs (102) falling below the altitude threshold.
[0053] The consensus manager (159) may modify the altitude threshold used to determine membership in the pool of UAVs (102) contributing to the consensus. For example, the consensus manager (159) may increase the altitude threshold at a predefined time interval, or after responding to a predefined number of requests for a consensus. The consensus manager (159) may also modify the altitude threshold based on a user input of the altitude threshold, or in response to other criteria.
[0054] The consensus manager (159) may then send, to the pool of UAVs (102), data indicating the modified altitude threshold. For example, the consensus manager (159) may send the data to each UAV (102) in the pool of UAVs (102), or to a subset of the UAVs (102) for forwarding to other UAVs (102) in the pool. The consensus manager (159) may also send the data to other UAVs (102) outside of the pool. Based on the modified altitude threshold, a UAV (102) receiving the data may automatically increase altitude to satisfy the modified altitude threshold, send a notification to a control device (120) or other device indicating the modified altitude threshold, leave the pool of UAVs (102), or perform another action.
[0055] The consensus manager (159) may also determine, based on the modified altitude threshold, a modified pool of UAVs (102). For example, the consensus manager (159) may query a plurality of UAVs (102) for altitude data and include, in the modified pool of UAVs (102), those UAVs (102) meeting or exceeding the modified altitude threshold. The consensus manager (159) may also purge or empty the pool of UAVs (102) and solicit requests from UAVs (102) wishing to join the modified pool of UAVs (102).
[0056] The UAV (102), the control device (120), and server (140) are communicatively coupled via a network (118). For example, the network (118) may include a satellite network or another type of network that enables wireless communication between the UAV (102), the control device (120), the server (140), and the distributed computing network (151). In an alternative implementation, the control device (120), the server (140) communicate with the UAV (102) via separate networks (e.g., separate short range networks.)
[0057] In some situations, minimal (or no) manual control of the UAV (102) may be performed, and the UAV (102) may travel from the origin to the destination without incident. However, in some situations, one or more pilots may control the UAV (102) during a time period, such as to perform object avoidance or to compensate for an improper UAV operation. In some situations, the UAV (102) may be temporarily stopped, such as during an emergency condition, for recharging, for refueling, to avoid adverse weather conditions, responsive to one or more status indicators from the UAV (102), etc. In some implementations, due to the unscheduled stop, the route information (110) may be updated (e.g., via a subsequent blockchain entry, as further described herein) by route instructions (148) executing on the UAV (102), the control device (120), or the server (140)). The updated route information may include updated waypoints, updated time periods, and updated pilot assignments.
[0058] In a particular implementation, the route information is exchanged using a blockchain data structure. The blockchain data structure may be shared in a distributed manner across a plurality of devices of the system (100), such as the UAV (102), the control device (120), the server (140), and any other control devices or UAVs in the system (100). In a particular implementation, each of the devices of the system (100) stores an instance of the blockchain data structure in a local memory of the respective device. In other implementations, each of the devices of the system (100) stores a portion of the shared blockchain data structure and each portion is replicated across multiple of the devices of the system (100) in a manner that maintains security of the shared blockchain data structure as a public (i.e., available to other devices) and incorruptible (or tamper evident) ledger. Alternatively, as in
[0059] The blockchain data structure (156) may include, among other things, route information associated with the UAV (102), the telemetry data (107), the control instructions (131), the deconfliction instructions (139), and the route instructions (148). For example, the route information (110) may be used to generate blocks of the blockchain data structure (156). A sample blockchain data structure (300) is illustrated in
[0060] The block data of each block includes information that identifies the block (e.g., a block ID) and enables the devices of the system (100) to confirm the integrity of the blockchain data structure (300). For example, the block data also includes a timestamp and a previous block hash. The timestamp indicates a time that the block was created. The block ID may include or correspond to a result of a hash function (e.g., a SHA256 hash function, a RIPEMD hash function, etc.) based on the other information (e.g., the availability data or the route data) in the block and the previous block hash (e.g., the block ID of the previous block). For example, in
[0061] In addition to the block data, each block of the blockchain data structure (300) includes some information associated with a UAV (e.g., availability data, route information, telemetry data, incident reports, updated route information, maintenance records, etc.). For example, the block Bk_1 (304) includes availability data that includes a user ID (e.g., an identifier of the mobile device, or the pilot, that generated the availability data), a zone (e.g., a zone at which the pilot will be available), and an availability time (e.g., a time period the pilot is available at the zone to pilot a UAV). As another example, the block Bk_2 (306) includes route information that includes a UAV ID, a start point, an end point, waypoints, GPS coordinates, zone markings, time periods, primary pilot assignments, and backup pilot assignments for each zone associated with the route.
[0062] In the example of
[0063]
[0064]
[0065]
[0066] Referring back to
[0067] In a particular embodiment, the route instructions (148) cause the server (140) to plan a flight path, generate route information, dynamically reroute the flight path and update the route information based on data aggregated from a plurality of data servers. For example, the server (140) may receive air traffic data (167) over the network (119) from the air traffic data server (160), weather data (177) from the weather data server (170), regulatory data (187) from the regulatory data server (180), and topographical data (197) from the topographic data server (190). It will be recognized by those of skill in the art that other data servers useful in-flight path planning of a UAV may also provide data to the server (140) over the network (101) or through direct communication with the server (140).
[0068] The air traffic data server (160) may include a processor (162), memory (164), and communication circuitry (168). The memory (164) of the air traffic data server (160) may include operating instructions (166) that when executed by the processor (162) cause the processor to provide the air traffic data (167) about the flight paths of other aircraft in a region, including those of other UAVs. The air traffic data may also include real-time radar data indicating the positions of other aircraft, including other UAVs, in the immediate vicinity or in the flight path of a particular UAV. Air traffic data servers may be, for example, radar stations, airport air traffic control systems, the FAA, UAV control systems, and so on.
[0069] The weather data server (170) may include a processor (172), memory (174), and communication circuitry (178). The memory (174) of the weather data server (170) may include operating instructions (176) that when executed by the processor (172) cause the processor to provide the weather data (177) that indicates information about atmospheric conditions along the UAV's flight path, such as temperature, wind, precipitation, lightening, humidity, atmospheric pressure, and so on. Weather data servers may be, for example, the National Weather Service (NWS), the National Oceanic and Atmospheric Administration (NOAA), local meteorologists, radar stations, other aircraft, and so on.
[0070] The regulatory data server (180) may include a processor (182), memory (184), and communication circuitry (188). The memory (184) of the weather data server (180) may include operating instructions (186) that when executed by the processor (182) cause the processor provide the regulatory data (187) that indicates information about laws and regulations governing a particular region of airspace, such as airspace restrictions, municipal and state laws and regulations, permanent and temporary no-fly zones, and so on. Regulatory data servers may include, for example, the FAA, state and local governments, the Department of Defense, and so on.
[0071] The topographical data server (190) may include a processor (192), memory (194), and communication circuitry (198). The memory (194) of the topographical data server (190) may include operating instructions (196) that when executed by the processor (192) cause the processor to provide the topographical data that indicates information about terrain, places, structures, transportation, boundaries, hydrography, orthoimagery, land cover, elevation, and so on. Topographic data may be embodied in, for example, digital elevation model data, digital line graphs, and digital raster graphics. Topographic data servers may include, for example, the United States Geological Survey or other geographic information systems (GISs).
[0072] In some embodiments, the server (140) may aggregate data from the data servers (160, 170, 180, 190) using application program interfaces (APIs), syndicated feeds and eXtensible Markup Language (XML), natural language processing, JavaScript Object Notation (JSON) servers, or combinations thereof. Updated data may be pushed to the server (140) or may be pulled on-demand by the server (140). Notably, the FAA may be an important data server for both airspace data concerning flight paths and congestion as well as an important data server for regulatory data such as permanent and temporary airspace restrictions. For example, the FAA provides the Aeronautical Data Delivery Service (ADDS), the Aeronautical Product Release API (APRA), System Wide Information Management (SWIM), Special Use Airspace information, and Temporary Flight Restrictions (TFR) information, among other data. The National Weather Service (NWS) API allows access to forecasts, alerts, and observations, along with other weather data. The USGS Seamless Server provides geospatial data layers regarding places, structures, transportation, boundaries, hydrography, orthoimagery, land cover, and elevation. Readers of skill in the art will appreciate that various governmental and non-governmental entities may act as data servers and provide access to that data using APIs, JSON, XML, and other data formats.
[0073] Readers of skill in the art will realize that the server (140) can communicate with a UAV (102) using a variety of methods. For example, the UAV (102) may transmit and receive data using Cellular, 5G, Sub1GHz, SigFox, WiFi networks, or any other communication means that would occur to one of skill in the art.
[0074] The network (119) may comprise one or more Local Area Networks (LANs), Wide Area Networks (WANs), cellular networks, satellite networks, internets, intranets, or other networks and combinations thereof. The network (119) may comprise one or more wired connections, wireless connections, or combinations thereof.
[0075] The arrangement of servers and other devices making up the exemplary system illustrated in
[0076] For further explanation,
[0077] For further explanation,
[0078] The method of
[0079] The method of
[0080] The method of
[0081] Generating (408) the determination (458) may include sending data indicating the determination (458) to an originator of the request (450) for the consensus. Generating (408) the determination (458) may also include writing (e.g., via a blockchain manager (155)) a block to a blockchain (156) indicating the determination (458).
[0082] For further explanation,
[0083] The method of
[0084]
[0085] For further explanation,
[0086]
[0087] For further explanation,
[0088] The method of
[0089] For further explanation,
[0090]
[0091] For further explanation,
[0092]
[0093] The method of
[0094] For further explanation,
[0095]
[0096] Exemplary embodiments of the present invention are described largely in the context of a fully functional computer system for making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs). Readers of skill in the art will recognize, however, that the present invention also may be embodied in a computer program product disposed upon computer readable storage media for use with any suitable data processing system. Such computer readable storage media may be any storage medium for machine-readable information, including magnetic media, optical media, or other suitable media. Examples of such media include magnetic disks in hard drives or diskettes, compact disks for optical drives, magnetic tape, and others as will occur to those of skill in the art. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a computer program product. Persons skilled in the art will recognize also that, although some of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
[0097] The present invention may be a system, an apparatus, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
[0098] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
[0099] Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
[0100] Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
[0101] Hardware logic, including programmable logic for use with a programmable logic device (PLD) implementing all or part of the functionality previously described herein, may be designed using traditional manual methods or may be designed, captured, simulated, or documented electronically using various tools, such as Computer Aided Design (CAD) programs, a hardware description language (e.g., VHDL or Verilog), or a PLD programming language. Hardware logic may also be generated by a non-transitory computer readable medium storing instructions that, when executed by a processor, manage parameters of a semiconductor component, a cell, a library of components, or a library of cells in electronic design automation (EDA) software to generate a manufacturable design for an integrated circuit. In implementation, the various components described herein might be implemented as discrete components or the functions and features described can be shared in part or in total among one or more components. Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
[0102] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
[0103] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
[0104] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
[0105] Advantages and features of the present disclosure can be further described by the following statements:
[0106] 1. A method, device, apparatus, non-transitory computer-readable medium, computer program product for making a determination regarding consensus using proofs of altitude of unmanned aerial vehicles (UAVs), the method comprising: receiving a request for a consensus from a pool of UAVs, wherein membership in the pool of UAVs is based on an altitude threshold; sending, to each UAV in the pool of UAVs, a transaction request associated with the request for the consensus; receiving, from each UAV in the pool of UAVs, a corresponding response of a plurality of responses to the transaction request; and generating, based on the plurality of responses, a determination for the consensus.
[0107] 2. The method, device, apparatus, non-transitory computer-readable medium computer program product of statement 1 further comprising receiving a request from a UAV to join the pool of UAVs; and determining, based at least on whether an altitude of the UAV meets the altitude threshold, whether to add the UAV to the pool of UAVs.
[0108] 3. The method, device, apparatus, non-transitory computer-readable medium computer program product of statement 1 or 2, wherein determining whether to add the UAV to the pool of UAVs comprises determining, based on a maximum number of UAVs allowed membership in the pool of UAVs, whether to add the UAVs to the pool of UAVs.
[0109] 4. The method, device, apparatus, non-transitory computer-readable medium computer program product of any of statements 1-3, further comprising authenticating, based on a public key of an originator of the request for the consensus, the request for the consensus.
[0110] 5. The method, device, apparatus, non-transitory computer-readable medium computer program product of any of statements 1-4, further comprising removing, based on an altitude of a UAV falling below the altitude threshold, the UAV from the pool of UAVs.
[0111] 6. The method, device, apparatus, non-transitory computer-readable medium computer program product of any of statements 1-5, further comprising: modifying the altitude threshold; and sending, to the pool of UAVs, data indicating the modified altitude threshold.
[0112] 7. The method, device, apparatus, non-transitory computer-readable medium computer program product of any of statements 1-6, further comprising determining, based on the modified altitude threshold, a modified pool of UAVs.
[0113] One or more embodiments may be described herein with the aid of method steps illustrating the performance of specified functions and relationships thereof. The boundaries and sequence of these functional building blocks and method steps have been arbitrarily defined herein for convenience of description. Alternate boundaries and sequences can be defined so long as the specified functions and relationships are appropriately performed. Any such alternate boundaries or sequences are thus within the scope and spirit of the claims. Further, the boundaries of these functional building blocks have been arbitrarily defined for convenience of description. Alternate boundaries could be defined as long as the certain significant functions are appropriately performed. Similarly, flow diagram blocks may also have been arbitrarily defined herein to illustrate certain significant functionality.
[0114] To the extent used, the flow diagram block boundaries and sequence could have been defined otherwise and still perform the certain significant functionality. Such alternate definitions of both functional building blocks and flow diagram blocks and sequences are thus within the scope and spirit of the claims. One of average skill in the art will also recognize that the functional building blocks, and other illustrative blocks, modules and components herein, can be implemented as illustrated or by discrete components, application specific integrated circuits, processors executing appropriate software and the like or any combination thereof.
[0115] While particular combinations of various functions and features of the one or more embodiments are expressly described herein, other combinations of these features and functions are likewise possible. The present disclosure is not limited by the particular examples disclosed herein and expressly incorporates these other combinations.