UNMANNED AERIAL VEHICLE MODULE MANAGEMENT

Methods, systems, apparatuses, and computer program products for UAV module management are disclosed. In a particular embodiment, UAV module management includes software module library management by a computing system. In this embodiment, the computing system presents information representing a plurality of UAV software modules, receives information representing a UAV software module selection, and adds the UAV software module identified by the information representing a UAV software module selection to a UAV software module library. According to this embodiment, the computing system adds, based on a selection of a UAV software module, the selected UAV module to a UAV software module library.

BACKGROUND

An Unmanned Aerial Vehicle (UAV) is a term used to describe an aircraft with no pilot on-board the aircraft. The use of UAVs is growing in an unprecedented rate, and it is envisioned that UAVs will become commonly used for package delivery and passenger air taxis. However, as UAVs become more prevalent in the airspace, there is a need to regulate air traffic and ensure the safe navigation of the UAVs.

The Unmanned Aircraft System Traffic Management (UTM) is an initiative sponsored by the Federal Aviation Administration (FAA) to enable multiple beyond visual line-of-sight drone operations at low altitudes (under (400) feet above ground level (AGL) in airspace where FAA air traffic services are not provided. However, a framework that extends beyond the (400) feet AGL limit is needed. For example, unmanned aircraft that would be used by package delivery services and air taxis may need to travel at altitudes above (400) feet. Such a framework requires technology that will allow the FAA to safely regulate unmanned aircraft.

SUMMARY

Methods, systems, apparatuses, and computer program products for UAV module management are disclosed. In a particular embodiment, UAV module management includes software module library management by a computing system. In this embodiment, the computing system presents information representing a plurality of UAV software modules, receives information representing a UAV software module selection, and adds the UAV software module identified by the information representing a UAV software module selection to a UAV software module library. According to this embodiment, the computing system adds, based on a selection of a UAV software module, the selected UAV module to a UAV software module library.

In a particular embodiment, UAV module management includes UAV software module management by a computing system. In this embodiment, the computing system presents information representing a plurality of UAV software modules of a UAV software library, receives information representing UAV software module selection from the plurality of UAV software modules of the UAV software module library, and transfers a UAV software module indicated by the UAV software module selection to a UAV memory. According to this embodiment, the computing system adds, based on a selection of a UAV software module, the selected UAV software module to a UAV memory.

In a particular embodiment, UAV module management includes UAV mission recommendations by a computing system. In this embodiment, the computing system receives at least one UAV mission parameter, determines at least one UAV software module dependent on the at least one UAV mission parameter, determines at least one UAV hardware configuration dependent on the at least one UAV mission parameter, and presents the at least one UAV software module and the at least one UAV hardware configuration. According to this embodiment, the computing system recommends UAV software modules and hardware configurations based on at least one UAV mission parameter.

DETAILED DESCRIPTION

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.

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.

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.

Exemplary methods, apparatuses, and computer program products for managing UAV software modules and UAV software module libraries in accordance with the present invention are described with reference to the accompanying drawings, beginning withFIG.1.FIG.1sets forth a diagram of a system100configured for managing UAV software modules according to embodiments of the present disclosure. The system100ofFIG.1includes an unmanned aerial vehicle (UAV)102, a user device120, a server140, a distributed computing network151, an air traffic data server160, a weather data server170, a regulatory data server180, and a topographic data server190.

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.

For ease of illustration, the UAV102is 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.

InFIG.1, the UAV102includes a processor104coupled to a memory106, a camera112, positioning circuitry114, and communication circuitry116. The communication circuitry116includes a transmitter and a receiver or a combination thereof (e.g., a transceiver). In a particular implementation, the communication circuitry116(or the processor104) is configured to encrypt outgoing message(s) using a private key associated with the UAV102and to decrypt incoming message(s) using a public key of a device (e.g., the user device120or the server140that 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, communications between the UAV102, the user device120, and the server140are secure and trustworthy (e.g., authenticated).

The camera112is configured to capture image(s), video, or both, and can be used as part of a computer vision system. For example, the camera112may capture images or video and provide the video or images to a pilot of the UAV102to aid with navigation. Additionally, or alternatively, the camera112may be configured to capture images or video to be used by the processor104during 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 camera112is shown inFIG.1, in alternative implementations more and/or different sensors may be used (e.g., infrared, LIDAR, SONAR, etc.).

The positioning circuitry114is configured to determine a position of the UAV102before, during, and/or after flight. For example, the positioning circuitry114may include a global positioning system (GPS) interface or sensor that determines GPS coordinates of the UAV102. The positioning circuitry114may 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 UAV102.

The processor104is configured to execute instructions stored in and retrieved from the memory106to perform various operations. For example, the instructions include operation instructions108that include instructions or code that cause the UAV102to 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 information110, 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 UAV102may include one or more actuators, such as one or more flight control actuators, one or more thrust actuators, etc., and execution of the operation instructions108may cause the processor104to 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.

The route information110may indicate a flight path for the UAV102to follow. For example, the route information110may specify a starting point (e.g., an origin) and an ending point (e.g., a destination) for the UAV102. Additionally, the route information may also indicate a plurality of waypoints, zones, areas, regions between the starting point and the ending point.

The route information110may 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 UAV102while the UAV102is in each zone. The route information110may 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).

The memory106of the UAV102may also include communication instructions111that when executed by the processor104cause the processor104to transmit to the distributed computing network151, transaction messages that include telemetry data107. Telemetry data may include any information that could be useful to identifying the location of the UAV, the operating parameters of the UAV, or the status of the UAV. Examples of telemetry data include but are not limited to GPS coordinates, instrument readings (e.g., airspeed, altitude, altimeter, turn, heading, vertical speed, attitude, turn and slip), and operational readings (e.g., pressure gauge, fuel gauge, battery level).

In the example ofFIG.1, the memory106of the UAV102further includes at least one UAV software module103. The UAV software module103is defined as a group of computer executable code that, when executed by a processor, enables at least one specialized functionality of a UAV that may not normally be present on the UAV. For example, in the embodiment ofFIG.1, the camera112may normally be configured to take pictures. The UAV software module103may be executed by processor104to enable additional functionality of the camera112, such as object detection or tracking. The UAV software module103may work in conjunction with the existing hardware of the UAV102, such as shown inFIG.1, or in other examples, the UAV software module103may work in conjunction with optional hardware. For example, a UAV software module103may work in combination with a sensor not normally present on the UAV102. In such examples, adding the sensor to the UAV102may only be enabled once the appropriate software module is enabled. Likewise, the UAV software module103may not be functional unless the additional sensor is present on the UAV103. Examples of functionality that may be enabled by a software module include, but are not limited to, object detection, automated flight patterns, object tracking, object counting, or responses to object detection.

The user device120includes a processor122coupled to a memory124, a display device132, and communication circuitry134. The display device132may be a liquid crystal display (LCD) screen, a touch screen, another type of display device, or a combination thereof. The communication circuitry134includes a transmitter and a receiver or a combination thereof (e.g., a transceiver). In a particular implementation, the communication circuitry134(or the processor122is configured to encrypt outgoing message(s) using a private key associated with the user device120and to decrypt incoming message(s) using a public key of a device (e.g., the UAV102or the server140that sent the incoming message(s). Thus, in this implementation, communication between the UAV102, the user device120, and the server140are secure and trustworthy (e.g., authenticated).

The processor122is configured to execute instructions from the memory124to perform various operations. The instructions include control instructions130that include instructions or code that cause the user device120to generate control data to transmit to the UAV102to enable the user device120to control one or more operations of the UAV102during a particular time period, as further described herein.

In the example ofFIG.1, the memory124of the user device120also includes communication instructions131that when executed by the processor122cause the processor122to transmit to the distributed computing network151, messages that include control instructions130that are directed to the UAV102. In a particular embodiment, the transaction messages are also transmitted to the UAV and the UAV takes action (e.g., adjusting flight operations), based on the information (e.g., control data) in the message.

In addition, the memory124of the user device120may also include a UAV software module library139. The UAV software module library139includes at least one UAV software module, such as UAV software module103, that enables a functionality of the UAV102. Each UAV software module stored in the UAV software module library139may comprise computer executable instructions, that when executed by a processor, enable the UAV functionality. In some examples, the UAV software module may be executed by processor122of user device120, or as described in relation to the UAV, the UAV software module may be executed by processor104of the UAV. In still another example, the UAV software module may execute on both the UAV102and the user device120.

The memory124of the user device120may further include a UAV software module library controller135. In a particular embodiment, the UAV software module library controller135includes instructions for management of the UAV software module library139. The instructions, when executed by the processor122cause the processor122to carry out the operations of: presenting information representing a plurality of UAV software modules; receiving, from a user interacting with the user device120, information representing a UAV software module selection from the plurality of UAV software modules; and adding a UAV software module identified by the information representing a UAV software module to the UAV software module library139.

The memory124of the user device120may also include a UAV software module controller136that includes instructions for management of UAV software modules. The instructions, when executed by the processor122, cause the processor122to carry out the operations of: presenting information representing a plurality of UAV software modules of the UAV software module library139; receiving, from a user interacting with the user device120, a selection of a UAV software module from the plurality of UAV software modules; and transferring a UAV software module indicated by the UAV software module selection to the UAV102.

The memory124of the user device120may also include a UAV configuration recommender133. The UAV configuration recommender133includes instructions for management of UAVs. The instructions, when executed by the processor122, cause the processor122to carry out the operations of: receiving at least one UAV mission parameter; determining at least one UAV software module dependent on the at least one UAV mission parameter; determining at least one UAV hardware configuration dependent on the at least one UAV mission parameter; and presenting the at least one UAV software module and the at least one UAV hardware configuration.

The server140includes a processor142coupled to a memory146, and communication circuitry144. The communication circuitry144includes a transmitter and a receiver or a combination thereof (e.g., a transceiver). In a particular implementation, the communication circuitry144(or the processor142is configured to encrypt outgoing message(s) using a private key associated with the server140and to decrypt incoming message(s) using a public key of a device (e.g., the UAV102or the user device120that 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 UAV102, the user device120, and the server140are secure and trustworthy (e.g., authenticated).

The processor142is configured to execute instructions from the memory146to perform various operations. The instructions include route instructions148comprising 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 instructions148are configured 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 instructions148are 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 instructions148may also include instructions for storing the parameters of the selected optimal flight path as route information110. For example, the route information may include waypoints marked by GPS coordinates, arrival times for waypoints, pilot assignments.

The instructions may also include control instructions150that include instructions or code that cause the server140to generate control data to transmit to the UAV102to enable the server140to control one or more operations of the UAV102during a particular time period, as further described herein.

In addition, the memory146of the server140may also include a plurality of UAV software modules145. The plurality of UAV software modules145may be communicatively coupled with the UAV software module library controller135to provide a marketplace of UAV software modules, such as UAV software module103. The plurality of UAV software modules145may further store a selected UAV software module and the UAV software module library controller135may transfer the selected UAV software module library139.

In the example ofFIG.1, the memory146of the server140also includes communication instructions147that when executed by the processor142cause the processor142to transmit to the distributed computing network151, transaction messages that include control instructions150that are directed to the UAV102.

The distributed computing network151ofFIG.1includes a plurality of computers. An example computer158of the plurality of computers is shown and includes a processor152coupled to a memory154, and communication circuitry153. The communication circuitry153includes a transmitter and a receiver or a combination thereof (e.g., a transceiver). In a particular implementation, the communication circuitry153(or the processor152is configured to encrypt outgoing message(s) using a private key associated with the computer158and to decrypt incoming message(s) using a public key of a device (e.g., the UAV102, the user device120, or the server140that 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 UAV102. Thus, in this implementation, communication between the UAV102, the user device120, the server140, and the distributed computing network151are secure and trustworthy (e.g., authenticated).

The processor152is configured to execute instructions from the memory154to perform various operations. The memory154includes a blockchain manager155that includes computer program instructions for utilizing an unmanned aerial vehicle for emergency response. Specifically, the blockchain manager155includes computer program instructions that when executed by the processor152cause the processor152to receive a transaction message associated with a UAV. For example, the blockchain manager may receive transaction messages from the UAV102, the user device120, or the server140. The blockchain manager155also includes computer program instructions that when executed by the processor152cause the processor152to use the information within the transaction message to create a block of data; and store the created block of data in a blockchain data structure156associated with the UAV102.

The blockchain manager may also include instructions for accessing information regarding an unmanned aerial vehicle (UAV). For example, the blockchain manager155also includes computer program instructions that when executed by the processor152cause the processor to receive from a device, 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 device.

The UAV102, the user device120, and the server140are communicatively coupled via a network118. For example, the network118may include a satellite network or another type of network that enables wireless communication between the UAV102, the user device120, the server140, and the distributed computing network151. In an alternative implementation, the user device120and the server140communicate with the UAV102via separate networks (e.g., separate short-range networks.

In some situations, minimal (or no) manual control of the UAV102may be performed, and the UAV102may travel from the origin to the destination without incident. In some examples, a UAV software module may enable the minimal (or no) manual control operation of the UAV102. However, in some situations, one or more pilots may control the UAV102during a time period, such as to perform object avoidance or to compensate for an improper UAV operation. In some situations, the UAV102may 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 UAV102, etc. In some implementations, due to the unscheduled stop, the route information110may be updated (e.g., via a subsequent blockchain entry, as further described herein) by route instructions148executing on the UAV102, the user device120, or the server140). The updated route information may include updated waypoints, updated time periods, and updated pilot assignments.

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 system100, such as the UAV102, the user device120, the server140, and any other control devices or UAVs in the system100. In a particular implementation, each of the devices of the system100stores an instance of the blockchain data structure in a local memory of the respective device. In other implementations, each of the devices of the system100stores a portion of the shared blockchain data structure and each portion is replicated across multiple of the devices of the system100in 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 inFIG.1, the blockchain data structure156is stored in a distributed manner in the distributed computing network151.

The blockchain data structure156may include, among other things, route information associated with the UAV102, the telemetry data107, the control instructions130, and the route instructions148. For example, the route information110may be used to generate blocks of the blockchain data structure156. A sample blockchain data structure300is illustrated inFIGS.3A-3C. Each block of the blockchain data structure300includes block data and other data, such as availability data, route data, telemetry data, service information, incident reports, etc.

The block data of each block includes information that identifies the block (e.g., a block ID) and enables the devices of the system100to confirm the integrity of the blockchain data structure300. 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 SHA (256) 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, inFIG.3A, the blockchain data structure300includes an initial block (Bk_0)302and several subsequent blocks, including a block Bk_1304, a block Bk_2306, a block BK_3307, a block BK_4308, a block BK_5309, and a block Bk_n310. The initial block Bk_0302includes an initial set of availability data or route data, a timestamp, and a hash value (e.g., a block ID) based on the initial set of availability data or route data. As shown inFIG.1, the block Bk_1304also may include a hash value based on the other data of the block Bk_1304and the previous hash value from the initial block Bk_0302. Similarly, the block Bk_2306other data and a hash value based on the other data of the block Bk_2306and the previous hash value from the block Bk_1304. The block Bk_n310includes other data and a hash value based on the other data of the block Bk_n310and the hash value from the immediately prior block (e.g., a block Bk_n−1). This chained arrangement of hash values enables each block to be validated with respect to the entire blockchain; thus, tampering with or modifying values in any block of the blockchain is evident by calculating and verifying the hash value of the final block in the block chain. Accordingly, the blockchain acts as a tamper-evident public ledger of availability data and route data for the system100.

In addition to the block data, each block of the blockchain data structure300includes some information associated with a UAV (e.g., availability data, route information, telemetry data, incident reports, updated route information, maintenance records, UAV software modules in use, etc.). For example, the block Bk_1304includes 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_2306includes 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.

In the example ofFIG.3B, the block BK_3307includes telemetry data, such as a user ID (e.g., an identifier of the UAV that generated the telemetry data), a battery level of the UAV; a GPS position of the UAV; and an altimeter reading. As explained inFIG.1, a UAV may include many types of information within the telemetry data that is transmitted to the blockchain managers of the computers within the distributed computing network151. In a particular embodiment, the UAV is configured to periodically broadcast to the network118, a transaction message that includes the UAV's current telemetry data. The blockchain managers of the distributed computing network receive the transaction message containing the telemetry data and store the telemetry data within the blockchain data structure156.

FIG.3Balso depicts the block BK_4308as including updated route information having a start point, an endpoint, and a plurality of zone times and backups, along with a UAV ID. In a particular embodiment, the user device120or the server140may determine that the route of the UAV should be changed. For example, the control device or the server may detect that the route of the UAV conflicts with a route of another UAV or a developing weather pattern. As another example, the control device or the server many determine that the priority level or concerns of the user have changed and thus the route needs to be changed. In such instances, the control device or the server may transmit to the UAV, updated route information, control data, or navigation information. Transmitting the updated route information, control data, or navigation information to the UAV may include broadcasting a transaction message that includes the updated route information, control data, or navigation information to the network118. The blockchain manager155in the distributed computing network151, retrieves the transaction message from the network118and stores the information within the transaction message in the blockchain data structure156.

FIG.3Cdepicts the block BK_5309as including data describing an incident report. In the example ofFIG.3C, the incident report includes a user ID; a warning message; a GPS position; and an altimeter reading. In a particular embodiment, a UAV may transmit a transaction message that includes an incident report in response to the UAV experiencing an incident. For example, if during a flight mission, one of the UAV's propellers failed, a warning message describing the problem may be generated and transmitted as a transaction message.

FIG.3Calso depicts the block BK_n310that includes a maintenance record having a user ID of the service provider that serviced the UAV; flight hours that the UAV had flown when the service was performed; the service ID that indicates the type of service that was performed; and the location that the service was performed. UAV must be serviced periodically. When the UAV is serviced, the service provider may broadcast to the blockchain managers in the distributed computing network, a transaction message that includes service information, such as a maintenance record. Blockchain managers may receive the messages that include the maintenance record and store the information in the blockchain data structure. By storing the maintenance record in the blockchain data structure, a digital and immutable record or logbook of the UAV may be created. This type of record or logbook may be particularly useful to a regulatory agency and an owner/operator of the UAV.

Referring back toFIG.1, in a particular embodiment, the server140may include a UAV software module that is configured to receive telemetry information from an airborne UAV and track the UAV's progress and status. The server140is also configured to transmit in-flight commands to the UAV102. Operation of the user device120and the server140may be carried out by some combination of a human operator and autonomous software (e.g., artificial intelligence (AI) software that is able to perform some or all of the operational functions of a typical human operator pilot).

In a particular embodiment, the route instructions148cause the server140to 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 server140may receive air traffic data167over the network119from the air traffic data server160, weather data177from the weather data server170, regulatory data187from the regulatory data server180, and topographical data197from the topographic data server190. 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 server140over the network118or through direct communication with the server140. Additionally, communication with each data server may be enabled through the use of a UAV software module as described herein.

The air traffic data server160may include a processor162, memory164, and communication circuitry168. The memory164of the air traffic data server160may include operating instructions166that when executed by the processor162cause the processor to provide the air traffic data167about 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.

The weather data server170may include a processor172, memory174, and communication circuitry178. The memory174of the weather data server170may include operating instructions176that when executed by the processor172cause the processor to provide the weather data177that 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.

The regulatory data server180may include a processor182, memory184, and communication circuitry188. The memory184of the weather data server170may include operating instructions186that when executed by the processor182cause the processor to provide the regulatory data187that 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.

The topographic data server190may include a processor192, memory194, and communication circuitry198. The memory194of the topographic data server190may include operating instructions196that when executed by the processor192cause 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).

In some embodiments, the server140may aggregate data from the data servers160,170,180,190using 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 server140or may be pulled on-demand by the server140. 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.

Readers of skill in the art will realize that the server140can communicate with a UAV102using a variety of methods. For example, the UAV102may 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.

The network119may 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 network119may comprise one or more wired connections, wireless connections, or combinations thereof.

The arrangement of servers and other devices making up the exemplary system illustrated inFIG.1are for explanation, not for limitation. Data processing systems useful according to various embodiments of the present disclosure may include additional servers, routers, other devices, and peer-to-peer architectures, not shown inFIG.1, as will occur to those of skill in the art. Networks in such data processing systems may support many data communications protocols, including for example TCP (Transmission Control Protocol), IP (Internet Protocol), HTTP (HyperText Transfer Protocol), and others as will occur to those of skill in the art. Various embodiments of the present invention may be implemented on a variety of hardware platforms in addition to those illustrated inFIG.1.

FIG.2is a block diagram illustrating a particular implementation of a system200for UAV software module management. The system200includes a server202, a cloud storage222, a user device240, and a UAV260. Each of the devices are configured to be communicatively coupled to one another over at least one network224. While the system200is shown without a distributed computing network, topographic data server, regulatory data server, weather data server, and air traffic data server as described in relation toFIG.1, these elements may be present in the example system ofFIG.2.

The server202includes a processor206coupled to communication circuitry208and memory210. The memory210includes a plurality of UAV software modules212, a UAV software module library214, a UAV software module library controller216, a UAV software module controller218, and a UAV configuration recommender220. The plurality of UAV software modules212may include UAV software modules that are available to add to a UAV software module library214. In some examples, the plurality of UAV software modules212may include all UAV software modules available in a marketplace of UAV software modules. In some examples, the plurality of UAV software modules212may be stored remotely from the server202such as in cloud storage222. The UAV software module library214includes UAV software modules that are associated with a particular UAV or a particular user. For example, the UAV software module library214may include all UAV software modules that a user has purchased or otherwise acquired. The user may be able to add a UAV software module from the UAV software module library214to any UAV associated with the user. In another example, the UAV software module library214may be specific to a UAV, such that any user may use a UAV software module for the UAV software module library214with the UAV. In some examples, the UAV software module library may be stored remotely from the server202, such as in cloud storage222.

The UAV software module library controller216is configured to manage the UAV software module library214. For example, the server202may present to the user device240information representing the plurality of UAV software modules212. In some examples, the server202may present the information to the user device240by way of an Application Program Interface (API) exposed by the server202to send the information representing the plurality of UAV software modules212to the user device240, or may send a message (e.g., in the form of a transaction message) including the information representing a plurality of UAV software modules212to the user device240. The user device240receives the information representing a plurality of UAV software modules212from the server202and may interact with a user to receive a selection of a UAV software module from the plurality of UAV software modules212. The user device240may then send information representing the UAV software module selection to the server202and the server202receives the selection of the UAV software module. The server202may then add the selected UAV software module to the UAV software module library214. For example, the server202may copy the selected UAV software module from the plurality of UAV software modules212to the UAV software module library.

The UAV software module controller218is configured to manage the UAV software modules associated with a user or a UAV. For example, the server202may present to the user device240information representing the UAV software module library214. In some examples, the server202may present the information to the user device240by way of an Application Program Interface (API) exposed by the server202to send the information representing the UAV software module library214to the user device240, or may send a message (e.g., in the form of a transaction message) including the information representing the UAV software module library214to the user device240. The user device240receives the information representing the UAV software module library214from the server202and may interact with a user to receive a selection of a UAV software module from the UAV software module library214. The user device240may then send information representing the selection to the server202with the server202receiving the selection of the UAV software module. The server202may then add the selected UAV software module to the UAV260. For example, the server202may transfer the UAV software module to the UAV by way of network224.

The UAV configuration recommender220is configured to recommend UAV software modules and UAV hardware configurations based on at least one mission parameter. For example, the UAV configuration recommender220may cause the server202to receive from the user device240information representing at least one UAV mission parameter254. In some examples, the UAV configuration recommender220may receive the information representing the UAV mission parameter254by way of an Application Program Interface (API) exposed by the server202to the user device240, or may receive a message (e.g., in the form of a transaction message) including the information representing the UAV mission parameter254from the user device240. The UAV configuration recommender220may then cause the server202to determine at least one UAV software module from the UAV software module library214dependent on the at least one UAV mission parameter254. The UAV configuration recommender220may further cause the server202to determine at least one UAV hardware configuration dependent on the at least one UAV mission parameter254. The server202may then present the at least one UAV software module and the at least one UAV hardware configuration to the user device240. In some examples, the server202may present the at least one UAV software module and the at least one UAV hardware configuration to the user device240by way of an Application Program Interface (API) exposed by the server202to send the information representing at least one UAV software module and the at least UAV hardware configuration to the user device240, or may send a message (e.g., in the form of a transaction message) including the information representing the representing at least one UAV software module and the at least UAV hardware configuration to the user device240.

The server202may be a general computing system that is used by a network client, such as user device240, to process requests related to UAVs includes UAV pilots, UAV missions, and UAV mission history. In some examples, the server202may be incorporated in server140, or distributed computing network151ofFIG.1.

The user device240includes a processor242coupled to communication circuitry244and memory246. The memory246includes operating instructions248which are configured to provide an interface for interactions between a user and the server202. The operating instructions may further cause the user device240to provide information presented by the server202to a user such as information representing the plurality of UAV software modules212and information representing the UAV software modules library214. The operating instructions248may further cause the user device240to receive a selection from a user and provide information representing the selection to the server. Additionally, the operating instructions may receive information such as UAV software module criterion250, payment information252, and UAV mission parameters254. For example, a user may interact with a user interface of the user device240to input a selection of UAV software module which may then be received by the user device240and provided to server202over network424. In another example, a user may interact with the user interface of the user device240to input a UAV software module criterion250for filtering UAV software modules. In another example, a user may interact with the user interface of the user device240to input payment information252which may then be received by the user device240and provided to the server202. In yet another example, the, a user may interact with the user interface of the user device240to input UAV mission parameters which may then be received by the user device240and provided to the server202over network424.

The user device240can be any computing system configured to communicate with the server202to provide the user selection of a UAV software module, UAV software module criterion250, payment information252, or UAV mission parameters254to the server202. Additionally, the user device240may be configured to display information presented to the user device240from the server such as information representing the plurality of UAV software modules, the UAV software module library214, and the determined at least one software module and determined UAV hardware configuration. In some examples, the user device240may be a dedicated user device, or in other examples, the user device240can be a general-purpose computer executing a program for interaction with the server202.

The UAV260includes a processor262coupled to communication circuitry264and the UAV memory266. The UAV memory266includes operating instructions268which are configured to operate the UAV including communicating with the user device240and server202to receive flight controls. In addition, the UAV memory266includes at least one UAV software module270that enables a functionality of the UAV260. The functionality may be independent of any additional hardware. For example, the UAV software module270may enable enhanced camera operation or enhanced automated flight operations. In other examples, the UAV software module270may enable additional hardware274. For example, the UAV may have additional hardware274such as ground penetrating radar. The UAV software module270may provide instructions that cause the processor262and communication circuitry264to utilize the additional hardware274. Thus, the additional hardware274may be inoperable without the UAV software module270.

The following table gives examples of UAV software modules that may be used in combination with the described UAV software module management systems.

Object DetectionProvides the use of an existing sensor oradditional hardware to detect objects.Object TrackingProvides the use of existing sensor oradditional hardware to track objects.Autonomous FlightProvides the use of existing or additionalhardware to perform autonomous flight.ReconnaissanceProvides the use of existing or additionalhardware to observe a location.MappingProvides the use of existing or additionalhardware to map a location.Fire SuppressionProvides the use of an existing or additionalhardware to suppress fires.Leak DetectionProvides the use of existing or additionalhardware to detect leaks from objects.Object CountingProvides the use of existing or additionalhardware to count objects.UAV addons/featuresProvides the use of additional hardware that isnot otherwise operable with the operatinginstructions of the UAV.

For further explanation,FIG.4sets forth a flow chart illustrating an exemplary method for UAV software module library management in accordance with at least one embodiment of the present disclosure. The method ofFIG.4includes a computing system501of a UAV module management system such as the user device120ofFIG.1or server202ofFIG.2. The method includes presenting502, by the computing system501, information representing a plurality of UAV software modules505; receiving504, by the computing system501, information representing a UAV software module selection507from the plurality of UAV software modules505; and adding506the UAV software module identified by the UAV software module selection507to a UAV software module library509.

The computing system501may present502the information representing a plurality of UAV software modules505using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the UAV software module library controller135, may cause the user device120to display or otherwise present information representing the plurality of UAV software modules505to a user. In some examples, the user device120may display a list, a detailed list, icons, or other visual representation of the plurality of UAV software modules505to the user. In other examples, the plurality of UAV software modules505may be presented to a user using audio descriptions of each UAV software module.

Referring toFIG.2, in another example, the UAV software module library controller216may cause the server202to present information representing the plurality of UAV software modules505to a user device240. The user device240may then display or otherwise present the information representing the plurality of UAV software modules505to a user. The server202may present the information representing the plurality of UAV software modules505to the user device by way of a communicative coupling between the server202and the user device240, such as network424.

The computing system501may receive information representing a UAV software module selection507from the plurality of UAV software modules505using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the UAV software module library controller135may cause the user device120to receive a selection of the UAV software module from the user interacting with the user device120. The UAV software module selection507may be received by the user device120using common user interfaces, such as a touch input, keyboard input, voice recognition, mouse click, or other computer interaction.

In another example, referring toFIG.2, the UAV software module library controller216may cause the server202to receive information indicating a UAV software module selection from the user device240. The user device240may receive a UAV software module selection from a user interacting with the user device240using common user interfaces, such as a touch input, keyboard input, voice recognition, mouse click, or other computer interaction. The user device240may then send information representing the UAV software module selection507over network224for receipt by the server202.

The computing system501may add506a UAV software module identified by the information representing a UAV software module selection507to a UAV software module library509using the devices described previously. In one example, referring toFIG.1, the UAV software module library controller135may copy the UAV software module identified by the UAV software module selection507from the plurality of UAV software modules145to the UAV software module library139. With reference toFIG.2, in another example, the UAV software module library controller216may copy the UAV software module identified by the UAV software module selection507from the plurality of UAV software modules212to the UAV software module library214.

For further explanation,FIG.5sets forth a flow chart illustrating an exemplary method for UAV software module library management in accordance with at least one embodiment of the present disclosure. Like the exemplary method ofFIG.4, the exemplary method ofFIG.5also includes presenting502, by the computing system501, information representing a plurality of UAV software modules505; receiving504, by the computing system501, information representing a UAV software module selection507from the plurality of UAV software modules505; and adding506the UAV software module identified by the UAV software module selection507to a UAV software module library509.

The exemplary method ofFIG.5differs from the method ofFIG.4in that the method ofFIG.5further comprises filtering602, by the computing system501, the plurality of UAV software modules505according to at least one filtering criterion601and presenting604, by the computing system501, information representing the filtered plurality of UAV software modules. In some examples, the filtering602the plurality of UAV software modules505according to at least one criterion may be carried out by the user device120ofFIG.1or the server of204ofFIG.2. For example, a user may provide a filtering criterion601to the user device120by way of a user interface. The UAV software module library controller135may then filter the plurality of UAV software modules505and cause the user device120to present the filtered plurality of UAV software modules to the user. In another example, a user may provide a filtering criterion to user device240which may then communicate with server202by way of network224to deliver the filtering criterion601to the server202. The server202may then filter the plurality of UAV software modules and present the filtered plurality of UAV software modules to the user device240.

The filtering criterion601is a criterion that enables a user to narrow the plurality of UAV software modules. The filtering criterion601can include criteria such as an identification of a UAV model, an identification of a desired UAV software module, an identification of a UAV mission objective, pricing information for at least one UAV software module of the plurality of UAV software modules, or a hardware specification of the UAV. The following table provides an example list of criteria suitable for use in filtering the list and how the filtering may be implemented.

CriteriaImplementationUAV ModelFilter the plurality of UAV software modules to includeUAV software modules compatible with the UAV model.UAV SoftwareFilter the plurality of UAV software modules to includeModuleUAV software modules related to a specific softwaremodule.UAV SoftwareFilter the plurality of UAV software modules to includeModule PriceUAV software modules within a specific price range.UAV HardwareFilter the plurality of UAV software modules to includeSpecificationUAV software modules compatible with specifichardware.UAV MissionFilter the plurality of UAV software modules to includeObjectivesoftware modules related to a particular missionobjective.

For further explanation,FIG.6sets forth a flow chart illustrating an exemplary method for UAV software module library management in accordance with at least one embodiment of the present disclosure. Like the exemplary method ofFIG.4, the exemplary method ofFIG.6also includes presenting502, by the computing system501, information representing a plurality of UAV software modules505; receiving504, by the computing system501, information representing a UAV software module selection507from the plurality of UAV software modules505; and adding the UAV software module identified by the UAV software module selection507to a UAV software module library509.

The exemplary method ofFIG.6differs from the method ofFIG.4in that the method ofFIG.6further comprises receiving702, by the computing system501, payment information701prior to adding the UAV software module to the UAV software module library. In some examples, the receipt of payment information701may be carried out by the user device120ofFIG.1or the server of204ofFIG.2. For example, the UAV software module library controller135of user device120may receive payment information701from a user to authorize the purchase of a UAV software module prior to the UAV software module library controller135adding the UAV software module to the UAV software module library. In another example, the UAV software module library controller216of server202may receive payment information701from a user interacting with a remote device such as user device240prior to adding the UAV software module to the UAV software module library. The payment information701may include information indicating that a payment has been authorized, such as a token or other method of confirming payment.

For further explanation,FIG.7sets forth a flow chart illustrating an exemplary method for UAV software module management in accordance with at least one embodiment of the present disclosure. The method ofFIG.7includes a computing system801of a UAV module management system such as the user device120ofFIG.1or server202ofFIG.2. The method includes presenting802, by the computing system801, information representing a plurality of UAV software modules of a UAV software module library805; receiving804, by the computing system801, information representing a UAV software module selection807from the plurality of UAV software modules of the UAV software module library805; and transferring the UAV software module identified by the UAV software module selection807to a UAV memory.

The computing system801may present802the information representing a plurality of UAV software modules of a UAV software module library805using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the UAV software module controller136, may cause the user device120to display or otherwise present information representing a plurality of UAV software modules of the UAV software module library139to a user. In some examples, the user device120may display a list, a detailed list, icons, or other visual representation of the plurality of UAV software modules of the UAV software module library139to the user. In other examples, the plurality of UAV software modules of the UAV software module library139may be presented to a user using audio descriptions of each UAV software module of the plurality of UAV software modules.

Referring toFIG.2, in another example the UAV software module library controller216may cause the server202to present information representing the plurality of UAV software modules212to a user device240. The user device240may then display or otherwise present the information representing the plurality of UAV software modules212to a user. The server202may present the information representing the plurality of UAV software modules212to the user device240by way of a communicative coupling between the server202and the user device240, such as network224.

The computing system801may receive804information representing a UAV software module selection807from the plurality of UAV software modules of the UAV software module library805using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the UAV software module library controller135may cause the user device120to receive a selection of the UAV software module from the user interacting with the user device120. The UAV software module selection807may be received by the user device120using common user interfaces, such as a touch input, keyboard input, voice recognition, mouse click, or other computer interaction.

In another example, referring toFIG.2, the UAV software module library controller216may cause the server202to receive information indicating a UAV software module selection from the user device240. The user device240may receive a UAV software module selection from a user interacting with the user device240using common user interfaces, such as a touch input, keyboard input, voice recognition, mouse click, or other computer interaction. The user device240may then send information representing the UAV software module selection507over network224for receipt by the server202.

The computing system501may transfer806a UAV software module indicated by the information representing a UAV software module selection807to a UAV memory809using the devices described previously. In one example, referring toFIG.1, the UAV software module library controller135may copy a UAV software module103identified by the UAV software module selection807from the UAV software module library139to the memory106of the UAV102. With reference toFIG.2, in another example, the UAV software module library controller216may copy the UAV software module270identified by the UAV software module selection807from the UAV software module library214to the UAV memory266.

For further explanation,FIG.8sets forth a flow chart illustrating an exemplary method for UAV software module management in accordance with at least one embodiment of the present disclosure. Like the exemplary method ofFIG.7, the exemplary method ofFIG.8also includes presenting802, by the computing system801, information representing a plurality of UAV software modules of a UAV software module library805; receiving804, by the computing system801, information representing a UAV software module selection807from the plurality of UAV modules of the UAV software module library805; and transferring the UAV software module identified by the UAV software module selection807to a UAV memory.

The exemplary method ofFIG.8differs from the method ofFIG.7in that the method ofFIG.8further comprises filtering808, by the computing system801, the plurality of UAV software modules of the UAV software module library805according to at least one filtering criterion811and presenting810, by the computing system801, information representing the filtered plurality of UAV software modules. In some examples, the filtering808of the plurality of UAV software modules of the UAV software module library805according to at least one criterion may be carried out by the user device120ofFIG.1or the server of204ofFIG.2. For example, a user may provide a filtering criterion811to the user device120by way of a user interface. The UAV software module controller136may then filter the plurality of UAV software modules of the UAV software module library139and cause the user device120to present the filtered plurality of UAV software modules to the user. In another example, a user may provide a filtering criterion to user device240which may then communicate with server202by way of network224to deliver the filtering criterion811to the server202. The server202may then filter the plurality of UAV software modules of the UAV software module library214and present the filtered plurality of UAV software modules to the user device240. In some examples, the filtering criterion may be one of the filtering criteria described previously.

For further explanation,FIG.9sets forth a flow chart illustrating an exemplary method for UAV management in accordance with at least one embodiment of the present disclosure. The method ofFIG.9includes a computing system901of a UAV module management system such as the user device120ofFIG.1or server202ofFIG.2. The method includes receiving902, by the computing system901, at least one UAV mission parameter905; determining904, by the computing system901, at least one UAV software module903dependent on the at least one UAV mission parameter905; determining906, by the computing system901, at least one UAV hardware configuration907dependent on the at least one UAV mission parameter905; and presenting908, by the computing system901, the at least one UAV software module903and the at least one UAV hardware configuration907.

The computing system901may receive the at least one UAV mission parameter using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the UAV configuration recommender133may cause the user device120to receive a UAV mission parameter905. The UAV mission parameter905may be received from a user interacting with the user device120using common user interfaces using common user interfaces, such as a touch input, keyboard input, voice recognition, mouse click, or other computer interaction. For example, the user interface may present a list of possible mission types to a user and the user may select a mission type having associate mission parameters. Or a user may enter information describing their mission including mission parameters.

In another example, referring toFIG.2, the UAV configuration recommender may cause the server202to receive at least one UAV mission parameter from the user device240. The user device240may receive a UAV mission parameter905as described previously and send the mission parameter to the server202by way of network224. In other examples, the UAV mission parameter may be received from a device other than the user device240. For example, a user may select a mission type and the UAV mission parameter905associated with the UAV mission may be retrieved from a separate source.

UAV mission parameters are parameters that describe a UAV mission and may include parameters such as range, flight duration, object detection, object tracking, object counting, and responses to object detection. For example, a mission such as counting livestock may include parameters such as object counting, range, and flight duration.

The computing system901may determine904the at least one UAV software module dependent on the at least one UAV mission parameter905using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the plurality of UAV software modules145or each UAV software modules of the UAV software module library139may have metadata associated with them that identify related mission types or contain other information about the respective UAV software module. The UAV configuration recommender133may then determine at least one UAV software module that matches or is related to the at least one UAV mission parameter905based on the metadata associated with each of the UAV software modules.

In another example, referring toFIG.2, the plurality of UAV software modules212or each UAV software modules of the UAV software module library214may have metadata associated with the UAV software modules that identify related mission types or contain other information about each respective UAV software module. The UAV configuration recommender220may then determine at least one UAV software module that matches or is related to the at least one UAV mission parameter905based on the metadata associated with each of the UAV software modules.

The computing system901may determine906the at least one UAV hardware configuration907dependent on the at least one UAV mission parameter905using the devices described in relation toFIG.1andFIG.2. For example, referring toFIG.1, the user device120, the server140, or other data storage may contain a datastore of UAV hardware. The datastore may further store metadata including UAV hardware information such as related UAV hardware, related UAV software modules, UAV hardware capabilities, related UAV mission types, and other relevant hardware information. The UAV configuration recommender133may then determine at least one UAV hardware configuration that matches or is related to the at least one UAV mission parameter905based on the metadata associated with the UAV hardware. Furthermore, the UAV configuration recommender133may determine a UAV hardware configuration based on the UAV software modules determined previously.

In another example, referring toFIG.2, the server202, cloud storage222, or other data storage may contain a datastore of UAV hardware. The datastore may further store metadata including UAV hardware information such as related UAV hardware, related UAV software modules, UAV hardware capabilities, related UAV mission types, and other relevant hardware information. The UAV configuration recommender220may then determine at least one UAV hardware configuration that matches or is related to the at least one UAV mission parameter905based on the metadata associated with the UAV hardware. Furthermore, the UAV configuration recommender133may determine a UAV hardware configuration907based on the UAV software modules determined previously. Examples of hardware configurations include, but are not limited to a UAV type, camera type, a sensor type, a payload capacity, a range, a propulsion type, a controller type, and a minimum performance specification.

Using the previous example of a livestock counting mission with UAV mission parameters comprising object counting, range, and flight duration, the computing system901may determine at least one software module that provides object counting and at least one hardware configuration that enables the object counting and has performance characteristics that meet or exceed the identified range and flight duration. For example, the computing system may recommend UAVs that have a camera or sensor type, or that may have a camera or sensor type added to the UAV to enable the object, that can fly for at least the identified range, and stay aloft for at least the identified flight duration.

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.

Advantages and features of the present disclosure can be further described by the following statements:

1. A method for unmanned aerial vehicle (UAV) software module library management, comprising: presenting, by a computing system, information representing a plurality of UAV software modules, wherein each of the plurality of UAV software module enables at least one functionality of a UAV; receiving, from a user interacting with the computing system, information representing a UAV software module selection from the plurality of UAV software modules; and adding, by the computing system, a UAV software module identified by the information representing a UAV software module selection to a UAV software module library.

2. The method of statement 1, further comprising: filtering, by the computing system, the plurality of UAV software modules according to at least one criterion to obtain a filtered plurality of UAV software modules; and presenting, by the computing system, information representing the filtered plurality of UAV software modules.

3. The method of any of statements 1-2, wherein the at least one criterion comprises at least one of an identification of a UAV model, an identification of a desired UAV software module, an identification of a UAV mission objective, pricing information for at least one UAV software module of the plurality of UAV software modules, or a hardware specification of the UAV.

4. The method of any of statements 1-3, wherein the at least one functionality of the UAV comprises at least one of object detection, automated flight patterns, object tracking, object counting, or responses to object detection.

5. The method of any of statements 1-4, further comprising receiving payment information prior to adding the UAV software module to the UAV software module library.

6. The method of any of statements 1-5, wherein the UAV software module library is stored at the computing system.

7. The method of any of statements 1-6, wherein the UAV software module library is stored remotely from the computing system.

8. The method of any of statements 1-7, wherein the UAV software module library corresponds to a particular UAV.

9. The method of any of statements 1-8, wherein the UAV software module library corresponds to a particular user.

10. A method for unmanned aerial vehicle (UAV) software module management, the method including none or any of the statements 1-9 and the method comprising: presenting, by a computing system, information representing a plurality of UAV software modules of a UAV software module library, wherein the UAV software module library comprises at least one UAV software module that enables at least one functionality of a UAV; receiving, from a user interacting with the computing system, information representing a UAV software module selection from the plurality of UAV software modules of the UAV software module library; and transferring, by the computing system, a UAV software module indicated by the UAV software module selection to a UAV memory.

11. The method of any of the statements 1-10, further comprising: filtering, by the computing system, the UAV software module library according to at least one criterion to obtain a filtered plurality of UAV software modules; and presenting, by the computing system, information representing the filtered plurality of UAV software modules.

12. The method of any of the statements 1-11, wherein the at least one criterion comprises at least one of an identification of a UAV model, an identification of a desired UAV software module, an identification of a UAV mission objective, pricing information for the at least one UAV software module, or a hardware specification of the UAV.

13. The method of any of the statements 1-12, wherein the at least one functionality of the UAV comprises at least one of object detection, automated flight patterns, object tracking, object counting, or responses to object detection.

14. A method for unmanned aerial vehicle (UAV) recommendations, the method including none or any of the statements 1-13 and the method comprising: receiving, by a computing system, at least one UAV mission parameter; determining, by the computing system, at least one UAV software module dependent on the at least one UAV mission parameter, wherein the UAV software module enables at least one UAV functionality; determining, by the computing system, at least one UAV hardware configuration dependent on the at least one UAV mission parameter; and presenting, by the computing system, the at least one UAV software module and the at least one UAV hardware configuration.

15. The method of any of the statements 1-14, wherein the at least one UAV mission parameter includes at least one of range, object detection, object tracking, object counting, and responses to object detection.

16. The method of any of the statements 1-15, wherein the at least one UAV functionality comprises at least one of object detection, automated flight patterns, object tracking, object counting, or responses to object detection.

17. The method of any of the statements 1-16, wherein the at least one UAV hardware configuration comprises at least one of a camera type, a sensor type, a payload capacity, a range, a propulsion type, a controller type, and a minimum performance specification.