IP Library Granted Patent US 11,874,656
Granted Patent B2
US 11,874,656 · App. 15/583,097 · Granted Jan 16, 2024

Unmanned aerial vehicle modular command priority determination and filtering system

Inventors: Brett Michael Bethke (Millbrea, CA); Bernard J. Michini (San Francisco, CA); Jonathan Anders Lovegren (San Francisco, CA); Patrick Michael Bouffard (Albany, CA)
Assignee: Skydio, Inc.
G05D1/0016B64C39/024G05D1/0011G05D1/0061G05D1/0088G05D1/102G08G5/0069B64D47/08B64U10/13B64U2101/30B64U2201/10B64U2201/104B64U2201/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,874,656
App. No.
15/583,097
Granted
Jan 16, 2024
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for unmanned aerial vehicle modular command priority determination and filtering system. One of the methods includes enabling control of the UAV by a first control source that provides modular commands to the UAV, each modular command being a command associated with performance of one or more actions by the UAV. Modular commands from a second control source requesting control of the UAV are received. The second control source is determined to be in control of the UAV based on priority information associated with each control source. Control of the UAV is enabled by the second control source, and modular commands are implemented.

Claims (91)

1. A method implemented by an unmanned aerial vehicle (UAV) comprising one or more processors, the method comprising:

receiving, by a source determination system included in the UAV and from a first control source that provides modular commands to the UAV, one or more first modular commands associated with performance by the UAV of one or more actions related to a flight plan for the UAV;

receiving, by the source determination system included in the UAV and from a second control source that provides modular commands to the UAV, one or more second modular commands associated with performance by the UAV of one or more actions for enforcing an approved geofence in connection with the flight plan;

filtering, by the source determination system, the one or more received first and second modular commands, thereby discarding from implementation by the UAV one or more of the received first or second modular commands, wherein filtering comprises:

receiving, from the first control source, repeated instances of the same modular command;

determining a number of repeated instances of the same modular command that have been received; and

discarding some of the repeated instances of the same modular command if the number of instances of the repeated modular command exceeds a threshold value;

determining, during implementation of a non-discarded first modular command under control of the first control source, that the UAV has moved outside of the approved geofence;

based on the determination that the UAV has moved outside of the approved geofence, transferring control of the UAV to the second control source to implement a non-discarded second modular command for returning the UAV to within the approved geofence; and

based on the UAV returning to within the approved geofence, transferring control of the UAV to the first control source to continue implementing the non-discarded first modular command.

2. The method of claim 1 , wherein filtering comprises:

receiving from the first control source a modular command to travel to a waypoint;

determining whether the UAV has sufficient battery capacity to travel to the waypoint; and

discarding the modular command to travel to the waypoint if the UAV does not have sufficient battery capacity to travel to the waypoint.

3. The method of claim 1 , wherein filtering comprises:

assigning the first control source to perform a group of modular commands; and

discarding modular commands that were received from a control source other than the assigned first control source for the group of modular commands.

4. The method of claim 1 , further comprising:

determining a priority level associated with the first control source for a particular received modular command; and

based on the priority level of the first control source, determining whether to enable performance of the modular command by the UAV.

5. The method of claim 1 , wherein each modular command is validated for the UAV to implement, and wherein the validation is based on configuration information of the UAV.

6. The method of claim 1 , wherein filtering comprises:

receiving a request to cancel a modular command from a requesting control source that requested the modular command, wherein the requesting control source is the first control source or the second control source; and

discarding from implementation the modular command requested to be canceled.

7. The method of claim 1 , wherein the first control source is an application program executing on a computer system of the UAV.

8. The method of claim 1 , further comprising:

maintaining, by the source determination system, the first modular commands and second modular commands in a queue of modular commands, the queue being in an order based, at least in part, on priority information associated with each control source; and

enabling, by the source determination system, control of the UAV according to the queue, and implementing modular commands from the queue of modular commands.

9. The method of claim 1 , further comprising:

receiving, from the first control source and based on parameters for a particular modular command and value ranges associated with the parameters, a cancellation request to cancel the particular modular command, wherein the cancellation request is received in conjunction with a unique identifier for the particular command; and

discarding from implementation the particular modular command in response to the cancellation request.

10. The method of claim 1 , further comprising:

based on a request from the first control source for a particular modular command, providing, to the first control source, value ranges associated with parameters for the particular modular command in conjunction with a unique identifier for the particular modular command.

11. Non-transitory computer storage media storing instructions, that when executed by an unmanned aerial vehicle (UAV) comprising one or more processors, cause the UAV to perform operations comprising:

receiving one or more first modular commands associated with performance of one or more first actions by the UAV from a first control source within the UAV;

receiving one or more second modular commands associated with performance of one or more second actions by the UAV from a second control source within the UAV, the second actions corresponding to enforcing an approved geofence for the UAV;

discarding a subset of the one or more first modular commands and the one or more second modular commands, wherein discarding comprises:

receiving, from the first control source, repeated instances of the same modular command;

determining a number of repeated instances that the same modular command has been received; and

discarding some of the repeated instances of the same modular command if the number of instances of the repeated modular command exceeds a threshold value;

determining, while the UAV is under control of the first control source, that the UAV has moved outside of the approved geofence;

based on the UAV moving outside of the approved geofence, transferring control of the UAV to the second control source for returning the UAV to within the approved geofence; and

based on the UAV returning to within the approved geofence, returning control of the UAV to the first control source.

12. The computer storage media of claim 11 , wherein discarding comprises:

receiving from the first control source a modular command to travel to a waypoint;

determining whether the UAV has sufficient battery capacity to travel to the waypoint; and

discarding the modular command to travel to the waypoint if the UAV does not have sufficient battery capacity to travel to the waypoint.

13. The computer storage media of claim 11 , wherein discarding comprises:

assigning the first control source to perform a group of modular commands; and

discarding modular commands that were received from a control source other than the assigned first control source for the group of modular commands.

14. The computer storage media of claim 11 , wherein the operations further comprise:

determining a priority level associated with the first control source for a particular received modular command; and

based on the priority level of the first control source, determining whether to enable performance of the modular command by the UAV.

15. The computer storage media of claim 11 , wherein each modular command is validated for the UAV to implement, and wherein the validation is based on configuration information of the UAV.

16. The computer storage media of claim 11 , wherein discarding comprises:

receiving a request from the first or second control source to cancel a modular command; and

discarding from implementation the modular command requested to be canceled.

17. The computer storage media of claim 11 , wherein the first control source is an application program executing on a computer system of the UAV.

18. The computer storage media of claim 11 , wherein the operations further comprise:

maintaining the first modular commands and second modular commands in a queue of modular commands, the queue being in an order based, at least in part, on priority information associated with each control source; and

enabling control of the UAV according to the queue and implementing modular commands from the queue of modular commands.

19. An unmanned aerial vehicle (UAV) system, comprising:

one or more processors; and

one or more computer storage media storing instructions, that when executed by the one or more processors, cause the one or more processors to:

receive, from a first control source, one or more first modular commands;

receive, from a second control source, one or more second modular commands associated with enforcing an approved geofence for the UAV;

filter the one or more first and second modular commands to discard a subset of the one or more first and second modular commands from implementation by the UAV, wherein, to filter the one or more first and second modular commands, the one or more processors are configured to execute the instructions to:

receive, from the first control sources, repeated instances of the same modular command;

determine a number of repeated instances that the same modular command has been received; and

discard some of the repeated instances of the same modular command if the number of instances of the repeated modular command exceeds a threshold value;

determine, while the UAV is under control of the first control source, that the UAV has moved outside of the approved geofence;

based on the UAV moving outside of the approved geofence, transfer control of the UAV to the second control source to return the UAV to within the approved geofence; and

based on the UAV returning to within the approved geofence, transfer control of the UAV to the first control source.

20. The system of claim 19 , wherein, to filter the one or more first and second modular commands, the one or more processors are configured to execute the instructions to:

receive from the first control source a modular command to travel to a waypoint;

determine whether the UAV has sufficient battery capacity to travel to the waypoint; and

discard the modular command to travel to the waypoint if the UAV does not have sufficient battery capacity to travel to the waypoint.

21. The system of claim 19 , wherein, to filter the one or more first and second modular commands, the one or more processors are configured to execute the instructions to:

assign the first control source to perform a group of modular commands; and

discard modular commands that were received from a control source other than the assigned first control source for the group of modular commands.

22. The system of claim 19 , wherein the one or more processors are configured to execute the instructions to:

determine a priority level associated with the first control source for a particular received modular command; and

based on the priority level of the first control source, determine whether to enable performance of the modular command by the UAV.

23. The system of claim 19 , wherein each modular command is validated for the UAV to implement, and wherein the validation is based on configuration information of the UAV.

24. The system of claim 19 , wherein, to filter the one or more first and second modular commands, the one or more processors are configured to execute the instructions to:

receive a request from the first or second control source to cancel a modular command; and

discard from implementation the modular command requested to be canceled.

25. The system of claim 19 , wherein the first control source is an application program executing on a computer system of the UAV.

26. The system of claim 19 , wherein the one or more processors are configured to execute the instructions to:

maintain the first modular commands and second modular commands in a queue of modular commands, the queue being in an order based, at least in part, on priority information associated with each control source; and

enable control of the UAV according to the queue and implement modular commands from the queue of modular commands.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Jul 21, 2025
From: SILICON VALLEY BANK, A DIVISION OF FIRST-CITIZENS BANK & TRUST COMPANY
To: SKYDIO, INC.
Reel/Frame 072107/0066 →
RELEASE OF SECURITY INTEREST Recorded Jul 21, 2025
From: HERCULES CAPITAL, INC.
To: SKYDIO, INC.
Reel/Frame 072128/0698 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2023
From: BETHKE, BRETT MICHAEL; MICHINI, BERNARD J.; LOVEGREN, JONATHAN ANDERS; BOUFFARD, PATRICK MICHAEL
To: UNMANNED INNOVATION, INC.
Reel/Frame 064823/0777 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Nov 9, 2021
From: SKYDIO, INC.
To: HERCULES CAPITAL, INC., AS COLLATERAL AND ADMINISTRATIVE AGENT
Reel/Frame 058081/0677 →
SECURITY INTEREST Recorded Nov 8, 2021
From: SKYDIO, INC.
To: SILICON VALLEY BANK
Reel/Frame 058053/0768 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2020
From: KNOBBE, MARTENS, OLSON & BEAR, LLP
To: UNMANNED INNOVATION, INC.
Reel/Frame 053739/0789 →
RELEASE OF SECURITY INTEREST Recorded Jul 16, 2020
From: KNOBBE, MARTENS, OLSON & BEAR, LLC
To: AIRWARE, LLC
Reel/Frame 053234/0634 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE CONVEYING PARTY DATA WAS ERRONEOUSLY ENTER AS UNMMANED INNOVATIONS, INC. IT SHOULD READ UNMANNED INNOVATIONS, INC PREVIOUSLY RECORDED AT REEL: 053144 FRAME: 0591. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 15, 2020
From: UNMANNED INNOVATION, INC.
To: AIRWARE, LLC
Reel/Frame 053210/0586 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2020
From: AIRWARE, LLC
To: SKYDIO, INC.
Reel/Frame 053144/0633 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2020
From: UNMMANED INNOVATION, INC.
To: AIRWARE, LLC
Reel/Frame 053144/0591 →
SECURITY INTEREST Recorded Dec 20, 2018
From: UNMANNED INNOVATION, INC.
To: KNOBBE, MARTENS, OLSON & BEAR, LLP
Reel/Frame 048681/0001 →
Continuity (3)
Continuation 15132106 · Apr 18, 2016
Provisional Application 62315903 · Mar 31, 2016
Related Publication 20170285631A1 · Oct 5, 2017