Patent Description:
Fleets of multiple unmanned aerial vehicles, or UAVs, are being increasingly employed for many purposes, including but not limited to data collection and delivery of packages. While UAVs may be capable of fully autonomous operation to traverse paths or accomplish other types of missions, oversight of operation of even fully autonomous UAVs is often provided by a human operator. The human operator may monitor information sources that are not considered by sensors of the UAVs, including but not limited to weather reports and emergency incident reports, and may transmit commands to a UAV to deviate from a planned mission based on that information.

As fleets of UAVs grow larger, each human operator may be responsible for oversight of a number of UAVs that is unmanageable using current technologies that only allow transmission of commands to a single UAV at a time. What is desired are technologies that allow a human operator to manage multiple UAVs at once while remaining flexible enough to allow the human operator to transmit commands to fewer than all UAVs for which they are responsible. Reference is made to <CIT>, which presents apparatus for operating unmanned drones. Further reference is made to <CIT>, which presents systems and methods for controlling unmanned aerial vehicles.

In some embodiments, a computer-readable medium having logic stored thereon is provided. The logic, in response to execution by one or more processors of a fleet management computing system, causes the fleet management computing system to perform actions for managing a fleet of unmanned aerial vehicles (UAVs), the actions including receiving, by the fleet management computing system, telemetry information from a plurality of UAVs; generating, by the fleet management computing system, a map interface having a plurality of UAV icons based on the telemetry information; receiving, by the fleet management computing system, a selection of an initial group of UAV icons via the map interface, where the initial group of UAV icons includes two or more UAV icons; receiving, by the fleet management computing system, a de-selection of one or more UAV icons from the initial group of UAV icons to create a final selected group of UAV icons; and transmitting, by the fleet management computing system, a command to UAVs associated with the UAV icons of the final selected group of UAV icons.

In some embodiments, a computer-implemented method of managing a fleet of unmanned aerial vehicles (UAVs) is provided. A fleet management computing system receives telemetry information from a plurality of UAVs. The fleet management computing system generates a map interface having a plurality of UAV icons based on the telemetry information. The fleet management computing system receives a selection of an initial group of UAV icons via the map interface, wherein the initial group of UAV icons includes two or more UAV icons. The fleet management computing system receives a de-selection of one or more UAV icons from the initial group of UAV icons to create a final selected group of UAV icons. The fleet management computing system transmits a command to UAVs associated with the UAV icons of the final selected group of UAV icons.

In some embodiments, a system that includes a plurality of unmanned aerial vehicles (UAVs) and a fleet management computing system is provided. The fleet management computing system is communicatively coupled to the plurality of UAVs and includes a non-transitory computer-readable medium having logic stored thereon. The logic, in response to execution by one or more processors of the fleet management computing system, causes the fleet management computing system to perform actions including receiving, by the fleet management computing system, telemetry information from the plurality of UAVs, generating, by the fleet management computing system, a map interface having a plurality of UAV icons based on the telemetry information, receiving, by the fleet management computing system, a selection of an initial group of UAV icons via the map interface, where the initial group of UAV icons includes two or more UAV icons, receiving, by the fleet management computing system, a de-selection of one or more UAV icons from the initial group of UAV icons to create a final selected group of UAV icons, transmitting, by the fleet management computing system, a command to UAVs associated with the UAV icons of the final selected group of UAV icons.

Non-limiting and non-exhaustive embodiments of the invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified. Not all instances of an element are necessarily labeled so as not to clutter the drawings where appropriate. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles being described.

In embodiments of the present disclosure, a fleet management computing system provides a map-based user interface that can be used by an operator to flexibly select UAVs to which commands are transmitted. In the map interface generated by the fleet management computing system, an operator may select UAVs in groups, and may then remove individual UAVs from the selection to precisely tailor the UAVs to receive the command. In some embodiments, the fleet management computing system also monitors acknowledgements from the UAVs, and automatically updates the map interface to indicate UAVs to receive a retried transmission of the command.

<FIG> is a block diagram that illustrates aspects of a non-limiting example embodiment of a fleet management computing system according to various aspects of the present disclosure. The illustrated fleet management computing system <NUM> may be implemented by any computing device or collection of computing devices, including but not limited to a desktop computing device, a laptop computing device, a mobile computing device, a server computing device, a computing device of a cloud computing system, and/or combinations thereof. In general, the fleet management computing system <NUM> is configured to receive telemetry information from a plurality of UAVs, and to generate a map interface that allows a user to select groups of UAVs to which commands are sent.

As shown, the fleet management computing system <NUM> includes one or more processors <NUM>, one or more communication interfaces <NUM>, a command record data store <NUM>, and a computer-readable medium <NUM>.

In some embodiments, the processors <NUM> may include any suitable type of general-purpose computer processor. In some embodiments, the processors <NUM> may include one or more special-purpose computer processors or AI accelerators optimized for specific computing tasks, including but not limited to graphical processing units (GPUs), vision processing units (VPTs), and tensor processing units (TPUs).

In some embodiments, the communication interfaces <NUM> include one or more hardware and or software interfaces suitable for providing communication links between the fleet management computing system <NUM> and the plurality of UAVs. The communication interfaces <NUM> may support one or more wired communication technologies (including but not limited to Ethernet, FireWire, and USB), one or more wireless communication technologies (including but not limited to Wi-Fi, WiMAX, Bluetooth, <NUM>, <NUM>, <NUM>, <NUM>, and LTE), and/or combinations thereof.

As shown, the computer-readable medium <NUM> has stored thereon logic that, in response to execution by the one or more processors <NUM>, cause the fleet management computing system <NUM> to provide a telemetry collection engine <NUM>, a user interface engine <NUM>, and a command transmission engine <NUM>.

As used herein, "computer-readable medium" refers to a removable or nonremovable device that implements any technology capable of storing information in a volatile or non-volatile manner to be read by a processor of a computing device, including but not limited to: a hard drive; a flash memory; a solid state drive; random-access memory (RAM); read-only memory (ROM); a CD-ROM, a DVD, or other disk storage; a magnetic cassette; a magnetic tape; and a magnetic disk storage.

In some embodiments, the telemetry collection engine <NUM> is configured to receive telemetry information from the plurality of UAVs while the plurality of UAVs are in flight, and to provide the telemetry information to the user interface engine <NUM>. In some embodiments, the user interface engine <NUM> is configured to use the telemetry information, mission specifications, airspace reservations, and/or other information to generate a map interface from which UAVs may be selected by a user. In some embodiments, the command transmission engine <NUM> is configured to transmit a command to UAVs selected within the map interface. The command transmission engine <NUM> may also be configured to receive acknowledgements of transmitted commands from the UAVs, to compare the acknowledgements to records of the transmitted commands stored in the command record data store <NUM>, and to provide the user interface engine <NUM> with information to allow the user interface engine <NUM> to generate an interface through which failed commands may be retried. Further description of the configuration of each of these components is provided below.

As used herein, "engine" refers to logic embodied in hardware or software instructions, which can be written in one or more programming languages, including but not limited to C, C++, C#, COBOL, JAVA™, PHP, Perl, HTML, CSS, TypeScript, JavaScript, VBScript, ASPX, Go, and Python. An engine may be compiled into executable programs or written in interpreted programming languages. Software engines may be callable from other engines or from themselves. Generally, the engines described herein refer to logical modules that can be merged with other engines, or can be divided into sub-engines. The engines can be implemented by logic stored in any type of computer-readable medium or computer storage device and be stored on and executed by one or more general purpose computers, thus creating a special purpose computer configured to provide the engine or the functionality thereof. The engines can be implemented by logic programmed into an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or another hardware device.

As used herein, "data store" refers to any suitable device configured to store data for access by a computing device. One example of a data store is a highly reliable, high-speed relational database management system (DBMS) executing on one or more computing devices and accessible over a high-speed network. Another example of a data store is a key-value store. However, any other suitable storage technique and/or device capable of quickly and reliably providing the stored data in response to queries may be used, and the computing device may be accessible locally instead of over a network, or may be provided as a cloud-based service. A data store may also include data stored in an organized manner on a computer-readable storage medium, such as a hard disk drive, a flash memory, RAM, ROM, or any other type of computer-readable storage medium. One of ordinary skill in the art will recognize that separate data stores described herein may be combined into a single data store, and/or a single data store described herein may be separated into multiple data stores, without departing from the scope of the present disclosure.

<FIG> and <FIG> illustrate an aerial vehicle or UAV <NUM>, in accordance with an embodiment of the present disclosure. The illustrated embodiment of UAV <NUM> is a vertical takeoff and landing (VTOL) unmanned aerial vehicle (UAV) that includes separate propulsion units <NUM> and propulsion units <NUM> for providing horizontal and vertical propulsion, respectively. UAV <NUM> is a fixed-wing aerial vehicle, which as the name implies, has a wing assembly <NUM> that can generate lift based on the wing shape and the vehicle's forward airspeed when propelled horizontally by propulsion units <NUM>. <FIG> is a perspective top view illustration of UAV <NUM> while <FIG> is a bottom side plan view illustration of UAV <NUM>. One of ordinary skill in the art will recognize that UAV <NUM> is a non-limiting example of a UAV that may be used with embodiments of the present disclosure, and that in some embodiments, a fleet of UAVs managed by the fleet management computing system may include other types of UAVs in addition to or instead of the UAV <NUM> illustrated in <FIG>, <FIG>, and <FIG>.

The illustrated embodiment of UAV <NUM> includes a fuselage <NUM>. In one embodiment, fuselage <NUM> is modular and includes a battery module, an avionics module, and a mission payload module. These modules are detachable from each other and mechanically securable to each other to contiguously form at least a portion of the fuselage <NUM> or UAV main body.

The battery module includes a cavity for housing one or more batteries for powering UAV <NUM>. The avionics module houses flight control circuitry of UAV <NUM>, which may include a processor and memory, communication electronics and antennas (e.g., cellular transceiver, Wi-Fi transceiver, etc.), and various sensors (e.g., global positioning sensor, an inertial measurement unit (IMU), a magnetic compass, etc.). The mission payload module houses equipment associated with a mission of UAV <NUM>. For example, the mission payload module may include a payload actuator for holding and releasing an externally attached payload. In another embodiment, the mission payload module may include a camera/sensor equipment holder for carrying camera/sensor equipment (e.g., camera, lenses, radar, LIDAR, pollution monitoring sensors, weather monitoring sensors, etc.). Other components that may be carried by some embodiments of the UAV <NUM> are illustrated in <FIG>.

The illustrated embodiment of UAV <NUM> further includes horizontal propulsion units <NUM> positioned on wing assembly <NUM>, which can each include a motor, shaft, motor mount, and propeller, for propelling UAV <NUM>. The illustrated embodiment of UAV <NUM> includes two boom assemblies <NUM> that secure to wing assembly <NUM>.

The illustrated embodiments of boom assemblies <NUM> each include a boom housing <NUM> in which a boom is disposed, vertical propulsion units <NUM>, printed circuit boards <NUM>, and stabilizers <NUM>. Vertical propulsion units <NUM> can each include a motor, shaft, motor mounts, and propeller, for providing vertical propulsion. Vertical propulsion units <NUM> may be used during a hover mode where UAV <NUM> is descending (e.g., to a delivery location) or ascending (e.g., following a delivery). Stabilizers <NUM> (or fins) may be included with UAV <NUM> to stabilize the UAV's yaw (left or right turns) during flight. In some embodiments, UAV <NUM> may be configured to function as a glider. To do so, UAV <NUM> may power off its propulsion units and glide for a period of time.

During flight, UAV <NUM> may control the direction and/or speed of its movement by controlling its pitch, roll, yaw, and/or altitude. For example, the stabilizers <NUM> may include one or more rudders <NUM> for controlling the UAV's yaw, and wing assembly <NUM> may include elevators for controlling the UAV's pitch and/or ailerons <NUM> for controlling the UAV's roll. As another example, increasing or decreasing the speed of all the propellers simultaneously can result in UAV <NUM> increasing or decreasing its altitude, respectively. The UAV <NUM> may also include components for sensing the environment around the UAV <NUM>, including but not limited to audio sensor <NUM> and audio sensor <NUM>. Further examples of sensor devices are illustrated in <FIG> and described below.

Many variations on the illustrated fixed-wing aerial vehicle are possible. For instance, aerial vehicles with more wings (e.g., an "x-wing" configuration with four wings), are also possible. Although <FIG> and <FIG> illustrate one wing assembly <NUM>, two boom assemblies <NUM>, two horizontal propulsion units <NUM>, and six vertical propulsion units <NUM> per boom assembly <NUM>, it should be appreciated that other variants of UAV <NUM> may be implemented with more or fewer of these components.

It should be understood that references herein to an "unmanned" aerial vehicle or UAV can apply equally to autonomous and semi-autonomous aerial vehicles. In a fully autonomous implementation, all functionality of the aerial vehicle is automated; e.g., pre-programmed or controlled via real-time computer functionality that responds to input from various sensors and/or pre-determined information. In a semi-autonomous implementation, some functions of an aerial vehicle may be controlled by a human operator, while other functions are carried out autonomously. Further, in some embodiments, a UAV may be configured to allow a remote operator to take over functions that can otherwise be controlled autonomously by the UAV. Yet further, a given type of function may be controlled remotely at one level of abstraction and performed autonomously at another level of abstraction. For example, a remote operator may control high level navigation decisions for a UAV, such as specifying that the UAV should travel from one location to another (e.g., from a warehouse in a suburban area to a delivery address in a nearby city), while the UAV's navigation system autonomously controls more fine-grained navigation decisions, such as the specific route to take between the two locations, specific flight controls to achieve the route and avoid obstacles while navigating the route, and so on.

<FIG> is a block diagram that illustrates additional aspects of a UAV according to various aspects of the present disclosure. As shown, the UAV <NUM> includes a communication interface <NUM>, one or more sensor device(s) <NUM>, a power supply <NUM>, one or more processor(s) <NUM>, one or more propulsion device(s) <NUM>, and a computer-readable medium <NUM>.

In some embodiments, the communication interface <NUM> includes hardware and software to enable any suitable communication technology for communicating with the fleet management computing system <NUM>. In some embodiments, the communication interface <NUM> includes multiple communication interfaces, each for use in appropriate circumstances. For example, the communication interface <NUM> may include a long-range wireless interface such as a <NUM> or LTE interface, or any other type of long-range wireless interface (e.g., <NUM>, <NUM>, <NUM>, or WiMAX), to be used to communicate with the fleet management computing system <NUM> while traversing a route. The communication interface <NUM> may also include a medium-range wireless interface such as a Wi-Fi interface to be used when the UAV <NUM> is at an area near a start location or an endpoint where Wi-Fi coverage is available. The communication interface <NUM> may also include a short-range wireless interface such as a Bluetooth interface to be used when the UAV <NUM> is in a maintenance location or is otherwise stationary and waiting to be assigned a route. The communication interface <NUM> may also include a wired interface, such as an Ethernet interface or a USB interface, which may also be used when the UAV <NUM> is in a maintenance location or is otherwise stationary and waiting to be assigned a route.

In some embodiments, the sensor device(s) <NUM> are configured to detect states related to various components of the UAV <NUM>, and to transmit signals representing those states to other components of the UAV <NUM>. Some non-limiting examples of sensor device(s) <NUM> that may monitor components of the UAV <NUM> itself include a battery state sensor and a propulsion device health sensor. Some non-limiting examples of sensor device(s) <NUM> that may monitor the UAV <NUM> with respect to the environment include a positioning system sensor (including but not limited to a GPS sensor), an attitude sensor, an airspeed sensor, a compass, and an altitude sensor.

In some embodiments, the power supply <NUM> may be any suitable device or system for storing and/or generating power. Some non-limiting examples of a power supply <NUM> include one or more batteries, one or more solar panels, a fuel tank, and combinations thereof. In some embodiments, the propulsion device(s) <NUM> may include any suitable devices for causing the UAV <NUM> to travel along a route, and may include devices such as, but not limited to, one or more motors, one or more propellers, and one or more flight control surfaces.

In some embodiments, the processor(s) <NUM> may include any type of computer processor capable of receiving signals from other components of the UAV <NUM> and executing instructions stored on the computer-readable medium <NUM>. In some embodiments, the computer-readable medium <NUM> may include one or more devices capable of storing information for access by the processor(s) <NUM>. In some embodiments, the computer-readable medium <NUM> may include one or more of a hard drive, a flash drive, an EEPROM, and combinations thereof.

As shown, the computer-readable medium <NUM> has stored thereon a route data store <NUM>, a command processing engine <NUM>, and a route traversal engine <NUM>. In some embodiments, the route traversal engine <NUM> is configured to cause the propulsion device(s) <NUM> to propel the UAV <NUM> through a route received from a human pilot, an automated system, or from any other device and stored in the route data store <NUM>. The route traversal engine <NUM> may use signals from other devices, such as GPS sensor devices, vision-based navigation devices, accelerometers, LIDAR devices, and/or other devices, to assist in positioning and navigation as is typical for a UAV <NUM>. In some embodiments, the command processing engine <NUM> is configured to receive commands from the fleet management computing system <NUM>, to cause the route traversal engine <NUM> to implement the commands, and to transmit acknowledgement notifications to the fleet management computing system <NUM> upon successful receipt of the commands.

<FIG> are a flowchart that illustrates a non-limiting example embodiment of a method of managing a fleet of UAVs according to various aspects of the present disclosure. In the method <NUM>, the fleet management computing system <NUM> generates a map interface that allows a user to select multiple UAVs based on a map area, and to transmit commands to the selected UAVs. Because group management tasks for a fleet of UAVs will often be applied to UAVs within a geographic area, using a map interface to select an initial group of UAVs and then to refine that selection to fewer than all of the initial group of UAVs (as described below) provides an intuitive interface that both allows an operator to quickly specify groups of UAVs based on geography and then to also conveniently revise that selection.

From a start block, the method <NUM> proceeds to block <NUM>, where a telemetry collection engine <NUM> of a fleet management computing system <NUM> receives telemetry information from a plurality of UAVs. As discussed above, each UAV <NUM> includes one or more wireless communication interfaces <NUM> which are capable of communicating with one or more communication interfaces <NUM> on the fleet management computing system <NUM> while in flight. The telemetry collection engine <NUM> may receive any suitable telemetry information that allows the fleet management computing system <NUM> to generate the map interface, including but not limited to one or more of positioning information (including but not limited to one or more of a latitude/longitude, a set of GPS coordinates, a what3words geocode, or a Plus Code), altitude information, attitude information, and speed information.

At block <NUM>, a user interface engine <NUM> of the fleet management computing system <NUM> generates a map interface with a plurality of UAV icons based on the telemetry information. The map interface may be generated by the user interface engine <NUM> using any suitable technique. In some embodiments, the user interface engine <NUM> may generate a web interface that is retrieved and rendered by a standard web browser on a user device. In some embodiments, the user interface engine <NUM> may provide information for an interface program to provide portions of the map interface (such as the plurality of UAV icons) as an overlay to a map provided by a system separate from the fleet management computing system <NUM>. In some embodiments, the user interface engine <NUM> may generate the map interface as a video or graphic presentation, and may provide the video or graphic presentation as the map interface. Any other suitable technique for generating an interactive interface may be used. Because such techniques are known to those of skill in the art, they are not described here in any further detail for the sake of brevity.

<FIG> is an illustration of a non-limiting example embodiment of a map interface generated by the user interface engine <NUM> according to various aspects of the present disclosure. In the illustrated embodiment, the map interface <NUM> is presented within a standard web browser <NUM>. As shown, the map interface <NUM> shows a map. The map interface <NUM> includes a plurality of UAV icons 506a-<NUM>, which are presented at locations indicated by the telemetry information. Though all of the UAV icons 506a-<NUM> match, in some embodiments, different UAV icons may be used for different types of UAVs. A user may scroll the map by clicking-and-dragging, using scroll arrows, or by any other suitable technique. As the area depicted by the map interface <NUM> moves, different UAV icons may be displayed. Likewise, as the telemetry collection engine <NUM> continues to receive telemetry information, the locations of the UAV icons 506a-<NUM> may be updated within the map interface <NUM> by the user interface engine <NUM>.

At block <NUM>, the user interface engine <NUM> receives a selection of an initial group of UAV icons, wherein the initial group of UAV icons includes two or more UAV icons. <FIG> and <FIG> illustrate two non-limiting example embodiments of techniques for providing a selection of an initial group of UAV icons via the map interface <NUM> according to various aspects of the present disclosure.

In <FIG>, a rectangular selection border <NUM> is drawn around a group of UAV icons to create the initial group of UAV icons. As shown, UAV icons 506a, 506b, 506c, 506d, <NUM>, and <NUM> from <FIG> have changed to selected UAV icons 602a-<NUM> to indicate that they are part of the selected group.

The map interface <NUM> may allow the user to draw the rectangular selection border <NUM> using any suitable technique. As one non-limiting example, the map interface <NUM> may allow the user to click in a first corner and then to drag a diagonal corner of the rectangular selection border <NUM> to stretch the border over the desired area. As another non-limiting example, the map interface <NUM> may allow the user to click in a first corner and then to click in another corner to define the rectangular selection border <NUM>.

In <FIG>, instead of a rectangular selection border <NUM>, a lasso selection border <NUM> is drawn around the same group of UAV icons to create the initial group of UAV icons. The lasso selection border <NUM> may be provided by the user drawing a border in any shape around the desired group of UAV icons. Both the rectangular selection border <NUM> and the lasso selection border <NUM> have various advantages. For example, the rectangular selection border <NUM> is easily represented and may be communicated easily to the fleet management computing system <NUM>, but is less precise. Meanwhile, the lasso selection border <NUM> is more difficult to represent and may be complex to communicate to the fleet management computing system <NUM>, but allows for a precise selection of a geographically contiguous group of UAV icons.

In some embodiments (particularly embodiments wherein clicking-and-dragging normally causes the map area to scroll), the map interface <NUM> may use a modifier key to accompany the click (e.g., a shift-click or an alt-click) to change a mode of the map interface <NUM> from a scroll mode to a border-defining mode. In some embodiments, the map interface <NUM> may provide a control (e.g., a button) that switches the mode from the scroll mode to the border-defining mode. <FIG> and <FIG> also show a send command interface element <NUM> and a choose command interface element <NUM>, which will be discussed in further detail below.

Returning to <FIG>, at optional block <NUM>, the user interface engine <NUM> receives a de-selection of one or more UAV icons from the initial group of UAV icons to create a final selected group of UAV icons. The de-selection of the UAV icons may be provided using any suitable technique. In some embodiments, a modified click (e. g, a control-click, a right-click, a long tap) may be used to indicate that a selected UAV icon should be de-selected. In some embodiments, a normal click or tap on a UAV icon may toggle the UAV icon between a selected state and a de-selected state.

<FIG> is an illustration of a non-limiting example embodiment of a map interface after a de-selection of one or more UAV icons from the initial group of UAV icons according to various aspects of the present disclosure. In <FIG>, the lasso selection border <NUM> from <FIG> is still shown, though in some embodiments, the selection border may disappear once the initial selection is made. As shown, selected UAV icon 602f and selected UAV icon <NUM> have been de-selected, and are now de-selected UAV icon 702b and de-selected UAV icon 702a, respectively. Since they have been de-selected, selected UAV icon 602a, selected UAV icon 602b, selected UAV icon 602d, and selected UAV icon <NUM> now make up the final selected group of UAV icons.

In some embodiments, the map interface <NUM> may accept multiple togglings of a given UAV icon between a selected state and a de-selected state, though only a single switch from selected to de-selected is illustrated in <FIG> for the sake of clarity. In some embodiments, the map interface <NUM> may also allow additional UAV icons that were not part of the initial group of UAV icons to be added to the final selected group of UAV icons (e.g., by modified clicking (e.g., a control-click or shift-click) on the additional UAV icons, by dragging the selection border around additional UAV icons, by adding an additional selection border, or by any other suitable technique.

Returning again to <FIG>, at optional block <NUM>, the user interface engine <NUM> receives a tag to be associated with the final selected group of UAV icons and stores the tag and the final selected group of UAV icons in a command record data store <NUM> of the fleet management computing system <NUM>. Though not illustrated, the tag may be provided via the map interface through one or more interface controls that allow the user to specify a tag to be applied. Saving a tag for the final selected group of UAV icons allows the user to address the same selected group of UAVs in the future, which may be particularly helpful when the UAVs have moved to different geographical regions but the user still desires to command them as a group.

At block <NUM>, the user interface engine <NUM> receives an input identifying a command to be transmitted to UAVs associated with the UAV icons of the final selected group of UAV icons. Any suitable interface elements may be used to provide the input identifying the command to be transmitted. In <FIG>, a simple choose command interface element <NUM> is provided as a drop-down list that allows the user to choose from multiple available commands that can be sent. Any appropriate command may be supported by the fleet management computing system <NUM> and listed in the choose command interface element <NUM>, including but not limited to a "land now" command that causes UAVs to autonomously land at or near their current location; a "hover" command that causes UAVs to autonomously hover at their current position; a "return home" command that causes UAVs to autonomously return to a home base; and a "ceiling/floor" command that causes UAVs to autonomously navigate above a given floor altitude and/or below a given ceiling altitude.

Returning again to <FIG>, at block <NUM>, a command transmission engine <NUM> of the fleet management computing system <NUM> transmits the command to the UAVs associated with the UAV icons of the final selected group of UAV icons. In some embodiments, the command is transmitted to the UAVs using a similar communication path as the path by which the telemetry information was received. In some embodiments, the command is transmitted in response to actuation of a user interface element, such as the send command interface element <NUM>.

At block <NUM>, the command transmission engine <NUM> stores a record of the command in the command record data store <NUM>. In some embodiments, the record of the command indicates at least what command was sent and which UAVs it was sent to. In some embodiments, the record of the command may include a timestamp, a unique identifier, or other information that can allow the command transmission engine <NUM> to uniquely match the record of the command to subsequently received acknowledgement notifications.

The method <NUM> then proceeds to a continuation terminal ("terminal A").

From terminal A (<FIG>), the method <NUM> proceeds to block <NUM>, where the command transmission engine <NUM> receives acknowledgement messages from one or more of the UAVs to which the command was transmitted. Though not illustrated in the method <NUM>, once a UAV <NUM> receives a command, the command processing engine <NUM> transmits an acknowledgement message back to the command transmission engine <NUM> to indicate that the command was received before implementing the command. In some embodiments, the acknowledgement message may include a timestamp, a unique identifier, or other identifying information that allows the command transmission engine <NUM> to associate the acknowledgement message with the record of the command stored in the command record data store <NUM>, as well as information that allows the command transmission engine <NUM> to identify the UAV <NUM> from which the acknowledgement message is sent.

At block <NUM>, the command transmission engine <NUM> updates the record of the command in the command record data store <NUM> based on the acknowledgement messages. In this way, the record of the command in the command record data store <NUM> will keep track of which UAVs associated with icons in the final selected group of UAV icons have successfully received the command, and which have not.

At decision block <NUM>, a determination is made regarding whether the fleet management computing system <NUM> should retry transmitting one or more failed commands. In some embodiments, the determination may be made based on whether the record of the command indicates any missing acknowledgement messages. In some embodiments, the determination may wait a predetermined amount of time after the initial transmission before determining that the command should be retried in order to allow for transmission latency and processing delay in the communication between the fleet management computing system <NUM> and the UAVs.

If it is determined that the fleet management computing system <NUM> should retry transmitting commands (e.g., if there are missing acknowledgement messages and the predetermined amount of time has passed), then the result of decision block <NUM> is YES, and the method <NUM> proceeds to block <NUM>, where the user interface engine <NUM> presents one or more interface elements for retrying transmission of the command to one or more of the UAVs.

<FIG> is an illustration of a non-limiting example embodiment of a map interface presenting one or more interface elements for retrying transmission of the command to one or more of the UAVs according to various aspects of the present disclosure. In the map interface <NUM> of <FIG>, a failed UAV icon 802a is shown to indicate that the transmission of the command associated with selected UAV icon 602e failed, and a failed UAV icon 802b is shown to indicate that the transmission of the command associated with selected UAV icon 602c failed. The user may actuate the retry command interface element <NUM> to send the command listed in the choose command interface element <NUM> to the UAVs associated with icons indicated by the failed UAV icons.

In some embodiments, the choose command interface element <NUM> may allow the user to change the command to be sent when retrying, while in other embodiments, the choose command interface element <NUM> may be made read-only when the retry command interface element <NUM> is presented. As with the other illustrations, the map interface <NUM> of <FIG> may allow the user to de-select one or more of the failed UAV icon 802a and the failed UAV icon 802b so that the command will not be retried to the associated UAVs. In some embodiments, the command transmission engine <NUM> may continue to check for acknowledgement messages, and may remove the failed UAV icons from any selected UAV icons for acknowledgement messages that come in after initially presenting the failed UAV icons so that the map interface <NUM> remains up to date.

Returning to <FIG>, after retrying transmission at block <NUM>, the method <NUM> returns to block <NUM> to check for further command acknowledgements. Returning to decision block <NUM>, if it was determined that no retry was desired, then the result of decision block <NUM> is NO, and the method <NUM> proceeds to an end block, where it terminates.

In the preceding description, numerous specific details are set forth to provide a thorough understanding of various embodiments of the present disclosure. One skilled in the relevant art will recognize, however, that the techniques described herein can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring certain aspects.

The order in which some or all of the blocks appear in each method flowchart should not be deemed limiting. Rather, one of ordinary skill in the art having the benefit of the present disclosure will understand that actions associated with some of the blocks may be executed in a variety of orders not illustrated, or even in parallel.

Claim 1:
A computer-readable medium having logic stored thereon that, in response to execution by one or more processors (<NUM>) of a fleet management computing system (<NUM>), causes the fleet management computing system to perform actions for managing a fleet of unmanned aerial vehicles, UAVs (<NUM>), the actions comprising:
receiving, by the fleet management computing system, telemetry information from a plurality of UAVs;
generating, by the fleet management computing system, a map interface having a plurality of UAV icons (506a-<NUM>) based on the telemetry information;
receiving, by the fleet management computing system, a selection of an initial group of UAV icons via the map interface, wherein the initial group of UAV icons includes two or more UAV icons;
receiving, by the fleet management computing system, a de-selection of one or more UAV icons from the initial group of UAV icons to create a final selected group of UAV icons;
transmitting, by the fleet management computing system, a command to UAVs associated with the UAV icons of the final selected group of UAV icons;
characterised by:
receiving, by the fleet management computing system, acknowledgement messages from UAVs that have received the command; and
generating, by the fleet management computing system, an interface element to allow retrying transmission of the command to UAVs from which acknowledgement messages have not been received;
wherein generating the interface element to allow retrying transmission of the command includes de-selecting the UAV icons of the map interface associated with UAVs from which acknowledgement messages were received.