Universal control architecture for control of unmanned systems
A common command and control architecture (alternatively termed herein as a “universal control architecture”) is disclosed that allows different unmanned systems, including different types of unmanned systems (e.g., air, ground, and/or maritime unmanned systems), to be controlled simultaneously through a common control device (e.g., a controller that can be an input and/or output device). The universal control architecture brings significant efficiency gains in engineering, deployment, training, maintenance, and future upgrades of unmanned systems. In addition, the disclosed common command and control architecture breaks the traditional stovepipe development involving deployment models and thus reducing hardware and software maintenance, creating a streamlined training/proficiency initiative, reducing physical space requirements for transport, and creating a scalable, more connected interoperable approach to control of unmanned systems over existing unmanned systems technology.
1 . A system for adding unmanned vehicles to a common command and control architecture, the system comprising:
one or more processors; and
a non-transitory computer-readable storage medium storing instructions, which when executed by the one or more processors cause the one or more processors to:
detect a signal from an unmanned vehicle within a vicinity of a controller, wherein the unmanned vehicle comprises a payload device;
in response to detecting the signal from the unmanned vehicle, transmit an identification request to the unmanned vehicle, wherein the identification request requests identification information associated with the unmanned vehicle;
receive, in response to the identification request, vehicle information, wherein the vehicle information comprises movement types supported by the unmanned vehicle, payload types supported by the unmanned vehicle, and communication protocol associated with the unmanned vehicle;
determine, based on processing the movement types and the payload types with each movement type associated with movement commands received from the unmanned vehicle, a plurality of movement control models for moving the unmanned vehicle, a payload movement control model for moving the payload device associated with the unmanned vehicle, wherein two or more movement control models of the plurality of movement control models include overlapping commands, and wherein each movement control model translates operator commands into movement instructions for the unmanned vehicle or the payload device;
select, from the plurality of movement control models, a subset of the plurality of movement control models comprising a least number of movement control models that cover all movement commands supported by the unmanned vehicle;
assign, the subset of the plurality of movement control models, the payload movement control model, and the communication protocol to an unmanned vehicle object; and
control, via each corresponding set of instructions, the unmanned vehicle using the subset of the plurality of movement control models.
2 . The system of claim 1 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to:
receive, from the unmanned vehicle, position information resulting from execution of plurality of sets of test movement instructions associated with a test command;
determine, based on one or more test movement control models and the payload movement control model, expected position information associated with the unmanned vehicle; and
determine, based on the expected position information and the position information from the unmanned vehicle, whether the plurality of sets of the test movement instructions moved the unmanned vehicle into an expected position.
3 . The system of claim 1 , wherein the instructions for determining, based on the vehicle information, the plurality of movement control models and the payload movement control model, when executed by the one or more processors, further cause the one or more processors to:
receive, from the unmanned vehicle, a first plurality of supported movement commands and a second plurality of supported payload commands;
match the first plurality of supported movement commands with the plurality of movement control models and the second plurality of supported payload commands with one or more payload movement control models; and
assign, to the unmanned vehicle object, the plurality of movement control models that match the first plurality of supported movement commands and the one or more payload movement control models that match the second plurality of supported payload commands.
4 . The system of claim 3 , wherein the instructions, when executed by the one or more processors, further cause the one or more processors to:
determine that a first movement control model matches a first portion of the first plurality of supported movement commands and a second movement control model matches a second portion of the first plurality of supported movement commands; and
generate a new movement control model comprising a first application programming interface for the first plurality of supported movement commands and a second application programming interface for the second portion of the first plurality of supported movement commands.
5 . A method comprising:
detecting a wireless signal being broadcast by an unmanned vehicle within a vicinity of a controller;
in response to detecting the wireless signal being broadcast by the unmanned vehicle, transmitting an identification request to the unmanned vehicle, wherein the identification request requests identification information associated with the unmanned vehicle and is formatted according to a model of the unmanned vehicle;
receiving, in response to the identification request from the unmanned vehicle, movement types associated with the unmanned vehicle, wherein each movement type is associated with a movement command supported by the unmanned vehicle;
determining, based on processing the movement types received from the unmanned vehicle, a plurality of movement control models for moving the unmanned vehicle, wherein two or more movement control models of the plurality of movement control models include overlapping commands, and wherein each movement control model translates operator commands or automation inputs into movement instructions for the unmanned vehicle;
selecting, from the plurality of movement control models, a subset of the plurality of movement control models comprising a least number of movement control models that cover all movement commands supported by the unmanned vehicle;
assigning the subset of the plurality of movement control models to the unmanned vehicle; and
controlling the unmanned vehicle using the subset of the plurality of movement control models.
6 . The method of claim 5 , further comprising:
receiving in response to the identification request, payload types associated with the unmanned vehicle and a communication protocol associated with the unmanned vehicle;
determining, based on the payload types, a payload movement control model for moving or controlling state of a payload device mounted on the unmanned vehicle, wherein the payload movement control model translates payload movement commands into payload movement instructions for the payload device mounted onto the unmanned vehicle;
assigning the payload movement control model to the unmanned vehicle; and
controlling the payload device mounted on the unmanned vehicle using the payload movement control model.
7 . The method of claim 5 , further comprising:
generating a plurality of test commands for the unmanned vehicle, wherein each test command of the plurality of test commands tests a movement control model;
translating, using one or more movement control models of the plurality of movement control models, the plurality of test commands into a plurality of sets of test movement instructions for the unmanned vehicle;
formatting the plurality of sets of the movement instructions according to a communication protocol associated with the unmanned vehicle; and
transmitting the plurality of sets of the test movement instructions formatted according to the communication protocol to the unmanned vehicle.
8 . The method of claim 7 , further comprising:
receiving, from the unmanned vehicle, position information resulting from execution of the plurality of sets of the test movement instructions;
determining, based on the one or more movement control models, expected position information associated with the unmanned vehicle; and
determining, based on the expected position information and the position information from the unmanned vehicle, whether the plurality of sets of instructions moved the unmanned vehicle into an expected position.
9 . The method of claim 5 , further comprising:
receiving, from the unmanned vehicle, payload orientation information resulting from execution of a set of instructions for moving a payload device;
determining, based on a payload movement control model, expected orientation information associated with the payload device; and
determining, based on the expected orientation information and the payload orientation information from the unmanned vehicle, whether the set of instructions moved the payload device into an expected orientation.
10 . The method of claim 5 , wherein determining the plurality of movement control models further comprises:
receiving, from the unmanned vehicle, a plurality of supported movement commands;
matching the plurality of supported movement commands with the plurality of movement control models; and
assigning, to an unmanned vehicle object, the plurality of movement control models that match the plurality of supported movement commands.
11 . The method of claim 10 , further comprising:
determining that a first movement control model matches a first portion of the plurality of supported movement commands and a second movement control model matches a second portion of the plurality of supported movement commands; and
generating a new movement control model comprising a first application programming interface for the first portion of the plurality of supported movement commands and a second application programming interface for the second portion of the plurality of supported movement commands.
12 . The method of claim 5 , wherein further comprising:
receiving, from the unmanned vehicle, a plurality of supported payload commands;
matching the plurality of supported payload commands with one or more payload movement control models; and
assigning, to an unmanned vehicle object, the one or more payload movement control models that match the plurality of supported payload commands.
13 . A non-transitory, computer-readable medium storing instructions for adding unmanned vehicles to a common command and control architecture, the instructions when executed by one or more processors, cause the one or more processors to perform operations comprising:
detecting a wireless signal being broadcast by an unmanned vehicle within a vicinity of a controller;
in response to detecting the wireless signal being broadcast by the unmanned vehicle, transmitting an identification request to the unmanned vehicle, wherein the identification request requests identification information associated with the unmanned vehicle and is formatted according to a model of the unmanned vehicle;
receiving movement types associated with the unmanned vehicle, wherein each movement type is associated with a movement command supported by the unmanned vehicle;
determining, based on processing the movement types received from the unmanned vehicle, a plurality of movement control models for moving the unmanned vehicle, wherein two or more movement control models of the plurality of movement control models include overlapping commands, and wherein each movement control model translates operator commands into movement instructions for the unmanned vehicle;
selecting, from the plurality of movement control models, a subset of the plurality of movement control models comprising a least number of movement control models that cover all movement commands supported by the unmanned vehicle;
assigning the subset of the plurality of movement control models to the unmanned vehicle; and
controlling the unmanned vehicle using the subset of the plurality of movement control models.
14 . The non-transitory, computer-readable medium of claim 13 , wherein the instructions further cause the one or more processors to perform operations comprising:
receiving in response to the identification request, payload types associated with the unmanned vehicle and a communication protocol associated with the unmanned vehicle;
determining, based on the payload types, a payload movement control model for moving a payload device mounted on the unmanned vehicle, wherein the payload movement control model translates payload movement commands into payload movement instructions for the payload device mounted onto the unmanned vehicle;
assigning the payload movement control model to the unmanned vehicle; and
controlling the payload device mounted on the unmanned vehicle using the payload movement control model.
15 . The non-transitory, computer-readable medium of claim 13 , wherein the instructions further cause the one or more processors to perform operations comprising:
generating a plurality of test commands for the unmanned vehicle, wherein each test command of the plurality of test commands tests a movement control model;
translating, using one or more movement control models, the plurality of test commands into a plurality of sets of test movement instructions for the unmanned vehicle;
formatting the plurality of sets of the test movement instructions according to a communication protocol associated with the unmanned vehicle; and
transmitting the plurality of sets of the test movement instructions formatted according to the communication protocol to the unmanned vehicle.
16 . The non-transitory, computer-readable medium of claim 15 , wherein the instructions further cause the one or more processors to perform operations comprising:
receiving, from the unmanned vehicle, position information resulting from execution of the plurality of sets of the test movement instructions;
determining, based on the one or more movement control models, expected position information associated with the unmanned vehicle; and
determining, based on the expected position information and the position information from the unmanned vehicle, whether the plurality of sets of the test movement instructions moved the unmanned vehicle into an expected position.
17 . The non-transitory, computer-readable medium of claim 13 , wherein the instructions further cause the one or more processors to perform operations comprising:
receiving, from the unmanned vehicle, payload orientation information resulting from execution of a set of instructions for moving a payload device;
determining, based on a payload movement control model, expected orientation information associated with the payload device; and
determining, based on the expected orientation information and the payload orientation information from the unmanned vehicle, whether the set of instructions moved the payload device into an expected orientation.
18 . The non-transitory, computer-readable medium of claim 13 , wherein the instructions for determining the plurality of movement control models further cause the one or more processors to perform operations comprising:
receiving, from the unmanned vehicle, a plurality of supported movement commands;
matching the plurality of supported movement commands with the plurality of movement control models; and
assigning, to an unmanned vehicle object, the plurality of movement control models that match the plurality of supported movement commands.
19 . The non-transitory, computer-readable medium of claim 18 , wherein the instructions further cause the one or more processors to perform operations comprising:
determining that a first movement control model matches a first portion of the plurality of supported movement commands and a second movement control model matches a second portion of the plurality of supported movement commands; and
generating a new movement control model comprising a first application programming interface for the first portion of the plurality of supported movement commands and a second application programming interface for the second portion of the plurality of supported movement commands.
20 . The non-transitory, computer-readable medium of claim 13 , wherein the instructions further cause the one or more processors to perform operations comprising:
receiving, from the unmanned vehicle, a plurality of supported payload commands;
matching the plurality of supported payload commands with one or more payload movement control models; and
assigning, to an unmanned vehicle object, the one or more payload movement control models that match the plurality of supported payload commands.