IP Library Granted Patent US 12,353,504
Granted Patent B2
US 12,353,504 · App. 18/161,026 · Granted Jul 8, 2025

Computer-implemented symbolic differentiation using first-order retraction

Inventors: Hayk Martirosyan (San Francisco, CA); Aaron Christopher Miller (San Francisco, CA); Nathan Leo Bucki (San Mateo, CA); Bradley Matthew Solliday (San Francisco, CA); Ryan David Kennedy (San Francisco, CA); Jack Louis Zhu (San Mateo, CA); Teodor Tomic (Redwood City, CA); Yixiao Sun (Stanford, CA); Josiah Timothy VanderMey (Redwood City, CA); Gareth Benoit Cross (San Carlos, CA); Peter Benjamin Henry (San Francisco, CA); Dominic William Pattison (Cupertino, CA); Samuel Shenghung Wang (Mountain View, CA); Kristen Marie Holtz (Menlo Park, CA); Harrison Zheng (Palo Alto, CA)
Assignee: Skydio, Inc.
G06F17/16B64C39/024B64U10/00G05D1/0022G05D1/0038G05D1/0088G05D1/0825G05D1/101G06F9/526G06F17/18G06V10/751B64U2101/30B64U2201/00B64U2201/10B64U2201/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 12,353,504
App. No.
18/161,026
Granted
Jul 8, 2025
Kind
B2
Abstract

A computer accesses an input element storage and an output element storage. The computer accesses a symbolic expression for output element storage as a function of the input element storage. The computer computes, using a symbolic computation engine of the computer, a symbolic expression for the tangent space Jacobian of the output element storage with respect to an input tangent space. The computer outputs the computed expression.

Claims (50)

1. A method comprising:

accessing, at a computing device comprising processing circuitry and memory, an input element storage;

accessing, from the memory, a symbolic perturbation vector in an input tangent space;

retracting, using a symbolic computation engine of the computing device, the input element storage by the symbolic perturbation vector to generate a perturbed input element storage;

accessing, from the memory, a symbolic expression for an output element storage as a function of the input element storage;

substituting, in the symbolic expression using the symbolic computation engine, the perturbed input element storage for the input element storage;

computing, using the symbolic computation engine, local coordinates for a perturbed output relative to an unperturbed output;

generating, using the symbolic computation engine, a symbolic expression for a perturbed output element tangent vector as a function of input element storage and input tangent space perturbation;

computing, using the symbolic computation engine, a Jacobian of output tangent vector elements with respect to an input perturbation;

generating, using the symbolic computation engine, a symbolic expression for a tangent space Jacobian of the output element storage with respect to the input tangent space as a function of the input element storage and the input tangent space perturbation;

setting, using the symbolic computation engine, the symbolic perturbation vector to zero to generate a symbolic expression for the tangent space Jacobian of the output element storage with respect to the input tangent space as a function of the input element storage; and

controlling operation of an unmanned aerial vehicle based on the symbolic expression for the output element storage as the function of the input element storage, wherein the symbolic expression for the output element storage as the function of the input element storage represents a cost function for operating the unmanned aerial vehicle, wherein controlling the operation of the unmanned aerial vehicle comprises controlling the operation of the unmanned aerial vehicle to implement an optimization based on the cost function.

2. The method of claim 1 , wherein the symbolic computation engine leverages the processing circuitry to manipulate symbolic mathematical expressions stored in the memory.

3. The method of claim 1 , wherein the input element storage comprises a symbolic input element storage.

4. The method of claim 1 , wherein the computing device comprises a flight control subsystem of the unmanned aerial vehicle, and wherein controlling operation of the unmanned aerial vehicle comprises transmitting instructions to a motor of the unmanned aerial vehicle.

5. The method of claim 1 , wherein the Jacobian of the output element storage with respect to the input tangent space comprises a matrix representing a symbolic derivative of the output element storage with respect to the input tangent space.

6. A non-transitory computer-readable medium storing instructions which, when executed by a computing device, causes the computing device to perform operations comprising:

accessing, at the computing device comprising processing circuitry and memory, an input element storage;

accessing, from the memory, a symbolic perturbation vector in an input tangent space;

retracting, using a symbolic computation engine of the computing device, the input element storage by the symbolic perturbation vector to generate a perturbed input element storage;

accessing, from the memory, a symbolic expression for an output element storage as a function of the input element storage;

substituting, in the symbolic expression using the symbolic computation engine, the perturbed input element storage for the input element storage;

computing, using the symbolic computation engine, local coordinates for a perturbed output relative to an unperturbed output;

generating, using the symbolic computation engine, a symbolic expression for a perturbed output element tangent vector as a function of input element storage and input tangent space perturbation;

computing, using the symbolic computation engine, a Jacobian of output tangent vector elements with respect to an input perturbation;

generating, using the symbolic computation engine, a symbolic expression for a tangent space Jacobian of the output element storage with respect to the input tangent space as a function of the input element storage and the input tangent space perturbation;

setting, using the symbolic computation engine, the symbolic perturbation vector to zero to generate a symbolic expression for the tangent space Jacobian of the output element storage with respect to the input tangent space as a function of the input element storage; and

controlling operation of an unmanned aerial vehicle based on the symbolic expression for the output element storage as the function of the input element storage, wherein the symbolic expression for the output element storage as the function of the input element storage represents a cost function for operating the unmanned aerial vehicle, wherein controlling the operation of the unmanned aerial vehicle comprises controlling the operation of the unmanned aerial vehicle to implement an optimization based on the cost function.

7. The computer-readable medium of claim 6 , wherein the symbolic computation engine leverages the processing circuitry to manipulate symbolic mathematical expressions stored in the memory.

8. The computer-readable medium of claim 6 , wherein the input element storage comprises a symbolic input element storage.

9. The computer-readable medium of claim 6 , wherein the computing device comprises a flight control subsystem of the unmanned aerial vehicle, and wherein controlling operation of the unmanned aerial vehicle comprises transmitting instructions to a motor of the unmanned aerial vehicle.

10. The computer-readable medium of claim 6 , wherein the Jacobian of the output element storage with respect to the input tangent space comprises a matrix representing a symbolic derivative of the output element storage with respect to the input tangent space.

11. A computing device comprising:

processing circuitry; and

a memory storing instructions which, when executed by the processing circuitry, cause the processing circuitry to:

access an input element storage;

access, from the memory, a symbolic perturbation vector in an input tangent space;

retract, using a symbolic computation engine of the computing device, the input element storage by the symbolic perturbation vector to generate a perturbed input element storage;

access, from the memory, a symbolic expression for an output element storage as a function of the input element storage;

substitute, in the symbolic expression using the symbolic computation engine, the perturbed input element storage for the input element storage;

compute, using the symbolic computation engine, local coordinates for a perturbed output relative to an unperturbed output;

generate, using the symbolic computation engine, a symbolic expression for a perturbed output element tangent vector as a function of input element storage and input tangent space perturbation;

compute, using the symbolic computation engine, a Jacobian of output tangent vector elements with respect to an input perturbation;

generate, using the symbolic computation engine, a symbolic expression for a tangent space Jacobian of the output element storage with respect to the input tangent space as a function of the input element storage and the input tangent space perturbation;

set, using the symbolic computation engine, the symbolic perturbation vector to zero to generate a symbolic expression for the tangent space Jacobian of the output element storage with respect to the input tangent space as a function of the input element storage; and

control operation of an unmanned aerial vehicle based on the symbolic expression for the output element storage as the function of the input element storage, wherein the symbolic expression for the output element storage as the function of the input element storage represents a cost function for operating the unmanned aerial vehicle, wherein controlling the operation of the unmanned aerial vehicle comprises controlling the operation of the unmanned aerial vehicle to implement an optimization based on the cost function.

12. The computing device of claim 11 , wherein the symbolic computation engine leverages the processing circuitry to manipulate symbolic mathematical expressions stored in the memory.

13. The computing device of claim 11 , wherein the input element storage comprises a symbolic input element storage.

14. The computing device of claim 11 , wherein the computing device comprises a flight control subsystem of the unmanned aerial vehicle, and wherein controlling operation of the unmanned aerial vehicle comprises transmitting instructions to a motor of the unmanned aerial vehicle.

15. The computing device of claim 11 , wherein the Jacobian of the output element storage with respect to the input tangent space comprises a matrix representing a symbolic derivative of the output element storage with respect to the input tangent space.

Assignments (2)
SECURITY INTEREST Recorded Dec 5, 2024
From: SKYDIO, INC.
To: ACQUIOM AGENCY SERVICES LLC
Reel/Frame 069516/0452 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2023
From: MARTIROSYAN, HAYK; MILLER, AARON CHRISTOPHER; BUCKI, NATHAN LEO; SOLLIDAY, BRADLEY MATTHEW; KENNEDY, RYAN DAVID; ZHU, JACK LOUIS; TOMIC, TEODOR; SUN, YIXIAO; VANDERMEY, JOSIAH TIMOTHY; CROSS, GARETH BENOIT; HENRY, PETER BENJAMIN; PATTISON, DOMINIC WILLIAM; WANG, SAMUEL SHENGHUNG; HOLTZ, KRISTEN MARIE; ZHENG, HARRISON
To: SKYDIO, INC.
Reel/Frame 063389/0168 →
Continuity (3)
Provisional Application 63344755 · May 23, 2022
Provisional Application 63304537 · Jan 28, 2022
Related Publication 20230280765A1 · Sep 7, 2023
References Cited (17)
US 9352833B2 · Kruglick · 2016 [cited by applicant]
US 20110137506A1 · DeMarco et al. · 2011 [cited by applicant]
US 20150284010A1 · Beardsley et al. · 2015 [cited by applicant]
US 20170291704A1 · Alegria · 2017 [cited by applicant]
US 20170301246A1 · De Prins et al. · 2017 [cited by applicant]
US 20180292830A1 · Kazemi et al. · 2018 [cited by applicant]
US 20190163206A1 · Zhu et al. · 2019 [cited by applicant]
US 20200276704A1 · Sindhwani et al. · 2020 [cited by applicant]
US 20200409395A1 · Hilliges et al. · 2020 [cited by applicant]
US 20210080589A1 · Febbo et al. · 2021 [cited by applicant]
US 20210300554A1 · Bergkvist et al. · 2021 [cited by applicant]
US 20210349469A1 · Houseago et al. · 2021 [cited by applicant]
US 20220277859A1 · Alesiani · 2022 [cited by examiner]
US 20230107622A1 · Loussides et al. · 2023 [cited by applicant]
US 20240010326A1 · Roach et al. · 2024 [cited by applicant]
JP 2022011663A · 2022 [cited by applicant]
WO WO2017007527A2 · 2017 [cited by examiner]