Patent Publication Number: US-9841761-B2

Title: System and method for controlling unmanned aerial vehicles

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application claims all benefit, including priority, of U.S. Provisional Patent Application Ser. No. 61/643,025, filed May 4, 2012, entitled USER INTERFACE ELEMENTS FOR CONTROLLING MULTIPLE UNMANNED AERIAL VEHICLES, the entire contents of which is incorporated herein by this reference. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates generally to unmanned aviation. The present invention further relates to systems and methods for controlling unmanned aerial vehicles. 
     BACKGROUND OF THE INVENTION 
     An unmanned aerial vehicle (“UAV”) does not have a human operator located at the UAV. It is desirable to be able to control the operation, including flight path, of a UAV remotely. Existing systems for remote control of UAVs may be difficult to learn or operate. Therefore, there is a need to provide additional ways of remotely controlling the operation of a UAV. 
     SUMMARY OF THE INVENTION 
     In accordance with an aspect of the present invention there is provided a method of remotely controlling operation of a plurality of unmanned aerial vehicles, performed by a computing device, the method comprising: receiving real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle location data; displaying at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface, the displaying comprising providing a graphical representation of the respective vehicle location data of each of the plurality of UAVs; receiving a control command input associated with one of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface; and transmitting the received control command to the respective one of the plurality of UAVs. 
     In accordance with another aspect of the present invention, there is provided a non-transitory computer program product tangibly embodying code that, when executed by a processor of a computing device, causes the processor to: receive real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle location data; display at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface, the displaying comprising providing a graphical representation of the respective vehicle location data of each of the plurality of UAVs; receive a control command input associated with one of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface; and transmit the received control command to the respective one of the plurality of UAVs. 
     In accordance with another aspect of the present invention, there is provided a system comprising a computing device configured to: receive real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle location data; display at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface, the displaying comprising providing a graphical representation of the respective vehicle location data of each of the plurality of UAVs; receive a control command input associated with one of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface; and transmit the received control command to the respective one of the plurality of UAVs. 
     In accordance with another aspect of the present invention, there is provided a method of remotely controlling operation of a plurality of unmanned aerial vehicles, performed by a computing device, the method comprising: receiving real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle flight elevation data; displaying at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface, the displaying comprising providing a graphical indication of the relative elevation of each of the plurality of UAVs based at least partly on the respective flight elevation data; receiving a control command input associated with one of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface, the control command comprising a change of elevation of the one of the plurality of UAVs; and transmitting the received control command to the respective one of the plurality of UAVs. 
     In accordance with another aspect of the present invention, there is provided a method of remotely controlling operation of a plurality of unmanned aerial vehicles, performed by a computing device, the method comprising: receiving real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle location data; displaying a graphical representation of at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface; receiving a real-time video stream from at least one of the plurality of UAVs; displaying the real-time video stream received from one of the plurality of UAVs in the single interface based at least partly on a received video stream selection input; receiving a control command input associated with one of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface; and transmitting the received control command to the respective one of the plurality of UAVs; wherein the video stream selection is independent of the control command input. 
     In accordance with another aspect of the present invention, there is provided a method of remotely controlling operation of a plurality of unmanned aerial vehicles, performed by a computing device, the method comprising: receiving real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle location data; receiving real-time location data from a target communication device; displaying a graphical representation of at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface; receiving a control command input associated with one of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface, the control command comprising instructions for maintaining a flight path that follows movement of the target communication device; and transmitting the received control command to the respective one of the plurality of UAVs. 
     In accordance with another aspect of the present invention, there is provided a method of remotely controlling operation of a plurality of unmanned aerial vehicles, performed by a computing device, the method comprising: receiving real-time vehicle status data from a plurality of unmanned aerial vehicles (“UAVs”), the vehicle status comprising vehicle location data; receiving real-time location data from a target communication device; displaying a graphical representation of at least a subset of the received vehicle status data for each of the plurality of UAVs in a single interface; receiving a control command input associated with a grouping of the plurality of UAVs having vehicle status data displayed in the single interface, the control command input received through the single interface, the control command comprising instructions for maintaining a flight path that follows movement of the target communication device; determining a corresponding flight control command for each UAV of the grouping based at least partly on the control command input; and for each determined corresponding flight control command, transmitting the respective determined corresponding flight control command to the respective UAV. 
     In this respect, before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not limited in its application to the details of construction and to the arrangements of the components set forth in the following description or the examples provided therein, or illustrated in the drawings. The invention is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In the drawings, embodiments of the invention are illustrated by way of example. It is to be expressly understood that the description and drawings are only for the purpose of illustration and as an aid to understanding, and are not intended as a definition of the limits of the invention. 
         FIG. 1  illustrates a diagram of one implementation of a user interface in accordance with the present invention, showing a flight plan in a flying mode. 
         FIG. 2  illustrates a diagram of the user interface of  FIG. 1 , showing the flight plan editing mode. 
         FIGS. 3-34  illustrate implementations of a user interface in accordance with aspects of the present invention. 
         FIG. 35  illustrates a block diagram of a system in accordance with the present invention. 
         FIG. 36  illustrates a representative generic implementation of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     In various aspects, the disclosure provides a system  300  comprising a control station  305  (computing device). The system  300 , as best shown in  FIG. 35 , optionally includes one or more ground stations  360  in communication with the control station  305 . The system  300 , and in particular, the control station  305  may serve to remotely control operation of one or more vehicles  325 . Vehicle  325  is an unmanned aerial vehicle (“UAV”) configured to transmit vehicle status data to the control station  305 . The vehicle status data may be transmitted to the control station  305  in real-time, or near real-time. The vehicle status data may include vehicle location data. The control station  305  is configured to display at least a subset of the received vehicle status data for each vehicle  325  in a single interface. The displaying may include providing a graphical representation of the respective vehicle location data of each of the vehicles  325 . Through the single interface, the control station  305  may receive a control command input. The control command input is associated with one of the vehicles  325  having its vehicle status data displayed in the single interface. The control station  305  may then transmit the received control command, or a command derived therefrom, to the respective vehicle  325 . The single interface may provide for a user to view and control flight operation of each of the vehicles  325  such that the location of each vehicle is shown in the single interface, and each vehicle  325  may be independently controlled through the interface by selecting a particular one of the vehicles  325  to control. In this way, multiple UAVs may be monitored and controlled through a single interface. 
     A user interface  100  (or UI), shown in  FIGS. 1 and 2 , would typically appear on the display  320  of a control station  305  (shown in  FIG. 35 ) which remotely controls the vehicles  325 , or as part of a control system for one or more vehicles. The preferred implementation would be on a touch-screen display, but a more traditional non-touch display may be used instead. The preferred implementation would be on a single-unit computer (i.e. one with a built-in display), but a multi-unit computer (i.e. with a separate display) may be used instead. The control station may comprise a communications subsystem  310 , a CPU or central computer system  315  and a display  320 . The communications subsystem allows for wireless communications between the control station  305  and each vehicle  325 , and between the control station  305  and each ground station  360 , when ground stations  360  are used. 
     Each vehicle  325  comprises a Flight control subsystem  330 , a Navigation subsystem  335 , a Communications subsystem  345 , an Operations controller or central computer  355 , optionally a Sensor subsystem and optionally a Camera subsystem  340 . 
     Each ground station  360  comprises a Global Positioning System (GPS) subsystem  365 , a Wireless Communications subsystem  370  and an Operations controller or central computer  375 . 
     As shown in  FIGS. 1 and 2 , in flying modes (manual flying mode and waypoint flying mode), the user interface (“UI”)  100  may include a map view  105 , a camera panel  110  and a status panel  115 . The UI may also contain additional control and status icons, controls and other status information. In flight plan editing mode, the UI  100  consists of the editing map view  106 , a co-ordinate entry panel  107  and a status panel  115 . 
     The map view  105  may include an overhead map  120 , icons representing the vehicles&#39; locations  125  on the overhead map  120 , icons representing the location of a ground station  126 , and a ground height control  130  on which are icons representing the ground heights of the vehicles  135  and a desired height control  140 . The map view may also contain zero or more of the following elements: one or more flight plan indications  145 , wind speed indications  150 , a scale legend  155 , a Manual Flying Mode control  156 , a Waypoint Flying Mode control  157 , a Flight Plan Editing Mode control  158 , a Find Me control  160 , a Follow Me control  165 , a Target Lock control  161 , a Target Lock icon  162 , a Pause control  166 , a Forward Play control  167 , a Reverse Play control  168 , a Home control  169 , and various other status icons and controls. 
     A flight plan indication  145  may include a waypoint route indication  170  (which itself is composed of one or more waypoint indications  171  and zero or more inter-waypoint vectors  172 ), and may additionally consist of zero or more of each of a no-fly zone  175 , a point of interest  180  and a target  185 . A flight plan may additionally contain one perimeter  190 . Each no-fly zone  175  is comprised of one or more no-fly zone elements  176 , which elements are connected by no-fly zone inter-element vectors  177 . 
     The camera panel  110  may include a static image or streamed video images  200  from the vehicle. The camera panel may also contain a target lock indication  205 , zero or more target lock presets  206 , and one or more camera-related status icons or controls. 
     The status panel  115  may include multiple status subpanels  215 , one for each vehicle currently being monitored or controlled by the UI. The status panel may also contain a global stop button  220 . 
     Each status subpanel  215  consists of indications of the vehicle&#39;s name (or identifier)  220 , the vehicle&#39;s charge/fuel level  225 , a memory status icon  226 , a vehicle status icon  227 , and an indication of whether this vehicle is the one currently sending video or images to the camera panel  230 . Each status subpanel may also contain an individual stop button  235 , and one or more status icons or controls. 
     The editing map view  106 , as shown in  FIG. 2 , may comprise an overhead map  120  and icons representing the vehicles&#39; locations  125 . The editing map view may also contain zero or more of the following elements: one or more flight plan indications  145 , a Manual Flying Mode control  156 , a Waypoint Flying Mode control  157 , a Flight Plan Editing Mode control  158 , a Waypoint Creation control  236 , a No-Fly Zone Creation control  237 , a Point Of Interest Creation control  238 , a Target Creation control  239 , a Perimeter Creation control  241 , and various other status icons and controls. 
     The co-ordinate entry panel consists of a co-ordinate entry field  240 , and may optionally comprise a co-ordinate entry keypad  245 . 
     Depending on the capabilities of the system upon which it is implemented, the UI  100  may provide for user input through mouse clicks with a pointer, finger or stylus taps on a touch-screen, the use of dedicated hard or soft keys on a separate keypad, or some other method, to select icons. Since the actual hardware system of icon and functionality selection is not germane to this invention, the term “click” is used to indicate a generic icon selection action, which may be any of the actual physical actions just listed. 
     Many of the operations in the UI  100  depend on the concept of a vehicle “currently selected for control” (or just “currently selected”; the terms are interchangeable). The currently selected vehicle is often the only vehicle affected by certain commands or status changes; these behaviors are noted in the appropriate sections below. The method for selecting a vehicle is also noted below. 
     The term “ground level” is defined as the altitude of the ground at the UAV&#39;s take-off location. The term “ground height” is defined as the distance of the UAV above ground level. Normally, this information is gathered by the UAV&#39;s sensor subsystem  350  and transmitted to the control station  305  by the UAV&#39;s communications subsystem  345 . 
     In accordance with an aspect of the present invention, the system provides multi-vehicle control with synchronization, across multiple interface panels, of an indication of which vehicle is being controlled. Each panel shows a different perspective on what is happening, but the states of the panels are synchronized, such that changing the currently selected vehicle in one panel changes the currently selected vehicle in the other panels, and each panel clearly indicates the currently selected vehicle. 
     The UI  100  provides a function-oriented view, with each panel representing a concept or function. In providing a single UI  100  to control and view status of a plurality of UAVs, controlling multiple UAVs at once may be simplified compared to implementations that provide completely separate UIs for each vehicle. Alternate embodiments of the present invention may change the information shown in each panel, but would still have the synchronization element present. 
     In accordance with an aspect of the present invention, there may be provided multi-UAV control with an indication of which UAV is being controlled synchronized across multiple interface panels. Each panel may show a different perspective on what is happening, but the respective panel states may be synchronized, such that changing the actively-controlled UAV in one panel changes the actively-controlled UAV in the other panels, and each panel clearly indicates the active UAV. By introducing additional panels a function-oriented view is provided, with each panel representing a concept or function, rather than a vehicle-based view, where each window represents a single vehicle. A single UI to control multiple UAVs is a departure from existing UAV UIs that provide completely separate UIs for each UAV. The panels may be rearranged to show different information in each panel. Each panel may provide synchronized information and controls over the active UAV. 
     A plurality of control display arrangements are provided that are easy to use, and easy for users to learn to use. These arrangements provide intuitive and logical access to key control functions for multi-UAV control on a relatively small screen display, and in a way that supports a number of important multi-UAV control workflows, as described in this disclosure. The control display arrangements for example provide prominent display of important control features such as multi-UAV height control in order to achieve minimum height requirements, but also to help avoid collision between the UAVs. The control display arrangements are also designed so that a user can easily switch between different panels or subpanels in a way that allows a user to process information rapidly, and react to new information rapidly, in order to meet multi-UAV flight objectives, as further explained below. 
     In one aspect, the system displays a series of control interfaces or subpanels for monitoring and controlling the flight of the plurality of UAVs, based on user selections defined by one or more multi-UAV flight control workflows. The system displays in each control interface or subpanel a display object indicating a particular one of the plurality of UAVs being controlled in that control interface or subpanel, and continues to display this display object in any subsequently displayed control interface or subpanel until a user of the computing device selects one of the plurality of UAVs other than the particular UAV. This aspect may be seen for example in  FIGS. 3-32  for example, where in the bottom left corner of the control interfaces is shown a highlighted portion that represents a display object indicating the particular UAV being controlled. 
     In addition, to indicating the particular UAV being controlled, across the various control interfaces or subpanels, the system may also update information for the other UAVs so as to provide synchronization across the control interfaces. 
     In accordance with another aspect of the present invention, there may be provided a ground height indicator and control slider in order to display relative heights of the multiple UAVs simultaneously. This may allow the system and user to prevent UAV collisions and to maintain a specific minimum altitude for the UAVs. Accordingly, the height of each UAV may be controlled relative to one another. Height control commands may be provided to the UI instructing one of the UAVs to fly to an absolute height, fly to a height relative the UAV&#39;s current height, or to maintain an approximate elevation separation relative to one or more of the respective UAVs. Ground height may not be considered a similar dimension to X and Y dimensions, so an immediate at-a-glance view of the heights may allow the user to understand the situation quickly. In many situations, the user seldom needs to know details about absolute height during normal flight apart from maintaining a minimum safe altitude, but often needs a general idea of relative heights, and a general idea of height directions (i.e. rising vs. falling). When controlling a UAV to maintain an approximate elevation separation relative to another UAV, the control station may monitor the height of each respective UAV, and direct each UAV to change elevation without further user input. Alternatively, each UAV may be configured to maintain such a separation when receiving location information of the other UAV from the control station  305 . 
     In accordance with another aspect of the present invention, there may be provided independent control of the video source irrespective of the UAV is being controlled. All of the controls are preferably linked between panels except for the video source. The user often wants to separate vehicle control from video control, similar to how a multi-camera TV studio will need to control multiple cameras in real-time without changing the video source. This allows a second UAV to be repositioned while the video from the first UAV is still being streamed, and once the second UAV is in position, the video source can be switched to the second UAV. An alternative would be to have multiple windows or panels streaming video from each UAV simultaneously. This is more distracting if the user only wants video from one UAV (as much of the time, the video would not be of anything of interest), and consumes considerably more bandwidth, but is certainly an option. 
     In accordance with another aspect of the present invention, there may be provided a “Follow-me” mode. UAV control in other implementations is generally focused on either absolute flight plans (i.e. fixed points on a map), or flight plans that involve following a target that exists outside of the aerial system. Follow-me maintains the distance to a ground station which is part of the UAV system. This is a difference operationally since the operator has control over the ground station, and in implementation since the ground station may provide information about its own location or movements to the UAV to help the UAV track the ground station. Follow-me mode may be applicable for security applications. For example, the UAVs may be instructed to follow a convoy where the ground station is on-board the convoy or walking around with a backpack ground station for crowd control. With both of these applications, no further control is required once the UAV is in place and following the ground station. 
     In accordance with another aspect of the present invention, there may be provided a “Flock” mode. Instead of relying on communication between the UAVs, perhaps relying on a type of “swarm” algorithm”, Flock mode provides control of multiple UAVs individually from the single ground station. This may simplify implementation resulting in a more deterministic operation. In the case of multiple UAVs following a convoy, it is not necessary to reposition UAVs or reorient their cameras as the multi-UAV UI can have each UAV watching a different angle, and switch between their camera views as needed. Other implementations might send video simultaneously from each UAV. 
     Flight Planning 
     Conceptually, a flight plan may include one waypoint route, and may additionally include any or all of the following elements: no-fly zones; points of interest; targets; and one perimeter. 
     A waypoint is a user-specified position, represented on the map view with a waypoint indication. It is a navigable marker, meaning that a UAV may be directed to go to that position. There may be attributes associated with the waypoint, such as specific actions that a UAV must take upon reaching the waypoint (e.g. take photos, send back photos, deliver a payload, aim a payload, trigger a payload to sample, land, move to a specific height, pause before continuing on the waypoint route, raise an alert at the control station, or some other set of actions), a minimum or maximum altitude which the UAV must not exceed while within a specified proximity to the waypoint, a maximum velocity which the UAV must not exceed when within a specified proximity to the waypoint, or some other attribute. 
     A waypoint route is a series of connected, directed vectors representing the desired path of travel for the UAV from a start point to an end point, and optionally moving through any number of intermediate navigable markers (waypoints or points of interest). There may be attributes associated with each vector in the waypoint route, such as a maximum, minimum, desired or default velocity (which may be specific to the vector or may be shared across the entire waypoint route); a maximum, minimum, desired or default UAV height (which may be specific to the vector or may be shared across the entire waypoint route); a specific action for the UAV to take while travelling along the vector (e.g. take photos, send back photos, aim a payload, deliver a payload, trigger a payload to sample, raise an alert at the control station, or some other set of actions). 
     In an alternate embodiment, a flight plan may consist of multiple waypoint routes, with each waypoint route associated with one or more vehicles. 
     A no-fly zone is conceptually a shape on a map, through whose boundary a vehicle may not pass, such that a vehicle may not be located within the no-fly zone. The preferred embodiment for a no-fly zone is a closed, ordered series of points, and the lines connecting these points. An alternate embodiment would be a regular shape, such as a circle or oval, with specified defining characteristics (e.g., for a circle, center point and radius). 
     A point of interest (“POI”) is a navigable marker (that is, a marker to which the vehicle may be navigated), unless it is located within a no-fly zone. A POI may also be used as a target for camera viewing, sensor readings, or as an objective point for another on-vehicle payload. 
     A target is a non-navigable marker (that is, a marker to which a vehicle may not be navigated). A target is often used to indicate an objective point for camera viewing, sensor readings, or some other on-vehicle payload. A target may be contained within a no-fly zone. 
     A perimeter is conceptually a shape on a map, through whose boundary a vehicle may not pass, such that a vehicle must be located within the perimeter. The preferred embodiment for a perimeter is a closed, ordered series of points, and the lines connecting these points. An alternate embodiment would be a regular shape, such as a circle or oval, with specified defining characteristics (e.g., for a circle, center point and radius). A different embodiment may relax the requirement for a vehicle to be located within the perimeter; in this case, the perimeter would be used for visual reference only. 
     Operation of Flight Plan Editing 
     Flight plan editing mode is the mode used to create and edit flight plan elements. The user enters this mode by clicking on the Flight Plan Editing Mode control  158 . Referring to  FIG. 11 , the Flight Plan Editing Mode control  158  is un-highlighted. The user clicking on that control causes it to highlight, and causes the system to enter Flight Plan Editing Mode; this state is shown in  FIG. 22 . As may be expected, allowing the editing of a Flight Plan while any UAV is following the Flight Plan would result in unpredictable behaviour. Therefore, if any UAV is moving when the user enters Flight Plan Editing Mode, the control system sends instructions to those UAVs, instructing the respective UAVs to cease any motion. 
     In preferred non-limiting exemplary implementation of the present invention, clicking the Waypoint Creation control  236  and clicking on the map where the desired waypoints should be created creates waypoints  171  in those locations, and additionally creates a waypoint route  170  between those waypoints. Waypoints may also be added by entering the co-ordinates of the waypoint on the co-ordinate entry panel  107 . The inter-waypoint vectors  172  are automatically created to create an overall waypoint route  170 . The vectors  172  point from one waypoint to the next one created. This route is automatically added to the current flight plan. 
     This process may be seen in the Figures. In  FIG. 22 , the control station is in Flight Plan Editing Mode. Clicking on the Waypoint Creation control  236  causes that control to be highlighted, and for the system to await the input of a waypoint; this state is shown in  FIG. 23 . Next, the user clicks on a location in the map view, which causes a Waypoint indication  171  to be placed at that location; this is shown in  FIG. 24 . As a subsequent waypoint location is clicked, as in  FIG. 25 , a new waypoint  171  is placed at each clicked location, and an inter-waypoint vector  172  is drawn from the previous waypoint to the most-recently-added waypoint. 
     Optionally, when a waypoint is added near to an existing segment of a waypoint route, the waypoint route creation algorithm may recognize this proximity, and rather than add the waypoint to the end of the route, may instead insert the waypoint between two other waypoints on the waypoint route. 
     Optionally, a waypoint route may be created by clicking the waypoint creation tool and drawing a waypoint route on the map. The waypoints may either be automatically generated based on the flight plan, or an indication to the user may be provided indicating that explicit waypoints are not being shown, or used. 
     A more complex embodiment may allow individual waypoint routes for vehicles. With a particular vehicle selected, as waypoints are added to the map view, they become associated only with the selected vehicle. The waypoint route is generated from these waypoints as per the methods above. The waypoints and waypoint routes for one vehicle are differentiated from the waypoints and waypoint routes for another vehicle either through icon differentiation by vehicle (e.g. blue vs. red waypoint icons, round vs. square waypoint icons) or through ghosting out or changing the icon attributes (color, shape, etc) when a particular vehicle is selected or deselected. For example, when vehicle A is selected, its waypoint icons become highlighted in some way (darker, brighter, etc), while vehicle B&#39;s icons become ghosted out. When vehicle B is selected, its icons become highlighted, while vehicle A&#39;s icons become ghosted out. 
     Another, more complex embodiment may allow multiple global waypoint routes. In this embodiment, as new waypoints are created, the user may draw (or otherwise specify) a waypoint route to move from one of these waypoints to another. Each vehicle may then be directed, through a UI icon or command, to begin following a specific waypoint route. The waypoints for each flight-plan may be differentiated through icon differentiation (e.g. color, icon shape). The flight-plan indications may also be differentiated through color, line width or line style (single line, double line, dashed line). Each vehicle may display, either as a tag attached to its icon or as an indication in its status subpanel, an indication of which waypoint route it is currently following. 
     No-Fly Zones  175  may be created by clicking the No-Fly Zone Creation control  237 , and then clicking on the map where the No-Fly Zone element  176  is to be placed. As each No-Fly Zone element is placed on the map, an inter-element vector  177  is created from the previously-placed element to the most-recently-placed element. When an element is placed on top of the first No-Fly Zone element, the shape is deemed to be closed, and the area bounded by inter-element vectors is deemed to be a No-Fly Zone. This may be seen in  FIG. 26 . 
     A Perimeter  190  may be created in an analogous manner to a No-Fly Zone, using the Perimeter Creation control  241 . 
     Targets  185  and Points Of Interest  180  may be added in a way analogous to the addition of waypoints, using the Target Creation control  239  or the Point Of Interest Creation control  238 , respectively, in place of the Waypoint Creation control  236 . When these elements are added to the map, no inter-element vectors are generated.  FIGS. 1 and 27  show all of these elements. 
     Elements of the Map View 
     As a vehicle  325  moves, its respective representative icon  125  in the map view  105  shown in  FIG. 1  also moves, to represent the actual position of the vehicle  325 . 
     The wind speed indication  150 , if present, is updated with information from the currently controlled vehicle. It is calculated on a per-vehicle basis, from information collected by each vehicle&#39;s sensors  350  and flight control subsystem  330 , and transmitted back to the control station. In an alternate embodiment, the wind speed could be globally calculated. The ground speed indication is calculated per vehicle, and is shown for each vehicle. In alternate embodiments, the ground speed could be shown in a single place, with the value always showing the ground speed for the currently selected vehicle  325 . 
     The Ground Height Indicator and Control 
     In general, the user of a system like this generally doesn&#39;t care about the absolute height of a UAV, but cares about relative heights of UAVs, to be able to prevent collision and to maintain a specific minimum altitude. As well, ground height is not considered a similar dimension to X and Y dimensions; it is measured differently, with different error ranges and error conditions, and is generally considered an adjunct to two-dimensional flight navigation. An immediate at-a-glance view of the heights allows the user to understand the altitude situation quickly. In many situations, the user seldom needs to drill down to details about absolute height during normal flight apart from maintaining a minimum safe altitude, but often needs a general idea of relative heights, and a general idea of height directions (i.e. rising vs. falling). 
     As shown in  FIG. 1 , multiple vehicles  325  may be shown on a single ground height indicator  130 . The placement of each vehicle&#39;s icon  135  on the indicator shows the ground height of that vehicle. In the preferred implementation, the desired ground height control may be integrated with the individual vehicles&#39; ground height indicator icons, so that clicking and dragging the icon moves a ghosted version of the icon  140  to the desired height. There may be multiple desired ground height controls, one for each vehicle  325 , or a global desired ground height control may be raised or lowered to direct a vehicle  325  to rise or lower to the desired ground height. 
     A non-limiting exemplary implementation of the ground height indicator and control slider  130  may be seen in  FIGS. 3 and 4 . In  FIG. 3 , the ground height indicator  130  shows UAVs “Scotty” and “Jenny” both at a ground height of 0, with no desired change in their height. In  FIG. 4 , the user has clicked on UAV Jenny&#39;s ground height indicator icon  135  and dragged it up by clicking without releasing, then pulling the indicator icon  135  up along the ground height slider  130 . This action creates a ground height control  140 , which indicates the desired height for that UAV which in this case is 29 meters. The ground height indicator  135  continues to indicate the current height for the UAV which in this case is 6 meters. 
     Optionally, the ground height indicator  135  for each vehicle  325  may be integrated into the map view icon  125  for that UAV. Essentially, the icon  125  may contain a representation of the ground height. In this embodiment, the drag mechanism for controlling the desired height for the UAV (described above) may still be maintained, or a different method of controlling the UAV&#39;s height may be used. 
     Optionally, the map view may show an indication of maximum flying range. This indication may be a user-defined perimeter, a programmatically determined maximum range (calculated from estimated wireless communications range from the control station, or from measured battery levels and an estimate of power consumption levels), or a combination of the two. 
     Find Me Mode 
     Clicking on the “Find Me” icon  160  causes the control station to shift the map of the map view so that the currently selected vehicle is centered in the view, and causes the “Find Me” icon to become highlighted. When this mode is selected, the currently selected vehicle is always centred in the view, and as the currently selected vehicle moves, the control station scrolls the map view in order to keep the currently selected vehicle in the centre. In  FIGS. 30 and 31 , the map view is scrolled as UAV Jenny  125 , the currently selected vehicle, follows the waypoint route. 
     Follow Me Mode 
     Implementations of the present invention may provide for a follow-me mode that maintains a distance from a vehicle  325  to a ground station  360  which is part of the UAV system. This differs from other implementations where an absolute flight plan is defined in reference to fixed points on a map, or flight plans that involve following a target that exists outside of the aerial system. This is a key difference operationally (the operator has control over the ground station) and in implementation (the ground station may provide information about its own location or movements to the UAV to help the UAV track the ground station). This mode is very useful, for example, for security applications (e.g. following a convoy where the ground station is on-board the convoy or walking around with a backpack ground station for crowd control). With both of these applications, no further control is required once the UAV is in place and following the ground station  360 , in order for the UAV to continue to follow the ground station  360 . 
     In an exemplary, non-limiting implementation, clicking on the “Follow Me” control  165  may place the control for the currently selected vehicle  325  into Follow mode. Upon Follow mode being engaged, the vehicle  325  will calculate and store its current map offset (either as a polar distance/direction offset or as a Cartesian x/y offset) from a ground station  360  or the control station  305 . Then, as long as Follow mode remains active, whenever the calculated offset changes, the vehicle  325  may calculate and move to a new position, such that this new position brings the offset back to the originally stored offset. In other words, the vehicle may move to keep the offset constant, by constantly, frequently, or periodically re-calculating the offset and moving in order to maintain the offset at a defined value or range. This may be accomplished by the ground station  360  implementing the following algorithm: (i) instruct the ground station to report its own position to the control station; (ii) instruct the vehicle to report its own position to the control station; (iii) calculate the offset between the two positions; (iv) monitor the ground station&#39;s position for any changes; and (v) instruct the vehicle  325  to move in such a way so as to bring the current positional offset back to the offset calculated in step (iii). The offset coordination calculation may be calculated by the control station  305 , ground station  360 , or vehicle  325 . Where either the control station  305  or ground station  360  calculates the offset coordination calculation, the control station  305  or ground station  360  may constantly or periodically transmit updated offset information to the vehicle  325 . 
     In  FIG. 33 , Follow Me mode has been activated by clicking on the Follow Me control  165 , and UAV Jenny  125 &#39;s offset from the ground station  126  has been stored. As the ground station  126  is moved to a new position, the control station instructs UAV Jenny  125  to move along with the ground station  126 ; this is shown in  FIG. 34 . 
     Flock Mode 
     As opposed to relying on direct communication between the UAVs (possibly through a type of “swarm” algorithm”) providing a specific multi-UAV follow mode that controls multiple UAVs individually from the single control station of the present invention may simplify controlling multiple UAVs and may result in operation that is more deterministic than otherwise. Such a mode may be used for multiple UAVs following a convoy. For example, the user would not need to reposition UAVs or reorient the cameras of respective UAVS as the multi-UAV UI may provide for controls to direct each UAV to watch a different angle of the convoy or in relation to the convoy, and the user may switch between the respective camera views as needed. 
     Follow mode may be configured to only operate on the currently selected vehicle. Alternatively, at least two Follow modes may exist: a regular single-vehicle Follow mode as just detailed; and a Flock mode, which causes multiple vehicles to all individually calculate and store their offsets, and move as though they were all individually in Follow mode. The user may activate Flock mode by selecting multiple vehicles and then activating Follow mode, or by double-clicking the Follow mode icon (which then places all vehicles into Flock mode), or by holding down the Follow mode icon until a predetermined delay elapses (which then places all vehicles into Flock mode), or by selecting a separate Flock mode icon. 
     Waypoint Flight Mode 
     Waypoint flight mode is the user control mode used for automated control of vehicles. It is different from flight plan edit mode (described above) in that flight plan element editing is not permitted, and the purpose of the mode is control of vehicles rather than editing of flight plans; it is different from manual flight mode (described below) in that all of the flight plan elements created in flight plan edit mode are available for navigation, whereas manual flight mode does not consider flight plan elements and requires direct user input for navigation. 
     Waypoint flight mode may be entered by clicking the Waypoint Flight Mode control  157  in either the map view or the editing map view, shown in  FIG. 1 . Waypoint flight mode may be entered from Manual flying mode or from Flight Plan Editing Mode. As with all such mode changes, clicking on the control causes the control to be highlighted, and causes any other highlighted mode controls to become un-highlighted. For example, when the system is in the state shown in  FIG. 27 , and the user clicks the Waypoint Flight Mode control  157 , the system state changes to that shown in  FIG. 13 . User interface elements that are associated with other modes, such as the co-ordinate entry panel  107  that is used with Flight Plan Editing Mode, are removed from the UI, and are replaced with elements corresponding to Waypoint flight mode, such as the camera panel  110 . 
     In waypoint flight mode, clicking on a waypoint or point of interest causes the currently selected vehicle to begin navigation toward that waypoint. In  FIG. 13 , UAV Jenny  125  is the currently selected vehicle. Clicking on the first waypoint  171  causes UAV Jenny to begin moving toward the first waypoint. 
     Clicking on the Pause icon  166  as shown in  FIGS. 1 and 28  causes the currently selected vehicle to pause its flight movement and hover in position. Optionally, clicking on the Pause icon again may resume the previous navigation. 
     Clicking on the Forward Play icon  167  when the vehicle is positioned at a waypoint causes the vehicle to begin traversing the waypoint route, beginning with the waypoint at which the vehicle is currently positioned, in the direction in which the inter-waypoint vectors are pointing. Similarly, clicking on the Reverse Play icon  168 , when the vehicle is positioned at a waypoint, causes the vehicle to begin traversing the waypoint route, beginning with the waypoint at which the vehicle is currently positioned, but in the opposite direction from Forward Play (e.g. in the opposite direction to which the inter-waypoint vectors are pointing). Referring to  FIG. 28 , UAV Jenny  390  is roughly half-way through the waypoint route  170 , while UAV Scotty  395  is approximately one quarter of the way through the route. For each of these vehicles, the Forward Play icon  167  was clicked when each was at the beginning of the waypoint route. However, noting that UAV Jenny  390  is the currently selected vehicle, if the Reverse Play icon  168  were selected when the system is in the state shown in  FIG. 28 , UAV Scotty  395  would continue to move forward through the waypoint route, while UAV Jenny  390 , being the currently selected vehicle, would be instructed by the control station to move through the waypoints in the reverse direction from what the inter-element vectors  172  indicate. The result is shown in  FIG. 29 ; UAV Scotty  395  is near the end of the waypoint route (having “played” the route forward) while UAV Jenny  390  is near the beginning of the waypoint route (having been instructed part-way through the route to begin “playing” the route in reverse). 
     Optionally, clicking the Forward Play icon may cause the vehicle to traverse the waypoint route from any point along the waypoint route. If there is directional ambiguity at any point on the waypoint route (for instance, if the waypoint route crosses itself), and the Forward Play icon is clicked while the vehicle is positioned in that ambiguous location but not on a waypoint, the direction of traversal will be to continue to the nearest waypoint, or to continue in the direction of previous travel, as selected in a configuration setting. 
     Clicking on the Home icon causes the vehicle to fly directly to the home location, and once it reaches the home location, to hover. The flight home may be at the current altitude, at a specified “fly home” altitude, or at an altitude that is automatically calculated to be optimal. Essentially, the home location is treated as a waypoint for navigation. The home location is set for each individual vehicle, by default, to be the take-off location. Clicking and holding on the Home icon brings up a separate placement mode, similar to waypoint placement, which allows the setting of the home location for the currently selected vehicle. If a home location is selected which is within a specified minimum distance of another vehicle&#39;s home location, an error may be displayed requiring another home location to be chosen, or a warning message may appear allowing the home selection, or no indication may be presented. If available, this feature may be configurable at the control station  305 . 
     Manual Flight Mode 
     An alternate flying mode (“manual mode,” versus the “waypoint mode” in operation in the rest of this document) allows for direct user positioning of the vehicle, without creating a flight plan. The user enters manual mode by clicking the Manual Mode control  156  in either the map view or the editing map view. In this mode, when the user clicks on a location in the map view, the currently selected vehicle flies to that location; when the user releases the click, the vehicle ceases movement. If a flight plan exists, its representations on the map view stay present, but they do not affect control of the vehicle. For example, in manual mode, the user may cause the vehicle to enter a no-fly zone. In an alternate embodiment, in manual mode, if the user&#39;s input would cause the vehicle to breach the boundary of a no-fly zone or of the perimeter, the UI may display a warning, or may prevent the vehicle from acting on the input. 
     Optionally, manual flight mode, waypoint mode and flight plan editing mode may be combined into a single operational mode which allows all of the functionality of each mode, without switching modes. 
     The operation of manual mode may be seen in the Figures. In  FIG. 8 , UAV Jenny&#39;s vehicle icon  125  is shown to be stationary. When the user clicks on a location in the map view, as shown in  FIG. 10 , a destination  380  and a trajectory  385  are drawn in the map view, and the control station sends an instruction to UAV Jenny to begin moving along the trajectory shown. When the user releases the click, the destination  380  and trajectory  385  are removed from the map view, and the control station sends an instruction to UAV Jenny  125  to cease motion. 
     When Find Me mode is activated, Manual flight mode may function slightly differently because the control station  305  is may be constantly scrolling the map to follow the currently selected vehicle.  FIG. 32  shows manual flight mode with Find Me mode activated. Unlike in regular manual flight mode, the trajectory  385  specified by the user in the manner described above effectively provides a direction rather than a destination, and the currently selected vehicle  125  will continue to move in the direction of the trajectory  385  indefinitely, as the map scrolling will constantly move the destination. 
     Video Streaming and Target Locking 
     In a non-limiting exemplary implementation of the present invention, all of the panel states and control sources may be linked between panels except for the video source. The user may choose to separate vehicle control from video control, in order to control multiple UAV cameras in real-time without changing the video source. This may provide for a second UAV to be repositioned while the video from the first UAV is still being streamed, and once the second UAV is in position, the video source can be switched to the second UAV. 
     When one vehicle&#39;s camera icon  230  is selected (by clicking the camera button  230  within the status subpanel  215  for that vehicle), the vehicle&#39;s camera will be the source for the images or video  200  in the camera panel  110 . The camera panel may have icons or menu options for selecting which camera is the source for images or video. Preferably, independent selection of controlled vehicle and camera source is provided. In other implementations, only the video or images from a camera of a currently selected vehicle may be shown in the camera panel. 
     The operation of camera source selection may be seen in the Figures. In  FIG. 6 , UAV Jenny has already been selected for control, and is the source for video. When the user clicks on UAV Scotty&#39;s camera icon  230 , the control station sends an instruction to UAV Jenny to cease transmitting video, and an instruction to UAV Scotty to begin transmitting video. UAV Jenny then ceases the transmission of video, and UAV Scotty begins transmitting video to the control station. The control station then displays this video, in real-time as it arrives from UAV Scotty, in the camera image area  200  in the camera panel  110 . As well, the control station causes the camera icon  230  in UAV Jenny&#39;s Status subpanel  215  to become un-highlighted, and causes the camera icon  230  in UAV Scott&#39;s Status subpanel  215  to become highlighted, to indicate the source of the video to the user. This resulting state is shown in  FIG. 7 . 
     Alternatively, multiple windows or panels may be presented streaming video from each UAV simultaneously. However, such an implementation may be more distracting if the user only wants video from one UAV (as much of the time, the video would not be of anything of interest), and would consume considerably more bandwidth, which may be at a premium. However, in some situations it may be advantageous to be able to view video streams from multiple sources simultaneously. 
     Target locking can be activated in at least two ways. The first way uses the map view. In the map view, when the target lock control icon is clicked, a target lock icon may be placed at any location on the map. This specifies a target for the currently controlled vehicle, and the vehicle may take action based on that input. In the current embodiment, the target is assumed to be at ground height (with the ground height being extrapolated from the vehicle&#39;s take-off height). In an alternate embodiment, the target height may be specified by the user (relative to ground height or current vehicle height), or may be calculated from geographic data. If the vehicle whose target is being modified is not currently streaming video, target locking using the map view does not affect whatever video may currently be streamed. If the vehicle in question is currently streaming video, the video stream&#39;s camera angle may change if the target is changed. 
     The second method for target locking uses the camera panel. If the target lock control is clicked, the target is assumed to be in the centre of the current field of view of the controlled vehicle&#39;s camera, at ground height, and the system proceeds as though the target lock icon had been placed in the corresponding location in the map view. 
     When target lock is activated from either the map view or from the camera panel, the target lock icon may appear in the map view, positioned to show the location of the target. The target may be at least initially assumed to be at ground height, but it may be possible to provide an altitude indication for the target as well. Preferably, the target lock icon remains on the map view even as other vehicles are selected. Alternatively, where targets are associated with specific vehicles, a target lock icon for a given vehicle may disappear, or may be ghosted out or have its color changed, when other vehicles are selected. 
     The camera panel&#39;s target lock preset selectors may be used to store and then recall target lock presets. When the user clicks and holds one of the selectors, after a short predetermined hold delay, the current target is assigned to that selector. When the user later clicks on that selector but does not hold for the duration of the hold delay, that target lock preset&#39;s location is recalled, the current target is assigned the location and values stored in that preset, and the system follows the same process as though that target had just been created in the map view. 
     Preferably, the target lock presets are assigned per vehicle, and when a different vehicle is selected, the presets for that vehicle are made available via the selectors. Alternatively, the target lock presets are global presets, retaining their positions and values when a different vehicle is selected. 
     The operation of target locking may be seen in the Figures. In  FIG. 6 , there is no target locked, and UAV Jenny is already selected for control. The user then clicks on the Target Lock icon  161 , and then clicks in the map view to place a target  185 , as shown in  FIG. 8 . In this embodiment, the target shown is always the target for the selected UAV.  FIG. 9  shows the same setup as  FIG. 8 , but with UAV Scotty selected as the source for the camera; the target  185  shown is still the target for UAV Jenny, because UAV Jenny is the UAV selected for control. 
     Status Panel and Status Subpanel Elements 
     The vehicle name indicator in each status subpanel serves as the mechanism for selecting a vehicle for command. Clicking on the name causes that name to be highlighted, and causes that vehicle to be selected. Any previously-selected vehicle will be deselected, and that previously-selected vehicle&#39;s name will be un-highlighted. An alternate embodiment may use clicking on a vehicle&#39;s icon in the map view to select that vehicle for command.  FIG. 5  shows UAV Scotty as having been previously selected. Clicking on UAV Jenny&#39;s vehicle name indicator  220  causes UAV Jenny to become selected for control, and for UAV Jenny&#39;s status subpanel  215  to become highlighted; this is shown in  FIG. 6 . As well, UAV Jenny&#39;s vehicle location icon  125  in the map view is also made highlighted, as is UAV Jenny&#39;s ground height icon  135 . At the same time, UAV Scotty&#39;s status subpanel  215  is made un-highlighted, as are UAV Scotty&#39;s vehicle location icon  125  and UAV Scotty&#39;s ground height icon  135 . These changes are all seen in  FIG. 6 . 
     The vehicle status icon  230  changes to indicate the state of each vehicle. In the preferred embodiment, the statuses indicated are landed (vehicle is on the ground), spinning up (vehicle is getting ready to take off), hovering (the vehicle is flying but is stationary relative to the ground), moving (the vehicle is flying and is moving relative to the ground), going home (the vehicle is flying, moving relative to the ground, and has its home base as its destination; this status superseded “moving”) and landing (the vehicle is in the process of landing). Other embodiments may include indications for target following (the vehicle is flying and is following a target), vehicle following (the vehicle is flying and is following another vehicle), following flight-plan (the vehicle is flying and is following a flight-plan), in distress (the vehicle is encountering a situation considered unfavorable) or out of order (the vehicle is inoperable). 
     Each Status Subpanel  215  may present additional information, such as indicators for wireless modem signal strength (a measure of how strong the wireless telecommunications link to/from the vehicle is), GPS lock quality (a measure of how well the vehicle is able to triangulate its position) and error information (additional information on the last error situation encountered) shown on this panel. Alternatively, the Status Subpanel  215  may only show some of these indicators, and when the user clicks on the status icon, an Additional Information panel may open below it, with the remainder of the information displayed in this Additional Information panel. A control is also provided to close this Additional Information panel. If there is not room in the Status Panel to open this Additional Information panel, the least-recently-used Additional Information panel will close to accommodate the new panel. In an alternate embodiment, a separate window which opens on top of the UI may display this information. 
     Optionally, some or all of the information from the Status Subpanel may be displayed as part of the UAV&#39;s map view icon  125 . For example, an indicator may be present as part of the icon  125  to show the battery level or estimated remaining flight time. 
     The battery charge/fuel icon  225  in the status panel indicates the estimated remaining flight time, with the flight time either estimated by the vehicle or by the control station. In alternate embodiments, it could show actual charge or fuel levels on the vehicle. 
     The memory status icon  226  in the Status Panel indicates the status of the amount of available computer data storage space (whether in volatile or non-volatile form) on the vehicle. Memory on the vehicle is used to store video, still images, sensor data, flight logs, and any other data that may be generated on (or relayed to) the vehicle. In the preferred embodiment, the status shows multiple levels of memory availability (e.g. “high,” “medium” and “low”) through one indication (e.g. color), and a more granular indication of availability through a bar graph-like indication. In an alternate embodiment, the status is a binary indication of high availability (amount of available memory is at or above a certain threshold) vs low availability (amount of available memory is below a certain threshold). The amount of memory available or used may be indicated, or an indication of how much video or flying time there is room for in the vehicle&#39;s memory may be provided. 
     The individual stop buttons  235  in the Status Subpanels act on the specific vehicle associated with that subpanel. This button may be only visible and available to be selected once the global stop button has been pressed once (see below). On the first press of the stop button, the vehicle in question may turn off its sonar, halt its progress along the flight plan, and present a warning about its having stopped (“stopped” state). Referring to  FIG. 18 , which shows UAV Scotty&#39;s stop button  235  having been pressed once, it may be noted that the control station has displayed a warning in UAV Scotty&#39;s Status Subpanel  215 . On the second press of the button  235 , the vehicle may immediately initiate a landing procedure (“landing” state). Referring to  FIG. 19 , which shows UAV Scotty&#39;s stop button having been pressed twice, it may be noted that UAV Scotty&#39;s ground height indicator  135  shows a lower height than prior to the second press of the stop button (i.e. the state in  FIG. 18 ). On the third press of the button, the vehicle may immediately powers down its motors (known as the “emergency stop” state). Referring to  FIG. 20 , which shows UAV Scotty&#39;s stop button having been pressed three times, it may be noted that UAV Scotty&#39;s ground height indicator  135  has dropped to zero. 
     In alternate embodiments of the individual stop button, one or more of these states may be eliminated, with the number of presses being re-assigned to the remaining states. Other embodiments may introduce additional or modified states, such as a “sensor stop” state (continue along any flight-plan being followed, but with the sensor or camera disabled). 
     The global stop button  220  acts on all vehicles. The first click on this button causes control station to instruct all vehicles to stop moving, flying with no further vertical or horizontal motion until otherwise instructed. The initial click on the global stop button also makes the individual stop buttons visible and available to be clicked in each vehicle&#39;s Status Subpanel. On each subsequent click, the following algorithm may be followed individually by each vehicle: (1) if the vehicle is in Hover position (meaning at Hover height, which is a pre-determined height from the ground, usually 1 to 2 meters), the vehicle initiates its landing procedure; (2) if the vehicle is at Pre-hover height (a larger pre-determined height from the ground, usually 10 meters) or less, but is not in Hover position, the vehicle descends into Hover position; and (3) if the vehicle is not at Pre-hover height or less, the vehicle descends by the Stop Descend height (a pre-determined height, usually 10 meters), unless such a descent would bring the vehicle to below Hover position, in which case the vehicle descends into Hover position. 
     Alternate embodiments for the global stop may include “emergency stop all” (wherein clicking the global stop button would act equivalently to clicking each individual stop button) or “stop, return home and land” (wherein clicking the global stop button would stop movement for all vehicles, set their individual destinations to their home base, and land upon arrival at the home base). 
     It will be appreciated by those skilled in the art that other variations of the embodiments described herein may also be practiced without departing from the scope of the invention. Other modifications are therefore possible. 
     The contents of the  FIGS. 3 to 34 , showing exemplary, non-limiting implementations of the present invention will now be summarized. 
       FIG. 3  shows the control station UI in manual flying mode, with UAVs Scotty and Jenny on the ground. Scotty is the currently selected UAV, while Jenny is the source of the video. This can be seen in the status subpanels on the lower right of the UI as well as in the map view icons: Scotty&#39;s whole status subpanel is highlighted yellow, and Scotty&#39;s icon in the map is highlighted with red, indicating that Scotty is selected for control. Jenny&#39;s status subpanel is not highlighted, but Jenny&#39;s camera icon (in the status subpanel) is highlighted, meaning that Jenny is the source for the video/images in the upper right. Jenny&#39;s icon in the map view has a green highlight for the direction that the camera is facing, which highlight indicates that Jenny&#39;s camera is the source for video, and which icon indicates the direction that the camera is facing. The ground height control indicates that both UAVs are on the ground (at height 000). 
     Similar to  FIG. 3 ,  FIG. 4  shows Scotty has taken off and Jenny is now selected for control (see status subpanel and map icon highlighting). Jenny&#39;s desired ground height slider control is shown being dragged up to 029 meters, while Jenny is still barely off the ground at 006 meters. 
       FIG. 5  follows from  FIG. 4 . Scotty is now once again selected for control, which switches the status subpanel and map icon highlighting again, and shows the Scotty&#39;s desired ground height control on the ground height slider. 
       FIG. 6  follows from  FIG. 5 . Only change is that Jenny is now selected for control. 
       FIG. 7  follows from  FIG. 6 . Only change is that Scotty is now the source for video (and since it doesn&#39;t have a functioning video camera in this demo, there&#39;s just black). The camera icons in the status subpanels have swapped highlighting to show this. 
       FIG. 8  also follows from  FIG. 6 . A target is placed in front of Jenny on the map. 
       FIG. 9  follows from  FIG. 8 . The source for video is switched from Jenny to Scotty. The target is still shown, as changing the video source doesn&#39;t affect that. 
       FIG. 10  follows from  FIG. 8 . With Jenny selected for control, clicking and holding on a destination creates a destination and trajectory for Jenny to move. This is the central use of manual flying mode. 
       FIG. 11  follows from  FIG. 10 . As soon as the pointer is released (ie the click is released), the destination and trajectory disappear, and UAV Jenny comes to a halt (still hovering at 13 meters, as per the ground height indicator). 
       FIG. 12  shows the control station UI still in manual mode, but the map now has the flight plan built in  FIGS. 22-27 . 
       FIG. 13  follows from  FIG. 12 . The user has clicked the Waypoint flying mode control (2nd icon down from top left), and the system is now in Waypoint flying mode. The UAVs are hovering in stationary positions. 
       FIG. 14  follows from  FIG. 13 . The user has clicked on the first waypoint (WP-00) and Jenny (the currently selected UAV) is heading towards it. When it reaches the first waypoint, it by default will begin “playing” the route forward, moving through the waypoints in the direction indicated by the inter-waypoint vectors. 
       FIG. 16  shows the control station UI in manual mode with the UAVs in hovering positions. 
       FIG. 15  follows from  FIG. 16 . Global Stop (at bottom right) has been pressed once resulting in all UAVs coming to a halt, and Individual stop buttons (marked “kill”, in the status subpanels) are revealed. 
       FIG. 17  follows from  FIG. 15 . Global Stop is pressed a second time and all UAVs descend by 10 meters. 
       FIG. 18  follows from  FIG. 17 . Individual stop (“kill”) is pressed once for UAV Scotty. Sonar is turned off, and the UAV hovers at the current height. A warning is displayed in the status subpanel. 
       FIG. 19  follows from  FIG. 18 . Individual stop for UAV Scotty is pressed a second time. Scotty begins an automated landing. 
       FIG. 20  follows from  FIG. 19 . Individual stop for UAV Scotty is pressed a third time. Scotty immediately powers down all motors and falls to the ground. 
       FIG. 21  shows the control station UI showing UAV Scotty encountering a critical condition during flight. A warning is displayed in the status subpanel along with “Home and land” and “Ignore” options, which cause the UAV to fly back to home base and initiate landing, or ignore the warning, respectively. 
       FIG. 22  follows from  FIG. 11 . The user has clicked the Flight Planning Mode control near the upper-left; the control is highlighted, and the UI switches into Flight Planning Mode. 
       FIG. 23  follows from  FIG. 22 . The user has clicked the Waypoint creation control; the control is highlighted, and the UI now allows the addition of waypoints. 
       FIG. 24  follows from  FIG. 23 . The user has clicked on a location on the map, and a waypoint has been added there. 
       FIG. 25  follows from  FIG. 24 . The user has clicked on a second location on the map. A waypoint has been added there, and an inter-waypoint vector has been drawn from the previously added waypoint to the more-recently added waypoint. 
       FIG. 26  follows from  FIG. 25 . The user has added a number of waypoints, and has then clicked the No Fly Zones creation control. Following that, the user has clicked on several locations on the map to create no-fly zone elements. The elements are joined by no-fly zone inter-element vectors which form a bounded shape that encloses the no-fly zone. 
       FIG. 27  follows from  FIG. 26 . The user has added some POIs (points of interest), some targets, and a perimeter. These are all added in a similar way to how waypoints and no-fly zones are created. 
       FIG. 28  follows from  FIG. 14 . The two UAVs have been instructed to fly through the waypoints, “playing” the route forward. 
       FIG. 29  follows from  FIG. 28 . Immediately after  FIG. 28 , UAV Scotty has continued playing the route forward, while UAV Jenny (the currently selected UAV) has been instructed to “play” the route in reverse through the user clicking on the Reverse icon. UAV Jenny is shown to be closer to the start of the waypoint route, while UAV Scotty is shown to be near the end of the waypoint route. 
       FIG. 30  shows the control station UI in Waypoint flying mode with Find Me mode turned on. UAV Jenny begins playing the waypoint route forward. With Find Me mode turned on, the currently selected UAV is always at the centre of the map. 
       FIG. 31  follows from  FIG. 30 . UAV Jenny continues playing the waypoint route forward. UAV Jenny&#39;s icon has not moved relative to the UI, but the map has shifted in the background as UAV Jenny has moved through the waypoint route. 
       FIG. 32  shows the control station UI in Manual flying mode with Find Me mode turned on such that the destination and trajectory indications are working differently than in regular manual flying with Find Me mode turned off, as shown in  FIG. 10 . The user clicks and holds a trajectory, and the UAV moves towards it. However, as the map scrolls under the destination (since the UI is in Find Me mode), the “destination” is never reached, so the control is simply a trajectory control. The UAV stops moving and hovers as soon as the user releases the click. 
       FIG. 33  shows the control station UI with Follow Me mode turned on. The offset to the ground station (indicated as a triangle icon south-west of UAV Jenny) is maintained, and as the ground station moves, the UAV is instructed to move to maintain that offset. 
       FIG. 34  follows from  FIG. 33 . Follow Me mode is still turned on. The ground station has moved, and UAV Jenny has moved to maintain its offset to the ground station. 
     The present system and method may be practiced in various embodiments. A suitably configured computer device, and associated communications networks, devices, software and firmware may provide a platform for enabling one or more embodiments as described above. By way of example,  FIG. 36  shows a generic computer device  500  that may include a central processing unit (“CPU”)  502  connected to a storage unit  504  and to a random access memory  506 . The CPU  502  may process an operating system  501 , application program  503 , and data  523 . The operating system  501 , application program  503 , and data  523  may be stored in storage unit  504  and loaded into memory  506 , as may be required. Computer device  500  may further include a graphics processing unit (GPU)  522  which is operatively connected to CPU  502  and to memory  506  to offload intensive image processing calculations from CPU  502  and run these calculations in parallel with CPU  502 . An operator  507  may interact with the computer device  500  using a video display  508  connected by a video interface  505 , and various input/output devices such as a keyboard  510 , mouse  512 , and disk drive or solid state drive  514  connected by an I/O interface  509 . In known manner, the mouse  512  may be configured to control movement of a cursor in the video display  508 , and to operate various graphical user interface (GUI) controls appearing in the video display  508  with a mouse button. The disk drive or solid state drive  514  may be configured to accept computer readable media  516 . The computer device  500  may form part of a network via a network interface  511 , allowing the computer device  500  to communicate with other suitably configured data processing systems (not shown). 
     In particular, the control station  305  may be implemented by computer device  500 , which may communicate with the ground stations  360  and the UAVs  325 . Communications may occur over a wireless network, such as an ad-hoc 802.11b/g link (optionally employing wireless encryption through WEP or WPA). Where no ground station is present, the control station  305  may communicate directly to the UAVs  325  over the wireless network. If a ground station is present, the control station  305  may communicate with the ground station wirelessly as well, and the ground station may relay communications from the control station  305  to the UAVs  325 . Communications between ground station  360  and UAVs may be via a 900 MHz proprietary protocol for increased range. Using this protocol, an approximate maximum range of communication between control station  305  and UAV  325  or ground station  360  and UAV  325  is 15 km. Other wireless communication protocols and networks may also be used, including satellite communications, which may have different maximum communication ranges. The communication range may also be affected by the type or elevation of terrain over which the wireless communications must travel. When employing the 900 MHz proprietary protocol for communication, security features, including encryption, may also be enabled. 
     Maximum vertical separation between the control station  305  or ground station  360  and UAVs  325  may depend upon both the capabilities of the wireless communications, as described, and on the available battery power in the respective UAV  325 . A minimum amount of battery power may be required for the UAV  325  to perform a controlled descent back to the ground. Controlling descent may consume more battery power depending on wind, terrain, and other factors. It is preferable that the UAV  325  be configured with a battery of sufficient capacity to allow for a controlled descent from at least approximately a 500 m.    
     Each UAV  325  may comprise operations control (e.g. a computer running a multitasking operating system), flight control (to handle wind compensation, individual rotor speeds, etc), navigation control (to keep track of current location via GPS, creating a velocity vector from the current location to the destination, correcting if the UAV drifts off course), camera(s) (hardware module, software interface, image capture, video stream encoding), sensor(s) (sonar for ground height, atmospheric sensors for air pressure, GPS hardware for location tracking, any payload sensors that may be attached) and Communications (802.11 link to ground station, 900 MHz modem link to ground station). 
     In manual flying mode, the control station  305  may send a ground velocity vector to the UAV  325 . The UAV  325  (with its GPS and onboard sensors) manages orientation, motor speeds, wind compensation, etc, and flies in the direction and speed specified. 
     In waypoint flying mode, the control station  305  may send a ground location (as GPS coordinates) to the UAV  325 . The UAV  325  (with its GPS and onboard sensors, and with pre-defined settings like maximum velocity, etc) calculates (and regularly recalculates) the necessary velocity vector to reach the target coordinates. 
     In further aspects, the disclosure provides systems, devices, methods, and computer programming products, including non-transient machine-readable instruction sets, for use in implementing such methods and enabling the functionality described previously. 
     Although the disclosure has been described and illustrated in exemplary forms with a certain degree of particularity, it is noted that the description and illustrations have been made by way of example only. Numerous changes in the details of construction and combination and arrangement of parts and steps may be made. Accordingly, such changes are intended to be included in the invention, the scope of which is defined by the claims. 
     Except to the extent explicitly stated or inherent within the processes described, including any optional steps or components thereof, no required order, sequence, or combination is intended or implied. As will be will be understood by those skilled in the relevant arts, with respect to both processes and any systems, devices, etc., described herein, a wide range of variations is possible, and even advantageous, in various circumstances, without departing from the scope of the invention, which is to be limited only by the claims.