Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SWARM PATH PLANNER SYSTEM FOR VEHICLES
Document Type and Number:
WIPO Patent Application WO/2018/190833
Kind Code:
A1
Abstract:
A system for determining optimal paths without collision through a travel volume for a swarm of vehicles is disclosed. The system determines a travel path for the swarm leader vehicle using a minimal cost path derived from various measures of environmental cost for avoiding objects in traveling from leader location to target location. The system also determines, for each empty neighbor location of each follower vehicle, relational costs for follower vehicle travel relative to leader vehicle travel. The various measures of relational cost seek to maintain a prescribed positional relationship between each follower vehicle and the leader vehicle given the leader vehicle travel path. Based on various measures of environmental and relational cost, the system determines the best travel path for the each follower vehicle relative to the leader vehicle.

Inventors:
PAGLIERONI DAVID (US)
BEER N (US)
CHAMBERS DAVID (US)
Application Number:
PCT/US2017/027253
Publication Date:
October 18, 2018
Filing Date:
April 12, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
PAGLIERONI DAVID W (US)
BEER N REGINALD (US)
International Classes:
G05D1/10
Foreign References:
US20160041208W2016-07-06
Other References:
CHI TING ET AL: "A strategy of multi-robot formation and obstacle avoidance in unknown environment", 2016 IEEE INTERNATIONAL CONFERENCE ON INFORMATION AND AUTOMATION (ICIA), IEEE, 25 August 2016 (2016-08-25), pages 1455 - 1460, XP033053597, DOI: 10.1109/ICINFA.2016.7832048
PAUL T ET AL: "UAV formation flight using 3D potential field", CONTROL AND AUTOMATION, 2008 16TH MEDITERRANEAN CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 25 June 2008 (2008-06-25), pages 1240 - 1245, XP031308432, ISBN: 978-1-4244-2504-4
FEI YAN YI-SHA LIU JI-ZHONG XIAO: "Path Planning in Complex 3D Environments Using a Probabilistic Roadmap Method", INTERNATIONAL JOURNAL OF AUTOMATION AND COMPUTING, ZHONGGUO KEXUE ZAZHISHE, CN, vol. 10, no. 6, 31 December 2013 (2013-12-31), pages 525 - 533, XP009501213, ISSN: 1476-8186, [retrieved on 20140522], DOI: 10.1007/S11633-013-0750-9
RIZQI AHMAD ATAKA AWWALUR ET AL: "Path planning and formation control via potential function for UAV Quadrotor", 2014 INTERNATIONAL CONFERENCE ON ADVANCED ROBOTICS AND INTELLIGENT SYSTEMS (ARIS), IEEE, 6 June 2014 (2014-06-06), pages 165 - 170, XP032636399, DOI: 10.1109/ARIS.2014.6871517
XU SHENGDONG ET AL: "Real-time 3D navigation for autonomous vision-guided MAVs", 2015 IEEE/RSJ INTERNATIONAL CONFERENCE ON INTELLIGENT ROBOTS AND SYSTEMS (IROS), IEEE, 28 September 2015 (2015-09-28), pages 53 - 59, XP032831575, DOI: 10.1109/IROS.2015.7353354
E. W. DIJKSTRA: "A Note on Two Problems in Connexion with Graphs", NUMERISCHE MATHEMATIK, vol. 1, 1959, pages 269 - 271, XP000837527, DOI: doi:10.1007/BF01386390
RAVINDRA K. AHUJA; KURT MEHLHORN; JAMES B. ORLIN; ROBERT E. TARJAN: "Faster Algorithms for the Shortest Path Problem", JOURNAL ASSOC. COMPUT. MACH., vol. 37, no. 2, April 1990 (1990-04-01), pages 213 - 223, XP058127210, DOI: doi:10.1145/77600.77615
PETER HART; NILS NILSSON; BERTRAM RAPHAEL: "A Formal Basis for the Heuristic Determination of Minimum Cost Paths", IEEE TRANSACTIONS ON SYSTEMS SCIENCE AND CYBERNETICS, vol. 4, no. 2, 1968, pages 100 - 107, XP011163309
CALVIN MAURER; RENSHENG QI; VIJAY RAGHAVAN: "A Linear Time Algorithm for Computing Exact Euclidean Distance Transforms of Binary Images in Arbitrary Dimensions", IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, vol. 25, no. 2, February 2003 (2003-02-01), pages 265 - 270, XP011095636, DOI: doi:10.1109/TPAMI.2003.1177156
DAVID W. PAGLIERONI; FARANAK NEKOOGAR: "Matching Random Tree Models of Spatio-Temporal Patterns to Tables or Graphs", PROC. IEEE CONF. COMPUTATIONAL INTELLIGENCE AND DATA MINING (CIDM), HONOLULU, HI, 1 April 2007 (2007-04-01), pages 560 - 567, XP031095491
Attorney, Agent or Firm:
PIRIO, Maurice, J. et al. (US)
Download PDF:
Claims:
CLAIMS

1 . A method performed by a computing system for identifying, for a swarm of vehicles, travel paths through a travel volume having empty locations and object locations, the method comprising:

for each pair of empty locations of the travel volume, calculating an environmental measure associated with traveling between the empty locations, the environmental measure being based on object locations near the pair of empty locations;

determining a leader travel path for a leader vehicle of the swarm to travel from a leader location to a target location based on the environmental measures; for each pair of a follower location of a follower vehicle and an empty neighbor location, calculating a relational measure for the follower vehicle associated with traveling from the follower location to the empty neighbor location, the relational measure associated with traveling from the follower location to the empty neighbor location being based on maintaining a positional relationship with the leader vehicle based on the leader travel path; and

for each follower vehicle, identifying a follower travel path for the follower vehicle to follow the leader vehicle based on the environmental measures and the relational measures.

2. The method of claim 1 wherein the identifying of a travel path comprises applying a minimal cost path algorithm to a cost graph for traveling from any location to a specific destination location, where vertices represent locations, edges between vertices represent that the locations of the vertices are neighbors, and costs derived from the environmental measures are associated with the edges.

3. The method of claim 1 wherein the swarm travels through a travel volume of voxels with each location being at the center of a voxel.

4. The method of claim 1 further comprising:

specifying as a leader travel direction the direction along the leader travel path; and for each of the follower vehicles, specifying as a follower travel direction the direction along the follower travel path for that follower vehicle.

5. The method of claim 1 wherein the environmental measures are based on locations of objects that the vehicles are to avoid.

6. The method of claim 5 wherein the environmental measures associated with stationary vehicles are calculated prior to travel and the environmental measures associated with moving vehicles are calculated during travel.

7. The method of claim 1 wherein the environmental measures are selected from a set consisting of a distance transform measure, an object density measure, and a zone permeability measure.

8. The method of claim 1 wherein relational measures are selected from a set consisting of an easting separation measure, a northing separation measure, a height separation measure, a distance separation measure, an azimuth separation measure, and an elevation angle separation measure.

9. The method of claim 8 wherein the relational measures are treated as random variables governed by probability density functions.

10. The method of claim 8 wherein calculation of the relational measures and determination of the travel paths are performed at regular time intervals during travel of the swarm.

1 1 . The method of claim 10 wherein calculation of the environmental measures associated with moving objects is performed at regular time intervals during travel of the swarm.

12. The method of claim 10 wherein the regular time interval is adjusted based on risk tolerance of a vehicle colliding with an object.

13. The method of claim 10 wherein each vehicle of the swarm determines its travel path during each time interval.

14. The method of claim 13 wherein the leader vehicle of the swarm determines the leader travel path during each time interval.

15. The method of claim 14 wherein each follower vehicle calculates its relational costs during each time interval.

16. The method of claim 1 wherein some environmental cost measures are updated based on locations of objects that are within a specified remote distance of the current vehicle location.

17. The method of claim 16 wherein the remote distance is adjusted based on risk tolerance of a vehicle colliding with an object.

18. The method of claim 1 wherein the swarm is a leader swarm and a follower swarm of vehicles follows the leader swarm and wherein a leader vehicle of the follower swarm follows a designated vehicle in the leader swarm.

19. The method of claim 18 further comprising calculating relational measures for the leader vehicle of the follower swarm associated with traveling from a leader location of the follower swarm to a neighboring location, the relational measures based on the leader vehicle of the follower swam following the travel path of a designated leader vehicle from the leader swarm.

20. The method of claim 1 further comprising directing each vehicle to travel in the direction of its travel direction.

21 . A method performed by a computing system for identifying a travel path based on locations for a vehicle to travel from a current location to a target location, the method comprising:

accessing indications of object locations associated with objects that the vehicle is to avoid and empty locations not associated with objects that the vehicle is to avoid;

for each empty location and each empty neighbor location, calculating a cost of traveling from that empty location to that empty neighbor location; and applying a minimal cost path algorithm to a graph to determine a travel path between the current location and the target location, where vertices of the graph represent locations, edges of the graph connect empty neighbor voxels, and the costs are associated with the edges.

22. The method of claim 21 further comprising specifying a travel direction for the vehicle as the direction of the neighbor location of the vehicle location that is along the travel path.

23. The method of claim 22 further comprising directing the vehicle to travel in the travel direction.

24. The method of claim 21 wherein the costs are based on a distance transform that identifies the distance from an empty location to the nearest object location.

25. The method of claim 24 further comprising:

prior to travel, calculating stationary costs based on stationary objects; and during travel, calculating moving costs based on moving objects;

wherein the calculating calculates the cost for traveling from an empty location to an empty neighbor location to be a minimum of the stationary cost and the moving cost for the empty neighbor location.

26. The method of claim 21 wherein the costs are calculated based on environmental measures that include a transform distance measure, an object density measure, and a zone permeability measure.

27. The method of claim 26 wherein the calculating calculates the cost of traveling from an empty location to an empty neighbor location to be a minimum of a cost associated with the transform distance measure, a cost associated with the object density measure, and a cost associated with the zone permeability measure.

28. The method of claim 21 wherein the minimal cost path algorithm is a Dijkstra- based algorithm.

29. The method of claim 26 wherein the minimal cost path algorithm employs a Fibonacci heap.

30. The method of claim 21 further comprising, for each of a plurality of time intervals:

calculating current costs based on a current vehicle location, a current target location, and current object locations; and

applying the minimal cost path algorithm based on the current costs to identify a current travel path.

31 . The method of claim 30 further comprising, for each of the plurality of time intervals, specifying a current travel direction as the direction of the empty neighbor location of the current vehicle location that is along the current travel path.

32. The method of claim 30 wherein a time interval is adjusted based on risk tolerance of the vehicle colliding with an object.

33. The method of claim 21 wherein the objects exclude objects that are more than a remote distance from the current vehicle location.

34. The method of claim 33 wherein the remote distance is adjusted based on risk tolerance of the vehicle colliding with the object.

35. A computing system for identifying, for a swarm of vehicles, travel paths through a travel volume of voxels, the computing system comprising:

computer-readable storage media storing computer-executable instructions for controlling the computing system to:

calculate environmental costs associated with traveling from each of a plurality of empty voxels to empty neighbor voxels;

determine a leader travel path for a leader vehicle of the swarm based on environmental costs to travel from a leader voxel to a target voxel; direct the leader vehicle to travel along the leader travel path; and for each follower vehicle of the swarm,

calculate relational costs associated with traveling from a follower voxel to empty neighbor voxels, the relational costs based on cost of following the leader travel path;

identify a follower travel path for the follower vehicle based on the environmental costs and the relational costs to follow the leader vehicle; and

direct the follower vehicle to travel along the follower travel path; and processors that execute the computer-executable instructions stored in the computer-readable storage media.

36. The computing system of claim 35 wherein the identification of a travel path applies a minimal cost path algorithm to a graph representation of the voxels where vertices represent voxels, edges between vertices represent empty neighbor voxels, and the costs are associated with the edges.

37. The computing system of claim 36 wherein the minimal cost path algorithm employs a Dijkstra algorithm.

38. The computing system of claim 35 wherein the environmental costs are based on object locations of objects that the vehicles are to avoid.

39. The computing system of claim 35 wherein the environmental costs associated with stationary vehicles are calculated prior to travel and the environmental costs associated with moving vehicles are calculated during travel.

40. The computing system of claim 35 wherein the environmental costs are calculated based on environmental measures selected from a group consisting of a transform distance measure, an object density measure, and a zone permeability measure.

41 . The computing system of claim 35 wherein the relational costs are calculated based on relational measures selected from a group consisting of an easting separation measure, a northing separation measure, a height separation measure, a distance separation measure, an azimuth separation measure, and an elevation angle separation measure.

42. The computing system of claim 35 wherein the relational costs are treated as random variables governed by probability density functions.

43. The computing system of claim 35 wherein the computer-executable instructions control the computing system to calculate the relational costs and identify the travel paths during travel of the swarm at time intervals.

44. The computing system of claim 43 wherein each vehicle of the swarm includes a computer-readable storage medium and a processor and wherein the computer-executable instructions, when executed by the processor of a vehicle, identify a travel path for the vehicle during each time interval.

45. The computing system of claim 44 wherein the computer-executable instructions, when executed by the processor of the leader vehicle and the follower vehicles of the swarm, determine the leader travel path during each time interval.

46. The computing system of claim 35 wherein the swarm is a leader swarm and a follower swarm of vehicles follows the leader swarm, and wherein a leader vehicle of the follower swarm follows a designated leader vehicle of the leader swarm.

47. A computing system for identifying a travel path through a travel volume of voxels for a vehicle to travel from a current voxel to a target voxel, the computing system comprising:

computer-readable storage media storing computer-executable instructions for controlling the computing system to:

access indications of object voxels associated with objects that the vehicle is to avoid and empty voxels not associated with objects that the vehicle is to avoid;

for each empty voxel and each empty neighbor voxel of the empty voxel, calculate a cost of traveling from that empty voxel to that empty neighbor voxel;

apply a minimal cost path algorithm to a cost graph to determine a travel path where vertices of the cost graph represent voxels, edges of the cost graph connect empty voxels of empty neighbor voxels, and the costs are associated with the edges; and

direct the vehicle to travel in the direction of the travel path; and processors that execute the computer-executable instructions stored in the computer-readable storage media.

48. The computing system of claim 47 wherein the costs are based on a distance transform measure that is based on the distance from an empty voxel to the nearest object voxel.

49. The computing system of claim 47 wherein the computer-executable instructions control the computing system to:

prior to travel, calculate stationary costs based on stationary objects; and

during travel, calculate moving costs based on moving objects;

wherein the cost for traveling from an empty voxel to an empty neighbor voxel is the minimum of the stationary cost and the moving cost for the empty neighbor voxel.

50. The computing system of claim 47 wherein the costs are based on environmental measures that include a transform distance measure, an object density measure, and a zone permeability measure.

51 . A method performed by a computing system for identifying a travel path for a follower vehicle to follow a leader vehicle through a travel volume of voxels, the method comprising:

calculating an environmental cost associated with traveling from each of a plurality of empty voxels to empty neighbor voxels;

calculating a relational cost associated with traveling from the follower voxel to empty neighbor voxels;

identifying a follower travel path for the follower vehicle based on the environmental cost and the relational cost; and

directing the follower vehicle to travel along the follower travel path.

52. The method of claim 51 wherein the identification of the follower travel path applies a minimal cost path algorithm to a graph representation of the voxels where vertices represent voxels, edges between the vertices represent empty neighbor voxels, and the costs are associated with the edges.

53. The method of claim 51 wherein the calculating of the environmental cost, the calculating of the relational cost, the identifying of the follower travel path, and the directing of the follower vehicle are performed at time intervals.

54. The method of claim 51 wherein the relational cost is based on cost of the follower vehicle following the leader vehicle.

55. The method of claim 51 wherein the environmental cost is based on cost of avoiding object voxels that contain an object.

Description:
SWARM PATH PLANNER SYSTEM FOR VEHICLES

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH

[0001] The United States Government has rights in this invention pursuant to Contract No. DE-AC52-07NA27344 between the U.S. Department of Energy and Lawrence Livermore National Security, LLC, for the operation of Lawrence Livermore National Laboratory.

BACKGROUND

[0002] Unmanned aerial vehicles ("UAVs"), also referred to as unmanned aircraft systems ("UAS") or drones, are employed for a wide variety of applications such as military, scientific, commercial, humanitarian, and recreational applications. UAVs can be controlled in various ways that range from autonomous control by a navigation system to remote control by an operator. With semiautonomous control, an operator can remotely control a UAV to override an autonomous control. Navigation (or guidance) systems that provide autonomous control may be on board the UAVs or at ground stations that receive data from the UAVs and transmit instructions to the UAVs. A navigation system may simply navigate the UAV to a destination location along a specified route (e.g., a straight line) defined by Global Positioning System ("GPS") coordinates. More sophisticated navigation systems may interface with an onboard imaging system that collects images of the environment near the UAV. The navigation system may process the images to identify obstacles in the way of the UAV (e.g., buildings, mountains, and trees) and direct the UAV on a route to avoid the obstacles. When a UAV is under remote control of an operator, the UAV may have an onboard camera system that streams images of the environment to the operator. If the UAV does not have an onboard camera system, the operator needs to have a line of sight to the UAV. The operator may use various cockpit-type controls to guide the UAV. BRIEF DESCRIPTION OF THE DRAWINGS

[0003] Figure 1 is a block diagram illustrating components of an OSA system that employs the SPP system in some embodiments.

[0004] Figure 2 is a diagram that illustrates an example cost graph that indicates costs based on the distance transforms.

[0005] Figure 3 is a diagram that illustrates the relationship between a leader vehicle and its follower vehicles.

[0006] Figure 4 is a diagram that illustrates the relationship between a leader swarm and its follower swarms.

[0007] Figure 5 is a block diagram illustrating components of the SPP system in some embodiments.

[0008] Figure 6 is a flow diagram that illustrates overall processing of SPP system to lead a swarm to a target voxel in some embodiments.

[0009] Figure 7 is a flow diagram that illustrates the processing of "determine swarm travel direction" component in some embodiments.

[0010] Figure 8 is a flow diagram that illustrates the processing of "determine leader travel direction" component in some embodiments.

[0011] Figure 9 is a flow diagram that illustrates the processing of "determine follower travel direction" component in some embodiments.

[0012] Figure 10 is a flow diagram that illustrates the processing of a "generate environmental costs" component in some embodiments.

[0013] Figure 1 1 is a flow diagram that illustrates the processing of a "calculate object density" component in some embodiments.

[0014] Figure 12 is a flow diagram that illustrates processing of a "generate relational costs" component in some embodiments.

[0015] Figure 13 is a flow diagram that illustrates processing of a "generate stationary cost data" component in some embodiments. DETAILED DESCRIPTION

[0016] A method and system for autonomous control of a swarm of vehicles to travel to a target while avoiding objects (i.e., obstacles) is provided. In some embodiments, a swarm path planner ("SPP") system determines at intervals a leader travel direction for a leader vehicle (e.g., UAV) of a swarm to travel from a leader location of the leader vehicle to a target or destination location. For each follower vehicle of the swarm, the SPP system also determines at intervals a follower travel direction to follow the leader vehicle while maintaining a positional relationship with the leader vehicle and avoiding objects. The SPP system may use a variety of environmental travel direction techniques to determine a leader travel direction of the leader vehicle to avoid objects, such as those described in PCT Patent Application No. PCT/US16/41208, entitled "Object Sense and Avoidance System For Autonomous Vehicles" and filed on July 6, 2016, which is hereby incorporated by reference; a "determine leader travel direction" component or system as described in the following; and so on. To determine a follower travel direction of a follower vehicle, the SPP system may use a combination of the environmental travel direction technique used to determine the leader travel direction and a relational travel direction technique. The use of the environmental travel direction technique helps ensure that a follower vehicle avoids obstacles, and the relational travel direction technique helps ensure that the follower vehicle maintains a positional relationship with the leader vehicle. The environmental travel direction technique uses environmental measures (e.g., distance from a vehicle to the nearest object or obstacle that is to be avoided) to determine a travel direction. The relational travel direction technique uses relational measures (e.g., distance to leader vehicle) to measure the positional relationship between the leader travel direction and possible follower travel directions for a follower vehicle. The SPP system may employ a probability function that suggests relational preference for travel direction and outputs a quantitative indication that a follower travel direction will maintain a desired positional relationship between the leader vehicle and the follower vehicle. The probability function is based on a desired formation of the swarm. The use of both environmental and relational travel direction techniques helps ensure that a swarm of vehicles travel along the shortest possible travel path to a target location while maintaining a desired formation of the swarm. [0017] In some embodiments, the SPP system may be part of an object sense and avoid ("OSA") system. The OSA system, which may be onboard each vehicle of the swarm, may include an object detection system, the SPP system, and a flight controller system. The OSA system may also include a sensor array that interfaces with the object detection system. The OSA system repeatedly uses the sensor array to collect sensor data of any objects in an object field around the vehicle. For example, the sensor array may transmit radar signals and receive the return signals that are reflected by the objects. The object detection system then detects the objects and determines their locations based on the sensor data. For example, the object detection system may triangulate the location of an object based on return signals received by multiple sensors. The SPP system then plans a next travel direction for the vehicle to avoid the detected objects while seeking to minimize the traversal cost (e.g., distance traveled). If a vehicle is a follower vehicle, the SPP system determines the next leader travel direction and factors that into determining the next follower travel direction for a follower vehicle. The OSA system then instructs the vehicle to travel in the travel direction until the process is repeated and a new travel direction is planned that takes into consideration the objects that are currently in the object field.

[0018] In some embodiments, the SPP system considers the space through which the swarm can travel to the target location to be a travel or transit volume that is divided into sub-volumes that are also referred to voxels, which may be cubes. Each voxel has 26 neighbor voxels that include six face neighbor voxels adjacent to its faces, 12 edge neighbor voxels adjacent to its edges, and eight corner neighbor voxels adjacent to its corners. The distance from a voxel to a side neighbor voxel is 1 voxel distance, to an edge neighbor voxel is 2 voxel distances, and to a corner neighbor voxel is 3 voxel distances, where a voxel distance is the distance between the centers of a voxel and a face neighbor voxel. A voxel that contains an object is referred to as an object voxel, and a voxel that does not contain an object is referred to as a non-object or empty voxel. The leader location is in a leader voxel, the follower locations are in follower voxels, and the target location is in a target voxel. [0019] To determine travel paths for a swarm, the SPP system generates an environmental measure for each pair of empty neighbor voxels. For example, an environmental measure for a pair of voxels may be a distance measure indicating distance (e.g., in voxels) to a nearest object voxel and an object density measure indicating density of object voxels. The SPP determines, based on the environmental measures, a leader travel path for the leader vehicle of the swarm to travel from the leader voxel to the target voxel. For each pair of a follower voxel and an empty neighbor voxel, the SPP system calculates a relational measure for the pair. For example, a relational measure for a follower voxel and an empty neighbor voxel may be a distance separation measure and an elevation angle separation measure between the empty neighbor voxel and the next leader voxel. The SPP system then determines a follower travel path for the follower vehicle to follow the lead vehicle based on the environmental measures and the relational measures.

[0020] In some embodiments, the SPP system may represent the travel volume as a cost graph where vertices represent empty voxels, edges connect vertices of empty neighbor voxels, and costs are assigned to each edge. An environmental cost of an edge connecting a pair of an empty voxel and an empty neighbor voxel is based on the environmental measures for the pair. A relational cost for an edge connecting a pair of a follower voxel and an empty neighbor voxel is based on the relational measure for the pair. The cost for an edge that has a relational cost may be the maximum of the relational cost and the environmental cost for the edge. To determine the travel path for a vehicle, the SPP applies a minimal cost path algorithm to the cost graph to determine the minimal cost path from a leader vehicle voxel (i.e., the voxel that contains the vehicle) to the target voxel. The SPP system uses the minimal cost path as the travel path. The SPP system selects the travel direction for a vehicle as the direction of the neighbor voxel of the vehicle voxel that is on the travel path.

[0021] Although the OSA system that employs the SPP system is described primarily in the context of a vehicle that is a UAV, the OSA system may be used to control a variety of autonomous vehicles ("AVs") that are autonomously driven. The AVs may include UAVs, unmanned ground vehicles ("UGVs"), unmanned underwater vehicles ("UUVs"), and unmanned space vehicles ("USVs"). These vehicles are "unmanned" in the sense that a person does not control the guidance of the vehicle, irrespective of whether a person is actually on board the vehicle. For example, a UGV may transport several people with the UGV's guidance under the sole control of the OSA system (i.e., autonomously). For UGVs, the transit volume may need to be only slightly higher than the vehicle and may be effectively considered to be a plane or volume with a height of one in the z -direction (vertical). If the UGV is, for example, operating in a parking structure, the transit volume may be represented by a stack of planes— one for each level of the parking structure. For UUVs, the sensor array may be sonar-based, but the OSA system would operate in a manner similar to that for UAVs. For USVs, the OSA system may be particularly useful in helping a satellite avoid collisions with space debris or other satellites. The OSA system for USVs may employ a larger transit volume to encompass a wider approach of objects. In addition, the OSA system may be augmented with the estimated locations of known space objects determined from orbital parameters (e.g., Keplerian elements) of the space objects to help in determining whether return signals correspond to an object. In some embodiments, the OSA system may not even employ a sensor array but rather may rely solely on the estimated locations of the known space objects such as those estimated from the orbital parameters, retrieved from a geographic information system of objects (e.g., buildings, power lines, and trees), determined on prior traversals of the travel volume, and so on. Also, although the OSA system is described primarily based on a transit volume that is in front of the UV, the transit volume may surround the UV. In such a case, the UV may include multiple sensor arrays to sense the entire area around the vehicle. Such a surrounding transit volume may be useful, for example, to sense and avoid objects (e.g., space debris) that are traveling towards the UV from the rear.

[0022] Figure 1 is a block diagram illustrating components of an OSA system that employs the SPP system in some embodiments. The OSA system 100 includes a sensor array 1 10, an object detection system 120, an SPP system 130, a flight controller system 140, and a field-of-engagement store 150. The sensor array transmits transmit signals T and receives return signals R . The sensor array provides the return signals R n m corresponding to time n for receiver m . The object detection system is also provided with the current UV location relative to a fixed coordinate system as collected by the flight controller that is converted to a current voxel u curr . The object detection system provides to the SPP system the current voxel of the vehicle and the object voxel of each detected object V m for time n . The SPP system may also access the field-of-engagement store to retrieve the object voxels of known stationary objects V s . The SPP system is also provided with the target voxel u dest . For example, the target voxel may be 10 meters above a moving vehicle that the vehicle is to track. In such a case, the target voxel may be calculated based on the current location of the vehicle as reported by a location system (e.g., GPS system) on board the vehicle. If the vehicle is a follower vehicle, the SPP may also be provided with the next leader voxel Nu Alternatively, the SPP system of a follower vehicle may calculate the next leader voxel assuming that the object detection system is aware of the same objects that the leader vehicle uses in determining its travel direction. The SPP system calculates the travel direction and then provides the travel direction to the flight controller system, for example, as a next vehicle voxel u next . The flight controller system directs the vehicle to travel in the travel direction. The object detection system, the SPP system, and the flight controller system repeat their processing at intervals to determine the next travel direction given the objects currently in the travel volume.

[0023] In some embodiments, the object detection system and the SPP system are implemented in software that is executed by an onboard processor of a UAV. The processor may send instructions via a Micro Air Vehicle Communication Protocol ("MAVLink") to an autopilot system of the UAV. The processor and the autopilot system may be connected via a Universal Asynchronous Receiver/Transmitter ("UART") connection. Suitable processors may include, for example, Odroid C1 +, Odroid XU4, Raspberry Pi, Intel Edison, Intel NUC, Gigabyte Brix, and NVIDIA Jetson TK1 . In some embodiments, aspects of the OSA system may be executed by a processor that is not on board. In such an embodiment, an onboard processor may include a WiFi interface to receive data from and transmit data to a ground station processor. If the SPP system is executed by the ground station processor, then the onboard processor transmits the object voxels identified by the objection detection system to the ground station processor and receives the travel directions and possibly the target voxel from the ground station processor. The onboard processor and the ground station processor may communicate via an Intel WiFi Link 5000 adapter.

Autonomous Control of Isolated UVs

[0024] In some embodiments, the SPP system categorizes objects as stationary or moving. For example, a building is a stationary object, and another UV that is traveling is a moving object. A field-of-perception is a localized volume of the environment sensed by the UV at a given instant of time, which may include stationary and moving objects. A field-of-engagement is a much larger volume of the environment, which may include only stationary objects. While a field-of-engagement can cover a much larger volume than a field-of-perception, the representation is static (because moving objects are not included), and the accuracy of the stationary objects may be subject to statistical uncertainty.

[0025] In some embodiments, field-of-perception and field-of-engagement are 3D binary arrays of N v voxels (cubes of width Δ meters in the travel volume). Empty voxels are represented by a value of zero, and object voxels are represented by a value of one. A field-of-engagement can, for example, may be generated from a high resolution digital surface model ("DSM"), which is a 2D array of surface heights versus xy location on a horizontal plane with, for example, one meter xy grid spacing or better. The SPP system represents an object in the travel volume by fusing an instantaneous field-of-perception with a static field-of-engagement. As described above, the travel volume is represented by a 3D binary array of voxels. The travel volume is represented as a cost graph whose vertices each correspond to a different empty voxel and whose edges each point from some empty voxel to another empty voxel in its 3x3x3 neighborhood. The number of edges in a cost graph is N E < 26N V . For a field-of-engagement, the target voxel may correspond to one vertex (namely, a target vertex). However, for a field-of-perception, if the target lies outside, the SPP system may represent the empty voxel on the line of sight from the vehicle to the target that is closest to the target as the target vertex.

[0026] Since there are multiple paths of edges from a vehicle vertex to a target vertex, the SPP system determines the optimal path. To determine the optimal path, the SPP system assigns a cost to each edge of the cost graph. The SPP system may use one of a variety of minimal cost path algorithms to determine the optimal path. For example, the minimal cost paths from the target vertex to all of the remaining vertices can be computed using Dijkstra's algorithm in o(N^) time. (See E. W. Dijkstra, "A Note on Two

Problems in Connexion with Graphs," Numerische Mathematik, Vol. 1 , 1959, pp. 269-271 , which is hereby incorporated by reference.) The SPP system can reduce the time to o[N £ +N v \og 2 N v < (26 + log 2 N F )N F ] using a Fibonacci heap. (See Ravindra K. Ahuja,

Kurt Mehlhorn, James B. Orlin, and Robert E. Tarjan, "Faster Algorithms for the Shortest Path Problem," Journal Assoc. Comput. Mach., Vol. 37, No. 2, April 1990, pp. 213-223, which is hereby incorporated by reference.). The solution to the minimal cost path problem can be visualized as a 3D array of pointing vectors along an optimal path and their associated costs with no pointing vectors pointing from empty voxels to object voxels. One pointing vector emanates from each empty voxel and terminates either on another empty voxel in its 3x3x3 neighborhood or on the target voxel (if in its 3x3x3 neighborhood). The pointing vectors will thus have lengths of either 1 , 2 , or 3 voxels. Each pointing vector represents a leg on the minimal cost path from the emanating empty voxel to the target voxel through some empty neighbor voxel. If the target and objects do not move, Dijkstra's algorithm need only be applied once to determine the minimal cost path from each empty voxel in the field-of-engagement to the target voxel. If the target or the objects move, then the minimal cost path needs to be periodically (at each time interval) determined from the leader voxel to the target voxel. In such a case, the SPP system may use an A * algorithm (See^Peter Hart, Nils Nilsson, and Bertram Raphael, "A Formal Basis for the Heuristic Determination of Minimum Cost Paths," IEEE Transactions on Systems Science and Cybernetics, Vol. 4, Issue. 2, pp. 100-107 (1968), which is hereby incorporated by reference.).

[0027] In some embodiments, the SPP system assigns costs to the edges based on environmental measures and, for edges connected to a follower voxel, further based on relational measures. For isolated vehicles (i.e., a vehicle not in a swarm or the leader vehicle of a swarm), the SPP system assigns costs to each graph edge based on some combination of environmental measures. For an edge E = V 0 →V 1 emanating from an empty voxel (i 0 , j 0 , k 0 ) and terminating on the empty neighbor voxel (i^ j^ k^ where max [|/ 0 - / ' J , - ArJ] = 1 , the SPP system assigns an associated cost c(E) = c(v 0 →V l ) . In general, the cost for a set , = [ , 1 ... ^ ] of m environmental measures can be represented by equation 1 :

(1 ) c{E) = f (y{E)) = maX n C i (y i {E)) where c t [y t - (E)) <≡ [0, l] is a cost function for environmental measure / ' . An edge with a cost of one means that traversal along that edge is not allowed.

Table 1 provides examples of environmental measures that may be used by the SPP system. One environmental measure is the distance to an object (whether stationary or moving). In Table 1 , DT represents the "distance transform," and DT (V) represents the voxel distance from voxel V to the nearest object voxel associated with either a stationary or moving object. The SPP system may employ various distance transform algorithms. (See, e.g., Calvin Maurer, Rensheng Qi, and Vijay Raghavan, "A Linear Time Algorithm for Computing Exact Euclidean Distance Transforms of Binary Images in Arbitrary Dimensions," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 25, No. 2, February 2003, pp. 265-270.) The SPP system computes DTs in real time within an instantaneous field-of-perception or in advance within a field-of-engagement. The SPP system may ignore object voxels that are too remote from the vehicle voxel, i.e., further away than a remote distance d remote . A larger value of d remote leads to environmental constraints on vehicle motion dynamics that are less localized.

Table 1

direction

[0028] Figure 2 is a diagram that illustrates an example cost graph that indicates costs based on the distance transforms. A cost graph 200 includes vertices represented as circles that correspond to the voxels of the travel volume and edges represented as lines connecting empty voxels. Each circle contains the voxel coordinates (x, y, z) that uniquely identify each voxel. The unshaded circles represent empty voxels, and the shaded circles represent object voxels. The shaded circles have no connected edges to indicate that a travel path through the object voxel is not allowed. The numbers next to the edges represent the costs. For example, since the empty voxel (0, 0, 1 ) is adjacent to the object voxel (0, 0, 2), it is assigned a distance transform of 1 . Since object voxels (0, 0, 0) and (0, 1 , 0) are adjacent to empty voxels that have distance transforms of 1 , they are assigned distance transforms of 2 (using a Manhattan distance metric). The SPP system assigns a cost of 0.9 (1 .0-1.0/10) to the edge between object voxels (0, 0, 0) and (0, 0, 1 ) assuming the remote distance d remote is 10. The SPP system also assigns a cost of 0.8

(1 .0-2.0/10) to the edge between object voxels (0, 0, 0) and (0, 1 , 0). Thus, when determining the minimal cost path from vehicle voxel (0, 0, 0) to target voxel (3, 2, 2), the SPP system may determine path (0, 0, 0), (0, 1 , 0), (0, 2, 0), (1 , 2, 0), (2, 2, 0), (3, 2, 0), (3, 2, 1 ), and (3, 2, 2).

[0029] As indicated by Table 1 , the SPP system may employ an object density measure for stationary objects p s (E) or moving objects p m (E) in a region to indicate how easy or difficult it might be to traverse that region. { Q(V 0 ,d remote ) is the cubic neighborhood of half-width d remote voxels centered on voxel V 0 at location i 0 , j 0 , k 0 ) .) The SPP system increases the cost of edges as the object density measure increases. The SPP system may also employ a permeability measure p z of a region or zone Z on a per-voxel basis independent of object density. For example, a zone or corridor might be designated as "exclusion", "no-fly" or "fly through only if absolutely necessary." In such a case, the SPP system may input the permeability measures for the voxels of the zone. The SPP system may set the permeability measure for an edge to the maximum of p z for the empty voxel that the edge emanates from, and p z for an empty neighbor voxel.

[0030] The SPP system ensures that the cost associated with a traversal path from a vehicle voxel for an isolated vehicle to the target voxel increases linearly with path length. The SPP system may weight the costs by traversal distance as represented by equation 2:

' environmental

where ||E|| = l, V2 or 3 . Thus, c_ mental (E) [o, l] , c_ mental (E)≤c(E) , and c environmental {E) = \ if and only if c(E) = \ (i.e., traversal from V 0 to V x is not allowed).

Autonomous Control of Vehicle Swarm Motion Dynamics

[0031] The SPP system may consider a swarm of N > 1 vehicles to contain one leader vehicle and N -\ follower vehicles. The SPP system represents a vehicle swarm as a graph with a tree topology (a vehicle swarm tree) in which the root vertex represents the leader vehicle and the leaf vertices represent the follower vehicles. [0032] As described above, the SPP system constrains the motion dynamics of the leader vehicle by environmental measures. The SPP system constrains the motion dynamics of the follower vehicles not only by these environmental measures but also by relational measures that constrain the motion dynamics of the follower vehicles relative to the motion dynamics of the leader vehicles. The SPP system may express the relations between follower vehicle and leader vehicle motion dynamics statistically by assigning probability density functions to attributes of the edges in the vehicle swarm tree, leading to a stochastic vehicle swarm tree. The SPP system may represent a stochastic vehicle swarm tree using distributionally attributed relational trees ("DARTs"). (See, e.g., David W. Paglieroni and Faranak Nekoogar, "Matching Random Tree Models of Spatio-Temporal Patterns to Tables or Graphs," Proc. IEEE Conf. Computational Intelligence and Data Mining (CIDM), Honolulu, HI, April 1 -5, 2007, pp. 560-567.)

[0033] The SPP system represents relational measures that constrain motion dynamics of a follower vehicle relative to motion dynamics of the leader vehicle by n attributes x = [x j ... x„] of edges in a vehicle swarm tree. Since the vehicle swarm tree is stochastic, the attributes are random variables with prescribed probability densities {P i (x)} n (such as Gaussian densities). For a given attribute, the density could (but typically would not) vary from edge to edge. The set of densities = (*)}" may be normalized to the range [0, 1 ]. The SPP system may employ a cost function for relational measures as represented by equation 3:

(3) c relational )) e [0,1] where the value x i ( J E , , 0 ) of edge relational attribute x t (a random variable) depends on the graph edge E 0 that the leader vehicle traversed at a particular instant of time and the graph edge E that the follower vehicle traversed in response at that same instant of time (where graph edges connect empty neighbor voxels). In general, the value of an attribute x t that relates motion dynamics of a follower vehicle to the leader vehicle depends on the motion of both vehicles. Graph edge E 0 characterizes leader vehicle motion, and graph edge E characterizes follower vehicle motion where c rdational (E|Eo ) = 0 ^ anc ' on 'y ^ Pi (x, (EIEo )) = 1 / ' . The SPP system may consider variables for relations between leader vehicle motion dynamics and follower vehicle motion dynamics as illustrated in Table 2.

Table 2

[0034] For follower vehicles, the traversal cost to a neighbor voxel depends on both relational and environmental constraints, whichever is more stringent, as represented by equation 4:

(4) ' overall {f ) = maX _ C environmental (^) ' C relational (^| -¾ )] where is the environmental cost incurred when the follower vehicle traverses edge E from its current voxel, c rdational (E|Eo) ' s tne relational constraint cost incurred when the follower vehicle traverses edge E from its current voxel given that the leader vehicle traversed edge E 0 from its current voxel, and c overall (E|Eo ) ' s tne overall (net) cost incurred by the follower vehicle. At a specified instant of time, given that the leader vehicle traversed edge E 0 , the path that the follower vehicle takes will be along the edge E from its current voxel that minimizes c overaW (E|E 0 ) . There is thus no need to solve a minimal cost path problem for follower vehicles. [0035] Figure 3 is a diagram that illustrates the relationship between a leader vehicle and its follower vehicles. In Fig->ure 3,' the cost c environment ,al, ( \∑ * ) j s for the op ~timal edge E * emanating from the leader vehicle, and (E|E * )} is the set of costs for all possible

edges E emanating from a follower voxel to follow the leader vehicle that travels along optimal edge E * .

Autonomous Control of Multiple UV Swarms

[0036] The SPP system may hierarchically extend the stochastic vehicle swarm trees to enable joint control of the motion dynamics for multiple vehicle swarms. In a hierarchical stochastic UV swarm tree, the root vertex represents the vehicle swarm that leads, and the leaf vertices represent the vehicle swarms that follow. The hierarchy of a vehicle swarm tree can be extended such that in a second-level hierarchy, the root vertex represents a set of vehicle swarms that lead (the leader swarm), and the leaf vertices represent sets of vehicle swarms that follow (the follower swarms).

[0037] In the SPP system, hierarchical swarm trees govern the motion dynamics of follower swarms that follow relative to the motion dynamics of the leader swarm. Within a hierarchy of vehicle swarm trees, the motion dynamics of follower swarms are relative to their leader swarm and are governed by the edge attribute densities for the specific vehicle swarm tree.

[0038] In a hierarchical vehicle swarm tree, the leader vehicle of a follower swarm follows some vehicle in the leader swarm that is the leader vehicle or a follower vehicle of the leader swarm. Figure 4 is a diagram that illustrates the relationship between a leader swarm and its follower swarms. In Figure 4, a hierarchical vehicle swarm tree 400 contains one leader swarm 410 that leads and L follower swarms 420, 430. The leader 421 of the 1 st follower swarm follows vehicle 412, which is a follower vehicle of the leader swarm, and the leader 431 of the L th follower follows the leader vehicle 41 1 of the leader swarm. Fork = 1... L , the vehicle of the k follower swarm could follow any vehicle

¾ e {0 ... 1 0 } from the leader swarm. The densities q = (*)}" may be normalized to the range [0, 1 ] that applies to attributes x = [x j ... xj relating motion dynamics of a follower swarm that follows to the leader swarm. In this case, equation 3 applies with p replaced by q , where x,. (E|E 0 ) is the value of relational attribute x t (a random variable) when edge

E 0 emanates from some vehicle in the leader swarm, and in response, edge E emanates from the leader vehicle in the follower swarm.

[0039] As depicted in Figure 4, the leader swarm contains L 0 follower vehicles. For k = \ ... L , the k th follower swarm contains L lk follower vehicles, c envjronmental * ) represents the cost associated with the optimal edge E 0 * emanating from the leader vehicle of the leader swarm, c overall (E * |E * ) represents the cost for the optimal edge E * emanating from a follower vehicle given that edge E * emanates from the leader vehicle, and |c overa „(E,.|E * )j represents the set of costs for all edges E t emanating from a follower vehicle given that the optimal edge emanating from the leader vehicle is E * .

Vehicle Swarm Behavioral Personalities

[0040] As described above, the SPP system employs environmental and relational measures to control the direction of vehicle travel. The SPP system may use a behavioral personality of a vehicle to control speed of traversal, i.e., how aggressively the target voxel will be pursued. The behavioral personality of a vehicle swarm is defined by the behavioral personality of the leader vehicle because motion dynamics of follower vehicles are somehow correlated with motion dynamics of the leader vehicle.

[0041] The SPP system may prescribe the behavioral personality of a vehicle by adjusting the time interval Δ, between control commands. As Δ, decreases, the number of looks (e.g., with the radar or sonar on-board the UV) increases, thereby decreasing the likelihood of a collision. However, UV velocity may decrease. Within a time interval of Δ, , the vehicle will travel a distance of Δ (one voxel), 2A , or <J3A (i.e., a maximum distance of >/3Δ ). The speed of vehicle travel will thus be v≤j3 A/A t . If the vehicle is capable of traveling no faster than v max , then A t min = V3 A/v max . As Δ, decreases, the vehicle behavioral personality becomes more aggressive. The behavioral personality also factors in the tolerance of a vehicle to risk (e.g., collision). Thus, the behavioral personality factors in not only vehicle speed but also the distance d remote beyond which an object is ignored.

As d t decreases, the tolerance of a vehicle to risk increases.

[0042] Figure 5 is a block diagram illustrating components of the SPP system in some embodiments. An SPP system 500 includes a "determine leader travel direction" component 501 , a "determine follower travel direction" component 502, a "generate distance transform" component 503, a "generate environmental costs" component 504, a "generate relational costs" component 505, a "find minimal cost path" component 506, and a "generate object density" component 507. The SPP system also includes a stationary object measurement store 508 that stores distance transform measurements and density measurements for stationary objects. These measurements may be calculated prior to travel by a non-onboard computer system and loaded into the onboard stationary object measurement store. The "determine leader travel direction" component determines a next leader voxel as the indication of the travel direction of a vehicle. Although the component is referred to as the "determine "leader" travel direction" component, it can be used to determine the travel direction of a vehicle irrespective of whether the vehicle is leading other vehicles or is a single isolated vehicle that is not leading other vehicles. The "determine follower travel direction" component identifies a next voxel as the indication of the travel direction of a follower vehicle. The "generate distance transform" component generates the distance transform for the field-of-engagement. The "generate environmental costs" component generates the environmental costs associated with objects. The "generate relational costs" component generates relational costs associated with a follower vehicle following a leader vehicle. The "find minimal cost path" component finds a minimal cost path from the leader voxel to a target voxel based on environmental costs, for example, using Dijkstra's algorithm with a Fibonacci heap or an A * algorithm.

[0043] The computing systems on which the OSA system may be implemented may include a central processing unit, input devices, output devices (e.g., display devices and speakers), storage devices (e.g., memory and disk drives), network interfaces, graphics processing units, accelerometers, cellular radio link interfaces, global positioning system devices, and so on. The computing systems may include servers of a data center, massively parallel systems, and so on. The computing systems may access computer- readable media that include computer-readable storage media and data transmission media. The computer-readable storage media are tangible storage means that do not include a transitory, propagating signal. Examples of computer-readable storage media include memory such as primary memory, cache memory, and secondary memory (e.g., DVD) and other storage. The computer-readable storage media may have recorded on them or may be encoded with computer-executable instructions or logic that implements the OSA system. The data transmission media are used for transmitting data via transitory, propagating signals or carrier waves (e.g., electromagnetism) via a wired or wireless connection.

[0044] The OSA system may be described in the general context of computer- executable instructions, such as program modules and components, executed by one or more computers, processors, or other devices. Generally, program modules or components include routines, programs, objects, data structures, and so on that perform particular tasks or implement particular data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments. Aspects of the OSA system may be implemented in hardware using, for example, an application-specific integrated circuit (ASIC).

[0045] Figure 6 is a flow diagram that illustrates overall processing of SPP system to lead a swarm to a target voxel in some embodiments. A component 600 of the SPP system generates the travel directions for the leader and the followers at each time interval. In block 601 , the component determines the current target voxel u d as the target may be moving. In block 602, the component determines the current leader voxel u l of the leader. In decision block 603, if the current leader voxel is the same as the current target voxel, then the swarm has reached the target and the component completes, else the component continues at block 604. In block 604, the component determines the current follower voxels V f of the followers. In block 605, the component invokes a

"determine travel direction" component passing an indication of the target voxel u d , the leader voxel u, , and the follower voxels V f . In block 606, the component waits for the next time interval and loops to block 601 to determine the next travel direction.

[0046] Figure 7 is a flow diagram that illustrates the processing of a "determine swarm travel direction" component in some embodiments. A "determine swarm travel direction" component 700 illustrates the overall processing of the SPP system to generate travel directions for a swarm. The component inputs the target voxel u d , the leader voxel u l , and the follower voxels V f . In block 701 , the component invokes the "determine leader travel direction" component passing an indication of the leader voxel and the target voxel and receives an indication of the next leader voxel Nu l that is in the travel direction. In blocks 702-704, the component loops identifying the travel direction for the follower vehicles. In block 702, the component selects the next follower vehicle / . In decision block 703, if all the follower vehicles have already been selected, then the component completes, else the component continues at block 704. In block 704, the component invokes the "determine follower travel direction" component passing an indication of a follower voxel u f , a target voxel, and the next leader voxel and receives an indication of the next follower voxel Nu f as the travel direction for the vehicle, and then it loops to block

702 to select the next follower vehicle. The "determine leader travel direction" component may be implemented on the leader vehicle, and the "determine follower travel direction" component may be implemented on each follower vehicle. Alternatively, these components can be implemented by a computing system that is not onboard, such as a ground station or a master vehicle that is traveling with the swarm that may include the object detection component that identifies objects for the swarm. Also, the leader vehicle may transmit the next leader voxel to the follower vehicles, or each follower vehicle may independently calculate the next leader voxel (assuming it is capable of detecting all the objects that the leader vehicle uses to identify the next leader voxel). Each vehicle in the swarm may consider every other vehicle in the swarm to be a moving object to prevent collisions with the other vehicles of the swarm.

[0047] Figure 8 is a flow diagram that illustrates the processing of a "determine leader travel direction" component in some embodiments. A "determine leader travel direction" component 800 is passed an indication of a leader voxel u l and a target voxel u d and determines a next leader voxel N l that is in the travel direction. In block 801 , the component identifies the moving object voxels V M in the field-of-perception. In block 802, the component identifies the empty voxels V E in the field-of-perception. In block 803, the component invokes the generate distance transform component passing an indication of the object voxels and the empty voxels and receives a 3D distance transform matrix DT M that specifies the distance of a voxel to the nearest object voxel. The "generate distance transform" component may generate the distance using the algorithm described in Maurer, et al. In block 804, the component invokes the generate object density component passing an indication of the object voxels and the empty voxels and receives an 3D object density matrix p M indicating the object density associated with each empty voxel. In block 805, the component identifies all object voxels V 0 in the field-of-perception. In block 806, the component identifies the non-object or empty voxels V E in the field-of-perception. In block 807, the component invokes the "generate environmental costs" component passing an indication of the empty voxels and the object voxels and receiving a cost graph C E indicating an environmental cost of traveling between each pair of empty neighbor voxels. In block 808, the component invokes a find minimal cost path component passing an indication of the leader voxel, the target voxel, and the cost graph C and receiving an indication of the minimal cost path p to travel from the leader voxel to the target voxel. In block 809, the component extracts from the path the neighbor voxel of the leader voxel as the next leader voxel and completes, returning an indication of the next leader voxel to indicate the travel direction.

[0048] Figure 9 is a flow diagram that illustrates the processing of a "determine follower travel direction" component in some embodiments. A "determine follower travel direction" component 900 is passed an indication of a follower voxel u f , a target voxel u d , and a next leader voxel Nu, and determines a next follower voxel Nu f that is in the travel direction. In block 901 , the component invokes a "generate relational costs" component passing an indication of the follower voxel, the target voxel, and the next leader voxel and a relational cost graph C R indicating a relational cost of traveling between each pair of empty neighbor voxels. In block 902, the component combines the environmental costs and the relational costs into a cost C j by, for example, taking the maximum of the environmental cost and the relational cost for each edge to a neighboring empty voxel. In block 903, the components elects as the next follower voxel the neighboring voxel connected by the edge with the minimal cost C ; and completes returning an indication of the next follower voxel to indicate the travel direction.

[0049] Figure 10 is a flow diagram that illustrates the processing of a generate environmental costs component in some embodiments. A generate environmental costs component 1000 is invoked passing an indication of empty voxels V E and generates the environmental costs associated with traveling between pairs of empty voxels. The component generates an environmental cost for each empty voxel. Although the flow diagram illustrates that distance to stationary objects c x and density of stationary objects c 2 are calculated periodically, in practice they only need to be calculated once. Also, the distance to moving objects c 3 and density of moving objects c 4 need only be calculated locally for empty voxels in the field-of-perception. In block 1001 , the component selects the next empty voxel w, . In decision block 1002, if all the empty voxels have already been selected, then the component returns an indication of the cost graph C , else the component continues at block 1003. In block 1003, the component selects the next empty neighbor voxel u n of the selected empty voxel. In decision block 1004, if all the empty neighbor voxels have already been selected, then the component loops to block 1001 to select the next empty voxel, else the component continues at block 1005. In block 1005, the component sets a first cost based on distance to stationary objects. In block 1006, the component sets a second cost based on density of stationary objects. In block 1007, the component sets a third cost based on distance to moving objects. In block 1008, the component sets a fourth cost based on density of moving objects. In block 1009, the component sets a fifth cost based on permeability. In block 1010, the component sets a sixth cost based on disparity. In block 101 1 , the component sets an unsealed cost to the maximum of the first through sixth costs. In decision block 1012, if the unsealed cost is less than one, then the component continues at block 1013, else the component loops to block 1003 to select the next empty neighbor voxel. In block 1013, the component sets the cost for the edge between the selected empty voxel and the selected neighbor voxel to the unsealed cost scaled by the distance between the selected empty voxel and the selected neighbor voxel.

[0050] Figure 1 1 is a flow diagram that illustrates processing of a "calculate object density" component in some embodiments. A "calculate object density" component 1 100 is passed an indication of object voxels V 0 and empty voxels V E and identifies the object density associated with each empty voxel. The component calculates object densities within a moving cube of half-width d rem ote- The flow diagram illustrates the logic of such calculations. In block 1 101 , the component selects the next empty voxel u e . In decision block 1 102, if all the empty voxels have already been selected, then the component completes, returning an indication of the object densities for the empty voxels, else the component continues at block 1 103. In block 1 103, the component initializes an object count. In block 1 104, the component selects the next object voxel u o . In decision block

1 105, if all such object voxels have already been selected, then the component continues at block 1 108, else the component continues at block 1 106. In decision block 1 106, if the selected object voxel is within a locality surrounding the selected empty voxel, then the component continues at block 1 107, else the component loops to block 1 104 to select the next object voxel. In block 1 107, the component increments an object count and then loops to block 1 104 to select the next object voxel. In block 1 108, the component sets a density for the selected empty voxel to the ratio of the number of object voxels within its locality to the number of voxels within its locality and then loops to block 1 101 to select the next empty voxel.

[0051] Figure 12 is a flow diagram that illustrates the processing of a "generate relational costs" component in some embodiments. A "generate relational costs" component 1200 is passed an indication of a follower voxel u f , and a next leader voxel u l and calculates a relational cost graph C associated with traveling from the follower voxel to each empty neighbor voxel u n . Although the component is illustrated as using all the relational costs of Table 2, the component may use any subset of the relational costs of Table 2. In block 1201 , the component selects the empty neighbor voxel of the follower voxel. In decision block 1202, if all the empty neighbor voxels have already been selected, then the component completes, returning an indication of the cost graph, else the component continues at block 1203. In block 1203, the component sets a first cost based on an easting separation between the leader voxel and the neighbor voxel. In block 1204, the component sets a second cost based on a northing separation between the leader voxel and the neighbor voxel. In block 1205, the component sets a third cost based on a height separation between the leader voxel and the neighbor voxel. In block 1206, the component sets a fourth cost based on a distance separation between the leader voxel and the neighbor voxel. In block 1207, the component sets a fifth cost based on an azimuth separation between the leader voxel and the neighbor voxel. In block 1208, the component sets a sixth cost based on an elevation angle separation between the leader voxel and the neighbor voxel. In block 1209, the component sets the environmental cost of traveling from the follower voxel to the neighbor voxel to one minus the product of a probability function for each type of cost applied to the cost. The component then loops to block 1201 to select the next empty neighbor voxel of the follower voxel.

[0052] Figure 13 is a flow diagram that illustrates processing of a "generate stationary cost data" component in some embodiments. A "generate stationary cost data" component 1300 is invoked to generate environmental measurements associated with stationary objects in the field-of-engagement. The component may be executed by a computing system that is not onboard prior to travel. In block 1301 , the component identifies the stationary voxels V s . In block 1302, the component identifies the empty voxels V E . In block 1303, the component invokes the "generate distance transform" component passing an indication of the stationary voxels and the empty voxels to set the distance of each empty voxel to the nearest object voxel. In block 1304, the component invokes the generate object density function passing an indication of the empty voxels and the object voxels and receiving an indication of the density associated with each empty voxel. The component then completes. [0053] The following paragraphs describe various embodiments of aspects of the OSA system. An implementation of the OSA system may employ any combination of the embodiments. The processing described below may be performed by a computing device with a processor that executes computer-executable instructions stored on a computer- readable storage medium that implements the OSA system.

[0054] A method performed by a computing system for identifying, for a swarm of vehicles, travel paths through a travel volume having empty locations and object locations is provided. For each pair of empty locations of the travel volume, the method calculates an environmental measure associated with traveling between the empty locations. The environmental measure are based on object locations near the pair of empty locations. The method determines a leader travel path for a leader vehicle of the swarm to travel from a leader location to a target location based on the environmental measures. For each pair of a follower location of a follower vehicle and an empty neighbor location, the method calculates a relational measure for the follower vehicle associated with traveling from the follower location to the empty neighbor location. The relational measure is associated with traveling from the follower location to the empty neighbor location being based on maintaining a positional relationship with the leader vehicle based on the leader travel path. For each follower vehicle, the method identifies a follower travel path for the follower vehicle to follow the leader vehicle based on the environmental measures and the relational measures. In some embodiments, the identifying of a travel path comprises applying a minimal cost path algorithm to a cost graph for traveling from any location to a specific destination location, where vertices represent locations, edges between vertices represent that the locations of the vertices are neighbors, and costs derived from the environmental measures are associated with the edges.

[0055] In some embodiments, the swarm travels through a travel volume of voxels with each location being at the center of a voxel. In some embodiments, the method further specifies as a leader travel direction the direction along the leader travel path, and for each of the follower vehicles, specifies as a follower travel direction the direction along the follower travel path for that follower vehicle. In some embodiments, the environmental measures are based on locations of objects that the vehicles are to avoid. In some embodiments, the environmental measures associated with stationary vehicles are calculated prior to travel and the environmental measures associated with moving vehicles are calculated during travel. In some embodiments, the environmental measures are selected from a set consisting of a distance transform measure, an object density measure, and a zone permeability measure. In some embodiments, relational measures are selected from a set consisting of an easting separation measure, a northing separation measure, a height separation measure, a distance separation measure, an azimuth separation measure, and an elevation angle separation measure. In some embodiments, the relational measures are treated as random variables governed by probability density functions. In some embodiments, the calculation of the relational measures and determination of the travel paths are performed at regular time intervals during travel of the swarm. In some embodiments, the calculation of the environmental measures associated with moving objects is performed at regular time intervals during travel of the swarm. In some embodiments, the regular time interval is adjusted based on risk tolerance of a vehicle colliding with an object. In some embodiments, each vehicle of the swarm determines its travel path during each time interval. In some embodiments, the leader vehicle of the swarm determines the leader travel path during each time interval. In some embodiments, each follower vehicle calculates its relational costs during each time interval. In some embodiments, some environmental cost measures are updated based on locations of objects that are within a specified remote distance of the current vehicle location. In some embodiments, the remote distance is adjusted based on risk tolerance of a vehicle colliding with an object. In some embodiments, the swarm is a leader swarm and a follower swarm of vehicles follows the leader swarm and wherein a leader vehicle of the follower swarm follows a designated vehicle in the leader swarm. In some embodiments, the method further calculates relational measures for the leader vehicle of the follower swarm associated with traveling from a leader location of the follower swarm to a neighboring location. The relational measures are based on the leader vehicle of the follower swam following the travel path of a designated leader vehicle from the leader swarm. In some embodiments, the method further directs each vehicle to travel in the direction of its travel direction.

[0056] In some embodiments, a method performed by a computing system for identifying a travel path based on locations for a vehicle to travel from a current location to a target location is provided. The method accesses indications of object locations associated with objects that the vehicle is to avoid and empty locations not associated with objects that the vehicle is to avoid. For each empty location and each empty neighbor location, the method calculates a cost of traveling from that empty location to that empty neighbor location. The method applies a minimal cost path algorithm to a graph to determine a travel path between the current location and the target location, where vertices of the graph represent locations, edges of the graph connect empty neighbor voxels, and the costs are associated with the edges. In some embodiments, the method further specifies a travel direction for the vehicle as the direction of the neighbor location of the vehicle location that is along the travel path. In some embodiments, the method further directs the vehicle to travel in the travel direction. In some embodiments, the costs are based on a distance transform that identifies the distance from an empty location to the nearest object location. In some embodiments, prior to travel, the method calculates stationary costs based on stationary objects and, during travel, the method calculates moving costs based on moving objects. The calculating calculates the cost for traveling from an empty location to an empty neighbor location to be a minimum of the stationary cost and the moving cost for the empty neighbor location. In some embodiments, the costs are calculated based on environmental measures that include a transform distance measure, an object density measure, and a zone permeability measure. In some embodiments, the calculating calculates the cost of traveling from an empty location to an empty neighbor location to be a minimum of a cost associated with the transform distance measure, a cost associated with the object density measure, and a cost associated with the zone permeability measure. In some embodiments, the minimal cost path algorithm is a Dijkstra-based algorithm. In some embodiments, the minimal cost path algorithm employs a Fibonacci heap. In some embodiments, the method further, for each of a plurality of time intervals calculates current costs based on a current vehicle location, a current target location, and current object locations and applies the minimal cost path algorithm based on the current costs to identify a current travel path. In some embodiments, the method, for each of the plurality of time intervals, specifies a current travel direction as the direction of the empty neighbor location of the current vehicle location that is along the current travel path. In some embodiments, a time interval is adjusted based on risk tolerance of the vehicle colliding with an object. In some embodiments, the objects exclude objects that are more than a remote distance from the current vehicle location. In some embodiments, the remote distance is adjusted based on risk tolerance of the vehicle colliding with the object.

[0057] In some embodiments, a computing system for identifying, for a swarm of vehicles, travel paths through a travel volume of voxels is provided. The computing system comprises one or more computer-readable storage media storing computer- executable instructions and one or more processors that execute the computer-executable instructions stored in the computer-readable storage media. The instructions control the computing system to calculate environmental costs associated with traveling from each of a plurality of empty voxels to empty neighbor voxels. The instructions control the computing system to determine a leader travel path for a leader vehicle of the swarm based on environmental costs to travel from a leader voxel to a target voxel. The instructions control the computing system to direct the leader vehicle to travel along the leader travel path. For each follower vehicle of the swarm, the instructions control the computing system to calculate relational costs associated with traveling from a follower voxel to empty neighbor voxels, the relational costs based on cost of following the leader travel path, identify a follower travel path for the follower vehicle based on the environmental costs and the relational costs to follow the leader vehicle, and direct the follower vehicle to travel along the follower travel path. In some embodiments, the identification of a travel path applies a minimal cost path algorithm to a graph representation of the voxels where vertices represent voxels, edges between vertices represent empty neighbor voxels, and the costs are associated with the edges. In some embodiments, the minimal cost path algorithm employs a Dijkstra algorithm. In some embodiments, the environmental costs are based on object locations of objects that the vehicles are to avoid. In some embodiments, the environmental costs associated with stationary vehicles are calculated prior to travel and the environmental costs associated with moving vehicles are calculated during travel. In some embodiments, the environmental costs are calculated based on environmental measures selected from a group consisting of a transform distance measure, an object density measure, and a zone permeability measure. In some embodiments, the relational costs are calculated based on relational measures selected from a group consisting of an easting separation measure, a northing separation measure, a height separation measure, a distance separation measure, an azimuth separation measure, and an elevation angle separation measure. In some embodiments, the relational costs are treated as random variables governed by probability density functions. In some embodiments, the instructions control the computing system to calculate the relational costs and identify the travel paths during travel of the swarm at time intervals. In some embodiments, each vehicle of the swarm includes a computer-readable storage medium and a processor and wherein the computer- executable instructions, when executed by the processor of a vehicle, identify a travel path for the vehicle during each time interval. In some embodiments, the instructions control the computing system to determine the leader travel path during each time interval. In some embodiments, the swarm is a leader swarm and a follower swarm of vehicles follows the leader swarm, and wherein a leader vehicle of the follower swarm follows a designated leader vehicle of the leader swarm.

[0058] In some embodiments, a computing system for identifying a travel path through a travel volume of voxels for a vehicle to travel from a current voxel to a target voxel is provided. The computing system comprises one or more computer-readable storage media storing computer-executable instructions and one or more processors that execute the computer-executable instructions stored in the computer-readable storage media. The instructions control the computing system to access indications of object voxels associated with objects that the vehicle is to avoid and empty voxels not associated with objects that the vehicle is to avoid. The instructions control the computing system to, for each empty voxel and each empty neighbor voxel of the empty voxel, calculate a cost of traveling from that empty voxel to that empty neighbor voxel. The instructions control the computing system to apply a minimal cost path algorithm to a cost graph to determine a travel path where vertices of the cost graph represent voxels, edges of the cost graph connect empty voxels of empty neighbor voxels, and the costs are associated with the edges. The instructions control the computing system to direct the vehicle to travel in the direction of the travel path. In some embodiments, the costs are based on a distance transform measure that is based on the distance from an empty voxel to the nearest object voxel. In some embodiments, the instructions control the computing system to, prior to travel, calculate stationary costs based on stationary objects and, during travel, calculate moving costs based on moving objects. The cost for traveling from an empty voxel to an empty neighbor voxel is the minimum of the stationary cost and the moving cost for the empty neighbor voxel. In some embodiments, the costs are based on environmental measures that include a transform distance measure, an object density measure, and a zone permeability measure.

[0059] In some embodiments, a method performed by a computing system for identifying a travel path for a follower vehicle to follow a leader vehicle through a travel volume of voxels is provided. The method calculates an environmental cost associated with traveling from each of a plurality of empty voxels to empty neighbor voxels. The method calculates a relational cost associated with traveling from the follower voxel to empty neighbor voxels. The method identifies a follower travel path for the follower vehicle based on the environmental cost and the relational cost. The method the follower vehicle to travel along the follower travel path. In some embodiments, the identification of the follower travel path applies a minimal cost path algorithm to a graph representation of the voxels where vertices represent voxels, edges between the vertices represent empty neighbor voxels, and the costs are associated with the edges. In some embodiments, the calculating of the environmental cost, the calculating of the relational cost, the identifying of the follower travel path, and the directing of the follower vehicle are performed at time intervals. In some embodiments, the relational cost is based on cost of the follower vehicle following the leader vehicle. In some embodiments, the environmental cost is based on cost of avoiding object voxels that contain an object.

[0060] Although the subject matter has been described in language specific to structural features and/or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. For example, although the SPP system has been described primarily in the context of voxels that are cubes, the voxels may not be cubic. Also, rather than employing voxels, the vertices of a cost graph can represent arbitrary locations in space (referred to as reference locations) with edges indicating that travel between pairs of locations is permissible. In such a case, a leader location is the reference location closest to a leader vehicle, a follower location is the reference location closest to a follower vehicle, and a target location is the reference location closest to the target location. If voxels are employed, the center of the voxels can be considered to be reference locations. Accordingly, the invention is not limited except as by the appended claims.