Method and system for allocating tasks to a network of satellites
A computer-based method optimizes task assignment in satellite networks by generating scheduling scores based on constraints, addressing inefficiencies in large satellite fleets and enabling rapid task completion for SAR satellites.
Patent Information
- Application Number
- JP2025544826
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-02-08
- Filing Date
- 2024-02-07
- Publication Date
- 2026-02-13
AI Technical Summary
As the number of satellites in a fleet increases, managing and scheduling tasks across the entire fleet becomes impractical for human operators, leading to inefficiencies and delays in task assignment, particularly for Earth observation missions requiring faster response times.
A method and system for assigning tasks to a network of satellites using computer processors to identify opportunities, generate scheduling scores based on task constraints, and assign tasks to satellites based on these scores, considering factors like priority, duration, and future downlink availability, optimizing the scheduling process.
Enables timely and efficient task planning and delivery of satellite acquisitions, particularly for synthetic aperture radar (SAR) satellites, reducing delays to hours or less and optimizing resource use in satellite networks.
Smart Images

Figure 2026505307000001_ABST
Abstract
Description
[Technical Field]
[0001] TECHNICAL FIELD The present disclosure relates to satellite networks, and more particularly to methods and systems for assigning tasks to satellite networks. [Background technology]
[0002] When a satellite network operator receives a task, such as a request to acquire an image, the request must be transmitted (e.g., uplinked) to a specific satellite in the network. A given acquisition request typically specifies an area on the Earth to be imaged. Therefore, it may take some time, depending on the orbit of each satellite, for a given satellite to recognize itself as being in a position where it can perform the acquisition. Added to this is the fact that each task may include additional constraints that must be taken into account, such as the desired acquisition time and the resources available to perform the task.
[0003] When the number of satellites in a fleet is relatively small, determining which tasks to assign to which satellites may not be particularly burdensome. However, as the satellite fleet expands, it becomes impractical for a human operator to quickly and efficiently manage and schedule acquisition, downlink, and other tasks, if any, across the entire fleet. Summary of the Invention
[0004] According to a first aspect of the present disclosure, there is provided a method for assigning tasks to a network of satellites, the method being performed by one or more computer processors and including: receiving one or more tasks; and for each task, (a) identifying one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task; (b) generating a scheduling score for each opportunity based on one or more task constraints for the task associated with the opportunity corresponding to the scheduling score, the task constraints including one or more of the following constraints: a priority assigned to the task; a duration until the satellite corresponding to the opportunity will be able to perform the task; and future downlink availability; and (c) assigning at least one of the one or more tasks to the satellite corresponding to the identified opportunity for the at least one task based on the respective scheduling scores.
[0005] The one or more tasks may include a first task and a second task. Generating a scheduling score may include generating a first scheduling score for an opportunity identified for the first task and generating a second scheduling score for an opportunity identified for the second task, where the first and second scheduling scores indicate that the first task should be performed before the second task. Assigning the at least one task may include assigning the first task to a first satellite corresponding to the opportunity identified for the first task and assigning the second task to either the first satellite or a second satellite corresponding to the opportunity identified for the second task, where in response to assigning the first task to the first satellite and assigning the second task to either the first satellite or the second satellite, the first satellite is scheduled to perform the first task before the first satellite or the second satellite is scheduled to perform the second task.
[0006] The first satellite and the second satellite may be the same satellite.
[0007] Identifying the one or more opportunities may include determining one or more second task constraints associated with the task and identifying the one or more opportunities based on the one or more second task constraints.
[0008] The one or more second task constraints may include one or more of the following constraints: the duration of the task, and the point in time at which the task needs to be completed.
[0009] At least one of the one or more received tasks may be image acquisition, and the one or more first task constraints may include one or more of the following constraints: an imaging geometry for the image acquisition; and a region of interest for the imaged subject.
[0010] At least one of the one or more received tasks may be image acquisition.
[0011] Identifying the one or more opportunities may include determining one or more satellite constraints associated with each satellite of the network of satellites and identifying the one or more opportunities based on the one or more satellite constraints.
[0012] Determining one or more satellite constraints associated with each satellite may include one or more of obtaining a predicted orbit for each satellite, determining one or more imaging geometries associated with at least one imaging device for each satellite, and determining one or more parameters related to power availability for each satellite.
[0013] The method may further include uplinking instructions to the satellite to which the assigned task is assigned to cause the satellite to perform the assigned task.
[0014] Future downlink availability may include the duration between performance of the task and downlinking of data obtained as a result of performance of the task.
[0015] Generating the scheduling score may include generating the scheduling score based on future downlink availability.
[0016] Generating the scheduling score may further be based on the seniority of the task: tasks that have been received for a longer period of time may be prioritized over tasks that have been received for a shorter period of time.
[0017] Generating a scheduling score may include generating a scheduling score based on each of a priority assigned to the task, a duration until the satellite corresponding to the opportunity is able to perform the task, and a seniority of the task, where the priority assigned to the task may be weighted more heavily than the duration until the satellite corresponding to the opportunity is able to perform the task, and the duration may be weighted more heavily than the seniority of the task.
[0018] Generating the scheduling score may be based on the seniority of the task, with tasks that have been received for a longer period of time being given priority over tasks that have been received for a shorter period of time.
[0019] Generating the scheduling scores may include generating, for each opportunity, an initial score, and generating, for each opportunity, a scheduling score by optimizing each initial score based on one or more optimization constraints.
[0020] Generating the scheduling scores by optimizing each of the initial scores may include generating the scheduling scores by linearly optimizing each of the initial scores based on one or more optimization constraints.
[0021] The one or more optimization constraints may include one or more of the following constraints: a given satellite must be separated by a minimum amount of time when performing any two consecutive tasks assigned to that satellite; a given satellite cannot spend more than a maximum amount of time performing any task assigned to that satellite; a given satellite cannot spend more than a maximum amount of time performing one or more tasks assigned to that satellite during one orbit of that satellite; and a given task cannot be assigned to more than one satellite.
[0022] Identifying one or more opportunities may include identifying one or more initial opportunities and filtering the one or more initial opportunities based on one or more requirements.
[0023] The one or more requirements may include a requirement that no opportunities may be identified for a satellite that is scheduled to perform a task within a preset time window extending from the present time to a time in the future.
[0024] The preset time window may be based on a minimum amount of time required for steps (a), (b), and (c) to occur, and the amount of time after the minimum amount of time has elapsed until the satellite is next scheduled to pass over the ground station.
[0025] Each satellite may be a synthetic aperture radar (SAR) satellite.
[0026] The method may further include receiving a further task while performing one or more of steps (a), (b), and (c), and preventing the further task from being included in steps (a), (b), and (c).
[0027] The method may further include, before receiving the one or more tasks, determining, for each task in the set of tasks, whether the task is locked, and if the task is locked, preventing the task from being included in steps (a), (b), and (c).
[0028] Determining whether a task is locked may include determining whether the task is scheduled to run within a preset time window extending from the present time to a time in the future.
[0029] Generating the scheduling score may include performing constraint programming based on one or more constraints.
[0030] Generating the scheduling score may include using linear programming by formulating one or more task constraints as linear constraints.
[0031] The method may further include, before identifying the one or more opportunities, generating one or more updated opportunities for at least one task of the one or more tasks, each updated opportunity corresponding to a satellite in the network of satellites that may perform the task, and storing each updated opportunity in an opportunity cache, wherein identifying the one or more opportunities includes retrieving the at least one updated opportunity from the opportunity cache.
[0032] According to a further aspect of the present disclosure, a non-transitory computer-readable medium having stored thereon computer program code configured, when executed by one or more processors, to cause the one or more processors to perform a method for scheduling tasks for a network of satellites, the method including: receiving one or more tasks; identifying, for each task, one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task; generating a scheduling score for each opportunity based on one or more task constraints for the task associated with the opportunity corresponding to the scheduling score, the constraints including one or more of the following constraints: a priority assigned to the task; a duration until the satellite corresponding to the opportunity will be able to perform the task; and future downlink availability; and assigning at least one of the one or more tasks to the satellite corresponding to the identified opportunity for the at least one task based on the respective scheduling scores.
[0033] According to a further aspect of the present disclosure, a system is provided, the system comprising: a network of satellites; one or more ground stations; and a computer-implemented scheduling device, the scheduling device being configured to receive one or more tasks; identify for each task one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task; generate a scheduling score for each opportunity based on one or more task constraints associated with the opportunity corresponding to the scheduling score, the constraints including one or more of the following constraints: a priority assigned to the task; a duration until the satellite corresponding to the opportunity will be able to perform the task; and future downlink availability; assign at least one of the one or more tasks to a satellite corresponding to the identified opportunity for the at least one task based on the scheduling score; and uplink instructions to the satellite to which the assigned task is assigned, to cause the satellite to perform the assigned task.
[0034] According to a further aspect of the present disclosure, a computer-implemented scheduling device is provided for assigning tasks to a network of satellites, the computer-implemented scheduling device being configured to receive one or more tasks, identify for each task one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task, generate a scheduling score for each opportunity based on one or more task constraints for the task associated with the opportunity corresponding to the scheduling score, including one or more of the following constraints: a priority assigned to the task, a duration until the satellite corresponding to the opportunity will be able to perform the task, and future downlink availability, and assign at least one of the one or more tasks to the satellite corresponding to the identified opportunity for the at least one task based on the respective scheduling score.
[0035] This summary does not necessarily describe the entire scope of all aspects. Other aspects, features, and advantages will become apparent to those skilled in the art upon review of the following description of specific embodiments. [Brief explanation of the drawings]
[0036] Embodiments of the present disclosure will now be described in detail in conjunction with the accompanying drawings. [Figure 1] FIG. 1 is a perspective view of the Earth, a satellite, and a ground station. [Figure 2] A map of the Earth showing the 24-hour coverage of one satellite. [Figure 3] 1 is a schematic diagram of the Earth, an example satellite, and a system for managing a network of satellites; [Figure 4] A map of the Earth showing 3-hour coverage of 18 satellites. [Figure 5] A map of the Earth showing 24-hour coverage from 18 satellites. [Figure 6]FIG. 2 is a schematic diagram of a schedule calculation module, a satellite database, and a channel database of the system. [Figure 7] FIG. 1 is a schematic diagram of instructions for an image of a location. [Figure 8A] FIG. 2 is a schematic diagram showing details of the schedule calculation module. [Figure 8B] 1 is a pair of tables showing acquisition opportunities for acquiring imagery of Tokyo in scenarios with 1 and 18 Earth observation satellites, respectively. [Figure 9] FIG. 2 is a schematic diagram showing details of the satellite database. [Figure 10] FIG. 3 is a schematic diagram showing details of the channel database. [Figure 11] FIG. 2 is a schematic diagram showing schedule information uploaded to a network of satellites. [Figure 12] FIG. 1 is a flow diagram illustrating a method for generating an updated schedule for a network of satellites. [Figure 13] FIG. 2 is a flow diagram illustrating an example implementation of the method for generating an updated schedule for a network of satellites. [Figure 14] FIG. 1 is a block diagram of a computer system that may be used to assign tasks to a network of satellites. [Figure 15] 1 is a flow diagram of a method for assigning tasks to a network of satellites according to an embodiment of the present disclosure. [Figure 16] FIG. 10 illustrates different red zones for different satellites based on the estimated path of each satellite, in accordance with an embodiment of the present disclosure. [Figure 17] FIG. 1 is a flow diagram of a method for processing a task according to an embodiment of the present disclosure. [Figure 18] FIG. 1 illustrates a system for capturing synthetic aperture radar images. DETAILED DESCRIPTION OF THE INVENTION
[0037] The present disclosure aims to provide a method and system for allocating tasks to a network of satellites. Various embodiments of the present disclosure are described below, but the present disclosure is not limited to these embodiments, and variations of these embodiments may fall well within the scope of the present disclosure, which is limited only by the appended claims.
[0038] Generally, according to an embodiment of the present disclosure, a computer-implemented method is described in which one or more tasks are received. Each task may be, for example, an image acquisition request that identifies an area of the Earth to be imaged. For each task, one or more opportunities are identified. Each opportunity corresponds to a satellite in a network of satellites that may perform the task. For example, it may be determined that a satellite cannot perform the task within the constraints defined in the task, and therefore no opportunities will be identified for such satellite. Any satellite that may be capable of performing the task within the constraints defined in the task as well as within the constraints specific to the satellite may have a corresponding opportunity associated with that satellite.
[0039] A scheduling score is generated for each opportunity. Generating the scheduling score may include generating an initial score for each opportunity and then generating a scheduling score for each opportunity by optimizing each initial score based on one or more optimization constraints. Based on each scheduling score, at least one of the one or more tasks is assigned to a satellite corresponding to the opportunity identified for the at least one task. Assigning tasks in this manner may include generating a set of one or more activities and then transmitting the set of activities to the satellite. Each activity may have an associated execution time indicating when the satellite should perform the activity. An activity may include, for example, performing a task such as image acquisition and then downlinking the acquired image.
[0040] For example, according to some embodiments, a request for image acquisition (or simply "acquisition") is added to a database. The request includes, among other data, the location of the desired acquisition (Area of Interest (AoI)) and the desired time of the acquisition. The request is also assigned a priority, for example, based on business value. For example, a customer making a request may agree to pay more to increase the priority of the request. The request may also include the type of acquisition to be performed.
[0041] At regular intervals, tasks are fetched from the database. For each task, data from the Orbit Determination service is used to determine the time when one or more satellites in the fleet will pass over the AoI ("pass time"). For each satellite that will pass over the AoI, if the satellite has not already been scheduled to perform a task at that pass time, or if the satellite has been scheduled to perform a lower priority task at that pass time, the pass time is stored and referred to as an opportunity.
[0042] Each opportunity is assigned a score based, for example, on the amount of time between the transit time and the desired acquisition time, the capabilities and performance of its satellite, and its future downlink availability, such as how long it will take for the satellite to be in position after acquisition to downlink the acquired image to a ground station, etc. Future downlink availability may also be based on an indication of whether a downlink will be available within a specified amount of time, the cost of the downlink, the speed of the downlink, or other factors.
[0043] The highest scoring opportunity is selected and an event or activity is created in that satellite's schedule to effect acquisition and downlink. The schedule is then transferred to that satellite, replacing any previous version assigned to that satellite.
[0044] According to some embodiments, a schedule is uploaded to a satellite each time it passes over a ground station. This schedule includes time-stamped commands for the satellite to perform. For example, a satellite may be tasked with performing image acquisition (or simply "acquisition"), downlinking previously acquired images to a ground station, or performing one or more other operations.
[0045] Other constraints may also be taken into account when determining which satellite to assign a given task to. For example, as described above, priorities (such as business-related priorities) may be assigned to tasks. In some cases, a given satellite may not be assigned a task if, for example, it is unable to perform the task due to, for example, scheduled maintenance, satellite technical capabilities, or time reservations on other satellites that cannot be rescheduled.
[0046] Advantageously, received tasks (e.g., from a network operator's customer) are automatically scheduled and assigned to appropriate satellites in the fleet. Downlinking of any acquired image data may also be scheduled to minimize the delay between acquisition and downlink. For example, the transit time of the satellite relative to one or more ground stations may be determined, as well as the capabilities of the ground stations and any service protocols surrounding their use. Based on this data, one or more downlink activities may be generated and assigned to the satellites after acquisition has been performed.
[0047] Generally, the methods and systems described herein may enable timely planning, acquisition, and delivery of acquisitions, particularly synthetic aperture radar (SAR) satellite acquisitions. It may be possible to determine in a relatively short amount of time which satellite will pass over the AoI at a desired time and whether that satellite is available to handle the acquisition. The task may then be translated into one or more activities for a particular satellite and scheduled on that satellite. This process may enable more efficient use of the fleet and more effective prioritization of requests.
[0048] In general, embodiments of the present disclosure may relate to, but are not limited to, methods and systems for assigning tasks to a network of synthetic aperture radar (SAR) satellites. SAR imagery is a type of image created by transmitting radar signals, receiving reflected and scattered radar return signals, and processing the return signals to form an image. This contrasts with optical imagery, which is a passive technique in which an image is captured by receiving light reflected from or emitted by an object. SAR technology, on the other hand, is an active rather than passive technology because it relies on transmitting radar signals rather than sunlight or other light sources. A notable advantage of SAR technology over optical imagery is that it can image at night and through clouds and other adverse weather conditions. However, forming images using SAR technology is generally more complex and generally requires extensive signal processing of the returned echoes to decode them.
[0049] More specifically, SAR images are typically obtained from airborne transmitters and receivers, such as those comprising part of an aircraft or satellite. In conventional radar, the resolution of an image produced by measuring the reflection of a radar signal is directly proportional to the wavelength of the radar signal and, consequently, to the length of the antenna used to transmit and receive the radar signal. This means that the antenna length required to capture high-resolution images using conventional radar is often impractical, especially for airborne use.
[0050] In contrast, SAR images are captured using a "synthetic aperture." A shorter, and therefore more practical, antenna is used on a moving platform to make a series of measurements of the reflected radar signal, which are then combined to simulate a much larger antenna. The resolution of a SAR image is therefore comparable to that of a conventional radar image, which is captured using a much larger antenna than the one used to capture the SAR image.
[0051] Scheduling tasks for a network of SAR satellites can be quite different from scheduling tasks for optical satellites, and therefore satellite scheduling techniques developed primarily for optical satellites cannot be directly applied to scheduling a network of SAR satellites. In addition to the differences mentioned above, optical satellites typically image directly below, while SAR satellites cannot image directly below because radar reflections from the nadir (the point on the ground directly below the satellite) are too strong. Instead, SAR satellites are typically "side-looking," meaning that they image at an angle to the side within a range of "viewing angles," as explained in more detail below with reference to FIG. 18. The viewing angle can be, for example, 15 to 45 degrees. The viewing angle can point left or right (some SAR satellites can be rotated to do either). The viewing angle and direction (left or right) are parameters included in the imaging geometry. This can increase the potential coverage of SAR satellites compared to optical satellites which are constrained to point straight down, but it also makes satellite scheduling more complex and at least requires different and more capable opportunity generators than might be used for optical satellites, for example.
[0052] Scoring for SAR satellites may also take into account different constraints compared to optical satellites. While SAR satellites have some advantages over optical satellites that simplify scheduling, such as not having to consider weather because they can image through clouds and during both day and night, they have several other constraints that can make scheduling more complex. For example, due to the power requirements for transmitting and receiving (especially transmitting) SAR signals, the imaging time of a small SAR satellite in a particular orbit may be limited to, for example, 90 or 120 seconds during a 90-minute orbit. These differences mean that prior art systems designed primarily for optical and other non-SAR satellites cannot be automatically applied to networks of SAR satellites.
[0053] Referring first to FIG. 18, a system 100′ for capturing synthetic aperture radar (“SAR”) images is shown. More specifically, FIG. 18 schematically illustrates how an airborne antenna 102′ is used to capture SAR images. The antenna 102′ may be mounted, for example, on a satellite or an airplane. The antenna 102′ moves along a flight path 104′, with a nadir 106′ directly beneath the antenna 102′. The antenna 102′ emits a radar signal 108′ at a viewing angle 120′ that illuminates a swath 110′ of the Earth that is offset from the nadir 106′. The antenna 102′ measures the radial line-of-sight distance between the antenna 102′ and the Earth's surface along a slope range 122′. 18 also shows a range direction 112' and an azimuth direction 114', where the range direction 112' extends perpendicularly away from the flight path 104' and the azimuth direction 114' extends parallel to the flight path 104'. With respect to the range direction 112', the swath 110' lies between points along the range direction 112' referred to as the near range 116' and the far range 118'.
[0054] 14, an example embodiment of a computer system 200 that may be used to perform a method for allocating tasks to a network of satellites, as described in more detail below, is shown. The computer system 200 includes a processor 202 that controls the overall operation of the computer system 200. The processor 202 is communicatively coupled to and controls several subsystems. These subsystems include an input / output ("I / O") controller 210 that is communicatively coupled to a user input device 204. The user input device 204 may include, for example, one or more of a keyboard, a mouse, a touchscreen, and a microphone. The subsystems further include a random access memory ("RAM") 206 that stores computer program code for runtime execution by the processor 202, non-volatile storage 208 that stores computer program code that is executed by the RAM 206 at runtime, a graphical processing unit ("GPU") 212 that controls a display 216, and a network interface 214 that facilitates network communication with a database 218. Non-volatile storage 208 stores computer program code that can be loaded into RAM 206 at runtime and executed by processor 202. When the computer program code is executed by processor 202, processor 202 causes computer system 200 to perform a method for allocating tasks to a network of satellites, such as that described further below. Additionally or alternatively, multiple computer systems 200 may be networked together to collectively perform the method using distributed computing.
[0055] Referring now to FIG. 1 , a satellite 102 (e.g., a SAR satellite) is shown in orbit 104 around Earth 106. The satellite's trajectory includes passing over a location 108 to be imaged by the satellite 102 and a ground station 110 configured to communicate data to and from the satellite 102. After the satellite 102 is launched, a new request to acquire an image of the location 108 may be submitted to the ground station 110. In this case, tasking of the request must be communicated to the satellite 102 via an uplink from Earth 106. FIG. 1 shows a single ground station 110. In an actual implementation, multiple ground stations would be spread around Earth 106 and could be used by many customers to communicate with the satellite. When a request to "arrange" time at a ground station is transmitted, the ground station crew typically requires time to queue the necessary transmission for either the uplink or downlink.
[0056] In one example, the satellite 102 orbits the Earth 106 in a low orbit. The low orbit may be between 160 km and 1000 km above the surface of the Earth 106. An example Earth monitoring satellite may have an orbit between 450 km and 650 km above the Earth 106. In some embodiments, the satellite orbits approximately 550 km above the Earth's surface. For example, in an orbit 550 km above the Earth 106, the satellite effectively crosses the Earth's surface at approximately 7.5 km / s, or 27,000 km / h. Most satellites in this orbit cross the Earth 106 at speeds in the range of 7 to 8 km / s.
[0057] In one example, the satellite 102 uses a synthetic aperture radar to image the Earth 106 in all conditions, including clouds, fog, smoke, and nighttime. The satellite 102 may also use a reflector or phased array antenna to help direct the synthetic aperture radar beam.
[0058] 1, an uplink to a satellite 102 in low earth orbit is provided by a ground station 110. As the satellite 102 moves along its orbit 104 in the direction indicated by arrow 112, the satellite first passes over a location 108 and then passes over the ground station 110. As a result, in this example, a new request to image the location 108 that is uplinked to the satellite 102 at the ground station 110 cannot be fulfilled until the satellite next passes over the location 108. This causes a delay in processing.
[0059] When the satellite 102 passes over the ground station 110, commands are uplinked by being transmitted from the ground station 110 to the satellite 102. When the satellite 102 then passes over the location 108, an image can be acquired.
[0060] It may be a significant amount of time before the satellite 102 next passes over the location 108. When the satellite 102 completes one orbit, the Earth 106 has rotated a small angle so that the satellite 102 no longer passes directly overhead at the location 108. The Earth 106 may need to make several complete rotations (taking several days) before the satellite 102 can again pass over the location 108 and acquire the requested image.
[0061] This can be easily seen from the coverage map shown in Figure 2, which shows the 24-hour global coverage of the satellite paths. Since 24 hours covers much less than half the Earth, this indicates that it may take several days to provide complete coverage and for the satellite 102 of Figure 1 to pass directly over the location 108 again to acquire the requested imagery. In this scenario, a delay of as much as a week may easily occur between the submission of a new request and the delivery of the requested imagery.
[0062] 1, after the request has been submitted and only after passing location 108 for the second time, satellite 102 passes over ground station 110 shortly thereafter to downlink the captured imagery. Once received by ground station 110, the imagery can be distributed to end users and / or processed to extract other useful information, such as ground monitoring parameters, for distribution to end users.
[0063] As a result of the time lag of up to a week or more that can occur between request submission and delivery, Earth observation satellites are not typically used for applications that require faster response times, such as hours or minutes. Instead, Earth observation missions are typically predefined before launch to provide specific imagery of a given event or to provide continuous, known actions, such as periodic monitoring of a known location, that can be scheduled in advance.
[0064] If additional tasks were to be added to the existing schedule after launch, the additional tasks could be subject to the aforementioned delays of up to one week, and may further require fitting the tasks into gaps in the existing schedule, which would not only exacerbate the delays but would likely result in inefficient overall resource use for the mission.
[0065] Another approach may improve delivery times for new tasks and more efficiently use resources. Referring to Figure 3, a system for managing a network of satellites includes a schedule calculation module 302 for calculating a schedule for the network of satellites to perform tasks. The schedule calculation module 302 may reside in a satellite operator application programming interface (API) 304 configured to communicate with a network of ground stations 306 and end users 308. The ground stations 306 provide uplinks and downlinks for communication with a set of satellites 310. A representative satellite 310 of the set is shown in Figure 3. Although other satellites of the set are not shown in this figure, the set may include several or many satellites 310, each configured to communicate with the ground station 306.
[0066] The schedule calculation module 302 may be included in a single computing system or may be distributed across multiple computing systems across multiple locations, for example, the schedule calculation module 302 may be located at a ground station or at another location in communication with multiple ground stations.
[0067] Using a network of satellites, for example a network of 18 satellites, improves the overall coverage of the Earth by the set in a given period of time, thereby reducing delays caused by waiting for the satellites to pass over the location to be imaged.
[0068] This can be seen by referring to the maps shown in Figures 4 and 5. Figure 4 shows a map of the 3-hour coverage of the Earth for 18 satellite paths, and Figure 5 shows the 24-hour coverage of the Earth for the same 18 satellites. Unlike the situation with a single Earth observation satellite shown in Figure 2, substantially complete coverage of the Earth is achieved in 24 hours.
[0069] The more satellites in a satellite network, the better the overall coverage of the Earth by the satellite network in a given period of time (e.g., the shorter the time between successive images of the same area or feature on Earth). For example, having two or more satellites in a network already provides significantly increased coverage compared to having only one satellite. Three or more satellites would provide even better coverage, and five or more or twelve or more satellites would be even better. Eighteen or more satellites, as described in this example, would provide enormous coverage. Even a satellite network with five or more satellites can achieve unprecedented Earth monitoring repeat times (the achievable time between successive images of an area or feature on Earth).
[0070] However, as the number of satellites in a satellite network increases, the complexity of scheduling, optimizing, and tasking all of the satellites to perform their assigned tasks after launch increases exponentially. In accordance with embodiments of the present disclosure, to efficiently handle this ever-increasing demand on the satellite network, a schedule calculation module 302 and supporting databases may be used to handle these complex processing and task assignment activities.
[0071] Specifically, the schedule calculation module 302 shown in Figure 3 actively manages task assignments for launched satellites 310 as new tasks are received. When a new task is received, the schedule for the entire network of satellites is recalculated so that the overall task assignment can be maintained efficiently while incorporating the new task with acceptable delivery times. This approach may enable turnaround times for tasks assigned after launch of a few hours or less.
[0072] 6 is shown in relation to a new task or command 602, a satellite database 604, a channel database 606, and a new schedule 608. The schedule calculation module 302, satellite database 604, and channel database 606 may form part of a ground control station or satellite operator API and work together to calculate a new schedule 608 each time a new command 602 is received. The schedule calculation module 302 is configured to recalculate the schedule using data from the satellite database 604 and the channel database 606, which store data such as satellite paths, satellite availability, ground station locations and availability, and available communication channels between the satellites and the ground stations. More details about these data and how they are used are provided below.
[0073] Referring to FIG. 7 , the new command 602 generally defines one or more geographic locations of an image subject and a time requirement for capturing one or more images. The time requirement may, for example, be that an image is needed immediately or urgently, or may include one or more time periods in the future during which images should be taken. A typical request may call for images to be captured at regular time intervals, such as daily. Other acquisition parameters may also be specified for a given request. For example, a customer may want to specify an acquisition mode such as “spotlight” or “stripmap,” which trades off resolution and area coverage (spotlight provides high resolution at the expense of reduced area coverage, while stripmap provides the opposite). This may depend on any desired further processing (e.g., object classification, change detection, etc.) that the customer may want to perform on the images. Thus, referring to FIG. 7 , the new command 602 may include an indication of the location 702, the time constraint 704, and any other acquisition parameters 706.
[0074] Each time a new command 602 is received, the schedule calculation module 302 calculates an updated schedule for the satellite, which may include imaging one or more locations defined in the new command 602. To accomplish this, the schedule calculation module may include, as shown in FIG. 8A , a simulation module 802 configured to determine multiple options for how the schedule can be updated to accommodate the new command 602, and an optimization module 804 configured to determine an appropriate updated schedule based on the available options.
[0075] The simulation module 802 includes a satellite identifier 806 configured to identify satellites capable of acquiring the requested images based on the satellites' orbital positions and projected paths. The requested images include images requested in the new command 602 and images requested in previous commands that have not yet been acquired. Satellites capable of acquiring the images are satellites whose paths pass through the requested locations according to the time constraints specified in the request.
[0076] To identify which satellites can fulfill which requests, satellite identifier 806 may be configured to perform satellite path simulations to determine which satellites will pass over the relevant geographic location next. It is understood that an arbitrary acquisition may not be fully performed, and thus satellite identifier 806 is looking for satellites that will be able to match the arbitrary request to a location within a reasonable threshold of the specified time constraints while maintaining other acquisition parameters as much as possible.
[0077] 8B, satellite identifier 806 may generate a table of acquisition opportunities for acquiring imagery of a location such as Tokyo. In a first example scenario, there is one imaging satellite, and satellite identifier 806 generates a first table 810 detailing the available opportunities for acquiring imagery of Tokyo over a three-day period using one satellite. In a second example scenario, there are 18 satellites, and satellite identifier 806 generates a second table 812 detailing the available opportunities for acquiring imagery of Tokyo over a three-day period using one or more of the 18 satellites.
[0078] As shown, the first table 810 has two rows, each representing an opportunity to acquire an image of Tokyo over a three-day period. Although there is only one satellite, there are two opportunities because it passes over Tokyo twice over the three-day period. Details of each acquisition opportunity are provided in each row of the table 810. The first column, "Anx" 814, lists the coordinated universal time, also known as UTC (universal time coordinated). This provides an acquisition timestamp indicating the date and time the image will be acquired. The second column, "Area Covered" 816, indicates the percentage of the requested area that will be imaged in the acquisition. The third column, "Duration" 818, lists the duration in seconds that the satellite's imaging equipment will be activated to capture the image. In this example, this is 10 seconds. The fourth column, "End" 820, indicates the date and time the imaging equipment will complete imaging, i.e., the end of the 10-second period. The fifth column, "Intersection Area" 822, indicates the overlap, in square kilometers, between the requested imaging area and the actual area that will be imaged. The sixth column, "Length" 824, indicates the distance, projected on the Earth, that the satellite will cover during a 10-second imaging operation. The seventh column, "View Angle" 826, indicates the tilt, in degrees, of the imaging device or the entire satellite on its roll axis. The eighth column, "Path" 828, indicates whether the imaging satellite, when projected onto the Earth's surface, will be moving toward the North Pole (ascending) or the South Pole (descending) when imaging occurs. The ninth column, "Satellite" 830, indicates the identity of the satellite. In the scenario of table 810, there is only one satellite, so both rows represent the same satellite. Finally, the tenth column, "Sensor" 832, indicates whether the satellite, for example, for a SAR satellite, is pointing left or right, as defined relative to its heading. This can be done using separate equipment, or by rotating the entire satellite to point the imager or SAR antenna to the left or right.
[0079] Table 812 for the second example scenario has similar columns showing acquisition opportunities using one or more of the 18 satellites over a three-day period. There are 15 rows, representing the 15 acquisition opportunities over the three days. As shown in the ninth column, "Satellite," some rows show the same satellite, indicating that some satellites pass over Tokyo multiple times over the three days. For example, the second and third rows both relate to image acquisition by satellite "SAT-BLOCK1.2.2." In total, 10 of the 18 satellites pass over Tokyo at least once over the three days, providing the 15 acquisition opportunities shown in table 812.
[0080] Returning to FIG. 8A , simulation module 802 also includes an execution set identifier 808 configured to identify a ground station to complete the request. The ground station must uplink the new schedule to the satellite and downlink image data or data derived from the image from the satellite. Thus, execution set identifier 808 is configured to identify one or more execution sets for each image to be acquired, with each execution set including a satellite, a ground station capable of providing an uplink, and a ground station capable of providing a downlink. By identifying execution sets, simulation module 802 generates a set of options for how the request can be executed. For example, in table 810 of FIG. 8B , each row representing a possible acquisition may be associated with five ground stations providing uplink options 90 minutes before the acquisition and five ground stations providing downlink options 90 minutes after the acquisition. As a result, there may be 5 × 5 = 25 execution sets for each feasible acquisition (i.e., for each row in table 810). Because there are two possible acquisitions, in this scenario, there may be 2 × 25 = 50 possible execution sets for acquiring images of Tokyo. In general, a suitable execution set needs to be selected from the available options for each image to be acquired, e.g., a good execution set selection can result in efficient use of resources across the constellation and ground stations, and in new requests being fulfilled within acceptable delivery times.
[0081] To appropriately select the execution set, the schedule calculation module 302 includes an optimization module 804 configured to determine an optimized set of execution sets. The optimization module 804 attempts to match requests to available execution capacity and may be configured to optimize delivery time, efficient use of satellite and ground station resources, and cost-effectiveness. Details of the optimization module 804 are described in further detail below with reference to Figures 15-18.
[0082] To identify the satellites and execution sets, the simulation module 802 is communicatively coupled to a satellite database 604 and a channel database 606. As shown in Figure 9, the satellite database 604 stores satellite data such as satellite orbits 902, satellite resources 904 such as power 906, momentum 908, and memory 910, available capacity 912 including data regarding reduced capacity due to satellite maintenance 914, satellite-mandatory management operations 916, and satellite failures 918, and previously uploaded schedules 920. In an example, the satellite database 604, or another database accessible to the schedule calculation module 302, may store operating rules that may also be used to determine new schedules.
[0083] 10, the channel database 606 stores channel data (related to communication channels to and from satellites), such as available paths 1004, e.g., paths where the ground station has the capability for up / downlink or some other availability measure, ground station data 1002, including required dispatch time 1006, e.g., minimum time between dispatch of the ground station and the time for up / downlink or some other dispatch measure, pricing 1008, available inter-space communication links 1010, and available laser downlinks 1012. The inter-space communication links 1010 may be provided by other satellites, such as geostationary satellites or other spacecraft.
[0084] The simulation module 802 of the schedule calculation module 302 uses the data in the satellite database 604 and the channel database 606 to determine the run sets that can be used to acquire the images.
[0085] 11, once the schedule has been calculated, the schedule information is uploaded to the set of satellites and instructs them to acquire and downlink image data. In one embodiment, the schedule information includes acquisition commands 1102, which provide details of when and how to perform the imaging operations, and downlink commands 1104, which include details of when and how to downlink the acquired data. There are no uplink commands, as it is understood that the satellites are configured to receive uplinked signals without being instructed to do so.
[0086] The capture command 1102 may include an indication of the time 1106 when the image should be captured, an indication 1108 of the angle on the roll axis of the imaging device, an indication 1110 of whether to use the left or right sensor for imaging, an indication of the duration 1112 of the imaging operation (e.g., 10 seconds as in the example above), and an indication of an image tag 1114. The image tag provides an identifier, such as a name or alphanumeric identifier for the image, so that when the image is downlinked it can be easily identified.
[0087] The downlink command 1104 may include an indication of the time of the downlink 1116, an indication of the identity or location of the ground station to downlink the image from 1118, and an indication of the image tag 1120. This facilitates the process of identifying the correct image for the scheduled downlink time.
[0088] 12, a method 1200 of assigning tasks to a network of satellites includes receiving 1202 new commands, recalculating 1204 a schedule, and uploading 1206 the new schedule to the satellites. Method 1200 may be suitably performed by a combination of a satellite operator API and a ground station that provides an uplink to the satellites.
[0089] FIG. 13 shows an example 1300 of how a satellite operator can manage a satellite constellation using the apparatus of FIGS. 6, 8, 9, and 10. To recalculate the satellite task schedule each time a new command is issued, the schedule calculation module 302 may need up-to-date information about available resources. Such information includes data about the satellites and data about the ground stations so that multiple execution sets can be identified and selected from. As such, the data stored in the satellite database 604 and the channel database 606 is kept up-to-date. Satellite data such as orbit 902, power 906, and momentum 908 are within the satellite operator's control and known to the satellite operator. As a result, this data can be kept up-to-date by the satellite operator without relying on external providers. However, if the satellite operator uses an external ground station provider, the ground station data 1002 stored in the channel database 606 must be periodically supplied by the ground station provider to keep this information up-to-date. Therefore, this example includes a step 1302 of requesting ground station availability from the ground station provider.
[0090] The schedule calculation module 302 receives new commands 602 in step 1303. At this stage, it is necessary to identify ways in which the pending commands can be executed. Pending commands include both new commands and previously received commands that remain to be executed. If there are no previous commands awaiting execution, the schedule recalculation step is the same and simply involves calculating a new schedule. Each command may include the same parameters and resource allocations. To identify possible ways to execute the pending commands, the schedule calculation module 302 recalculates possible execution sets for each command in step 1304. This creates options from which a new execution set can be selected for each pending command. Next, in step 1306, the schedule is recalculated by selecting an appropriate execution set for each command and generating a new schedule for the satellite based on the selected execution set. Execution sets may be selected based on meeting optimization goals such as minimizing delivery time, minimizing the difference between requested and actual image acquisition times, maximizing resource utilization across the satellite constellation, and minimizing cost. A resource allocation table may be updated at this stage. The resource allocation table may contain information appropriate to a particular implementation, and may include any one or more of the following: Which satellite will be issuing the commands? Storage available on the satellite for imaging tasks The amount of time the satellite will image (execute commands) within a particular orbit (this is limited by power availability (battery capacity) and thermal parameters) Which downlink will be used to transmit the imagery, passing over the ground station?
[0091] To implement the new schedule, ground station arrangements are updated in step 1308 to match the new execution set and provide the uplinks and downlinks required for the new schedule. This may involve requesting new arrangements and canceling redundant arrangements, which may require communicating with the ground station provider to modify the arrangements. The new schedule is uploaded in step 1310 to the satellite constellation, or at least to affected satellites that are tasked with different tasks in the new schedule compared to the old schedule. The upload is performed using ground stations reserved in the updated ground station arrangements. At this stage, the ground stations and satellites are ready to execute commands according to the new schedule, and delivery parameters can be provided to customers in step 1312. The delivery parameters may include one or more of the following: time of image acquisition; time of delivery; where the images are sent, such as the address of the customer's Secure File Transfer Protocol (SFTP) server, or whether the customer will access the images from the constellation operator's service; and the level of processing requested by the customer, such as, for example, Ground Range Detected (GRD) (the image is registered to the Earth) / Single Look Complex (SLC) whereby the actual I / Q values of the reflected signal are provided.
[0092] At step 1314, the new command is executed, which involves acquiring the required image and downlinking the image data or appropriate data derived from the image for delivery to the customer.
[0093] The schedule is recalculated each time a new command is received or another event occurs that affects the ability to execute a command, for example, an event that would affect the ability to execute a command could include satellite or ground station maintenance or a satellite or ground station failure.
[0094] The present disclosure provides various advantages for allocating tasks to a network of satellites. From the perspective of the customer submitting the task, the turnaround time between submitting the task and receiving the requested satellite imagery is improved, meaning that urgent imagery can be acquired and delivered faster than using traditional methods. From the perspective of the satellite operator, the schedule is recalculated each time a new task is received, allowing for more efficient and cost-effective use of available satellites and their resources as new tasks arrive.
[0095] In some embodiments, new schedules can be calculated taking into account the different capabilities of different satellites, allowing for easy adaptation to multiple satellites with different capabilities and providing efficient use of satellite resources. Two main reasons why satellites have different capabilities include simple evolution: more recently launched satellites are typically "better," with more storage, built according to more robust manufacturing techniques, more advanced radios for both downlink and imaging, and more accurate pointing systems. Second, there is degradation in space. Satellites are subject to high levels of solar / cosmic radiation, which can damage subsystems and ultimately limit their ability to function. The distribution and timing of this across a network or constellation is random in nature. Furthermore, different satellites may have different imaging capabilities, such as resolution, use different wavelengths for imaging, or have better processing and storage capabilities.
[0096] Ground stations and ground station resources may also be used more efficiently. The approach is also less susceptible to failures, since if an asset such as a satellite or ground station fails, the schedule can be recalculated and the remaining assets and their resources can be used to accommodate pending tasks as efficiently as possible. This is preferable to a satellite or ground station failure, which would result in a task being unable to be performed.
[0097] 15-18, further embodiments for allocating tasks to a network of satellites are described. The methods described in these embodiments may be implemented, for example, using schedule calculation module 302 described above.
[0098] FIG. 15 is a flow diagram of a general method for assigning tasks to a network of satellites.
[0099] At block 1502, the schedule calculation module 302 is triggered. According to some embodiments, the schedule calculation module 302 is triggered automatically according to one of two manners. 1. Periodically, according to a pre-set periodicity (e.g., every hour) 2. Whenever the task state is set to "active" (i.e. the task has been received and is ready to be acted upon)
[0100] As can be seen in FIG. 16 , for each satellite, a “red zone” 1610 extends from the present time (“now”) to a predetermined future time called “N minutes” (N minutes from now). “N minutes” is configurable and is based, for example, on the amount of time the time schedule calculation module 302 requires to perform optimization. This time period therefore represents a period of time during which there are tasks / activities already scheduled for execution between now and N minutes, but there is insufficient time to optimize them. Note that for satellite 2 and satellite 3, the red zone 1610 extending between now and N minutes encompasses a path 1612. A path corresponds to the satellite passing over the ground station and therefore being in position to receive new scheduling instructions from the ground station.
[0101] Beyond N minutes, the red zone 1610 extends to the end of the next pass 1615 arranged for that satellite. This period represents a time during which new scheduling instructions cannot be sent to the satellite until it completes its next pass over the ground station. Thus, during this time, even if the schedule calculation module 302 completes optimization, new tasks / activities cannot be scheduled on the satellite until it completes its next pass.
[0102] Thus, in general, even if there are tasks and / or activities scheduled to occur during the red zone 1610, they may be considered "locked" and therefore not considered during the optimization process by the schedule calculation module 302, as described in more detail below.
[0103] When the schedule calculation module 302 is started, as described above, the schedule calculation module 302 fetches any tasks that meet the following criteria: ● The task is in the "active" state. • The time window associated with the task (i.e., the duration during which the task must be completed) does not lie entirely within the red zone 1610 of each satellite. There are no active image capture activities associated with the task that were not generated by the schedule calculation module 302. For example, if a task is associated with one or more manually entered image capture activities, the schedule calculation module 302 ignores the task. The task does not include an active image capture activity scheduled to occur before the execution window of the schedule calculation module 302. For example, referring to Figure 16, active image capture activities set to occur between "now" and "N minutes", and between "N minutes" and the end of the next pass arranged for that satellite are locked and not modifiable by the schedule calculation module 302, so the schedule calculation module 302 does not fetch a task with such image capture activities.
[0104] In block 1504, the schedule calculation module 302 collects one or more tasks that have been previously received (e.g., from a satellite network operator customer) and that have not yet been assigned to a satellite. For example, the schedule calculation module 302 may access and retrieve tasks and activities that have been previously received and stored in the database 1506. As described in more detail below, each task may be associated with one or more activities, which may be generated in response to scheduling the task. The activities may also be prioritized based on one or more parameters of the task. For example, if a task requests that an image be taken within the next 72 hours, multiple activities may be generated for the task, with each activity requesting that an attempt be made to capture an image every 24 hours, for example.
[0105] In block 1508, the schedule calculation module 302 identifies tasks that are locked (e.g., tasks located within the red zone 1610 in FIG. 16) and tasks that can be rescheduled (e.g., tasks located outside the red zone 1610 in FIG. 16). Only tasks that can still be rescheduled are then passed to block 1510 of the process.
[0106] At block 1510, based on the tasks collected by the schedule calculation module 302, the schedule calculation module 302 identifies one or more opportunities. As discussed above, an opportunity represents the possibility that a given satellite of the network will perform a task (e.g., in the case of image acquisition, the possibility of capturing a desired image of the geographic location). Details of how opportunities are identified are described in more detail below.
[0107] In one embodiment, for each outstanding task collected by the schedule calculation module 302, an updated opportunity is generated at block 1510. The parameters of some of these opportunities may have changed by small amounts (e.g., based on small variations in trajectory) compared to the corresponding opportunity generated by the schedule calculation module 302 in a previous run.
[0108] In an alternative embodiment, a separate opportunity generator runs periodically outside of the schedule calculation module 302 to generate opportunities for all active tasks. For example, the generator could be scheduled to run every hour or whenever new true orbital elements (TLEs) are received for the satellites. The TLEs provide up-to-date information about the satellites' velocities and directions, and these updated orbits are taken into account when generating opportunities, which may differ slightly from previous calculations. Once calculated, these opportunities are placed in an opportunity cache, replacing previously calculated opportunities.
[0109] In this alternative embodiment using opportunity caching, when the schedule calculation module 302 is triggered, for example, by a new task, only an opportunity for the new task needs to be generated in block 1510. Opportunities for all other active tasks can be drawn from the opportunity cache. In this manner, significant processing time can be saved when executing the schedule calculation module 302, which may enable more optimal and timely scheduling of tasks.
[0110] Regardless of whether opportunities are generated for all tasks in block 1510 or opportunity caching is used for existing tasks, a set of total opportunities (representing all identified opportunities) is generated by the schedule calculation module 302 in block 1512.
[0111] In block 1514, the schedule calculation module 302 identifies and removes any opportunities that are deemed infeasible. An infeasible opportunity may be an opportunity that cannot be performed when other, previously scheduled tasks or activities scheduled for a given satellite are taken into consideration. For example, the schedule calculation module 302 may determine that a given satellite could, in principle, perform the task retrieved in block 1504 (within the constraints defined by the task). However, the schedule calculation module 302 may determine that the given satellite is already scheduled for maintenance when it is in the required position to perform the task. Thus, the schedule calculation module 302 may identify the corresponding opportunity as an infeasible opportunity, and thus, the opportunity is filtered from the set of total opportunities. The filtering of infeasible opportunities may be based on data retrieved from the reservation, custom activity, and locked activity database 1516. Such data may represent scheduled tasks and activities that cannot be rescheduled and, therefore, may prevent a given opportunity from actually being performed by the corresponding satellite.
[0112] Other constraints that may result in filtering opportunities from the set of total opportunities include the satellite already being scheduled to perform a task that was not fetched by the schedule calculation module 302 in block 1504 (e.g., a task generated by the satellite network operator rather than received by a customer of the satellite network operator), and existing custom activities reserved for the satellite that overlap with the opportunity.
[0113] At block 1518, a set of feasible opportunities (i.e., the opportunities remaining after filtering the infeasible opportunities from the set of total opportunities) is generated by the schedule calculation module 302.
[0114] At block 1520, as described above, the various feasible opportunities are optimized based on one or more constraints using the optimization module 804. At block 1522, details of any locked activities (e.g., activities located within the red zone 1610 of FIG. 16 ) are provided to the optimization module 804 so that the optimization module 804 can take such locked activities into account when performing the optimization process.
[0115] During the optimization process, a scheduling score (or simply "score") is calculated for each opportunity based on several parameters, including task priority, opportunity rarity, how many opportunities are available, future downlink availability, and task seniority (these parameters are described in more detail below). During each iteration of the optimization process, the schedule calculation module 302 is then configured to maximize the score by outputting a binary result (i.e., either the opportunity is selected or the opportunity is not selected). Also, as described in more detail below, constraints are set during the optimization process, such as to limit to one opportunity per task, to prevent overlap between opportunities corresponding to the same satellite, and to ensure that orbital constraints are respected to account for existing locked imagery, if any. According to some embodiments, the optimization problem can be solved using a linear programming tool, such as the COIN-OR Branch and Cut (CBC) solver and COIN-OR's PuLP library.
[0116] At block 1524, based on the results of the optimization process, the optimization module 804 outputs a set of selected opportunities representing the assignment of each task to a corresponding satellite in the network.
[0117] In block 1526, the schedule calculation module 302 synchronizes existing activities in the database 1528 based on the selected opportunity. For example, if an existing activity in the database 1528 is sufficiently similar to the selected opportunity (e.g., if both the selected opportunity and the imaging activity correspond to the same satellite and correspond to a task involving imaging the same or similar AoI at the same or similar time point (e.g., + / - 30 seconds)), the activity may be kept unchanged and the opportunity may be deleted. Otherwise, the schedule calculation module 302 cancels any active imaging activities scheduled for satellites that correspond to the selected opportunity and would overlap with the constraints defined for the opportunity. The schedule calculation module 302 generates new activities based on the selected opportunity, and the activities are uplinked to their assigned satellites. Once a new activity is created, it may be cross-checked against orbital limitations and other potential conflicts, if any. For example, the schedule calculation module 302 may check to see if an associated task was canceled during the optimization process, and if so, the activity may be deleted.
[0118] At block 1530, the received task assignments are completed and the schedule calculation module 302 waits to be triggered again at block 1502.
[0119] An example of a method for processing tasks is described with reference to Figure 17. The purpose of the method shown in Figure 17 is to prevent two or more instances of the optimization process from running in parallel. Generally, while the schedule calculation module 302 is optimizing a set of tasks, optimization is achieved by preventing new tasks received in the meantime from being included in the optimization. The method of Figure 17 may be performed periodically (e.g., hourly) and in response to new tasks received.
[0120] Beginning at block 1710, the status of the LOCK and QUEUE flags is checked.
[0121] At block 1712, the state of the LOCK flag is determined to be either locked (ie, the schedule calculation module 302 is currently running) or unlocked (ie, the schedule calculation module 302 is currently idle).
[0122] If the LOCK flag is determined to be in a locked state, tasks in the queue cannot be processed for the time being.
[0123] Therefore, at block 1714, the QUEUE flag is set to "requested" and at block 1716 the newly received task is queued.
[0124] If the status of the LOCK flag is determined to be unlocked, the schedule calculation module 302 is available to process tasks in the queue.
[0125] Therefore, in block 1718, the LOCK flag is set to "RUNNING", the QUEUE flag is cleared, and in block 120, the task in the queue is fetched by the schedule calculation module 302 and processed in a manner described in more detail below.
[0126] At block 1722 , if an error occurs during processing of the task, the LOCK flag is set to “idle” and at block 1724 processing returns to block 1710 .
[0127] At block 1728, the state of the QUEUE flag is determined.
[0128] If the QUEUE flag indicates that there are more tasks in the queue, processing returns to block 1710 .
[0129] If the QUEUE flag indicates that there are no more tasks in the queue, processing ends at block 1730 .
[0130] The functionality of the optimization module 804 will now be described in more detail.
[0131] During the optimization process and at the end of each iteration of the process, the optimization module 804's decision to keep one opportunity and not another is based on the solution of an optimization problem. Solving the optimization problem relies on identifying a maximum or minimum value of a function. The optimization module 804 assigns a score or heuristic to each opportunity based on several different factors. This initial score is updated during the optimization process. Once the optimization problem is solved, the resulting score ranks the various opportunities. According to some embodiments, the optimization problem is designed with the goal of obtaining the highest "total score," which is the sum of the scores assigned to each opportunity input to the optimization module 804.
[0132] In the following: ● “opps_ids” is a list of opportunity IDs that are input to the optimization module 804. ● "score" is a vector that maps opportunities to their scheduling_score. ● "opps_chosen" is a vector of variables that can be 0 or 1. opps_chosen[id] set to 1 means that the opportunity corresponding to [id] is selected. opps_chosen[id] set to 0 means that the opportunity corresponding to [id] has not been selected.
[0133] Therefore, the score formula is: sum(opps_chosen[id] × score[id] for ids in opps_ids)
[0134] With the optimization problem expressed in this way, it is now already possible to solve the problem algorithmically via linear optimization. If nothing else, the solution that maximizes the score would naturally be to set opps_chosen[id]=1 for all ids in opps_ids, meaning that all opportunities would be chosen. In theory, this solution would make sense because all tasks want to be executed (e.g., all image acquisition requests want to be competed for). However, in practice, many constraints make this impossible. To properly express the optimization problem, these constraints need to be translated into a mathematical formula.
[0135] The constraints include the following: 1. Two images cannot be taken simultaneously; in particular, the two acquisitions must be separated by a minimum amount of time. Two opportunities that are too close in time are said to be "colliding." 2. The duration of a single image cannot exceed a certain maximum duration. 3. A certain maximum number of images can be taken in a single satellite orbit. 4. The total time spent imaging during a given orbit (this depends on the total number of images requested during the orbit). 5. Only one opportunity can be selected for a given task.
[0136] Constraint 1 To express the constraint mathematically, the equation should be formulated in terms of the components of the vector opps_chosen. Suppose i and j are two conflicting opportunities. The optimization module 804 wants to choose only one of them. One way to express this is by using the following equation: opps_chosen[i]+opps_chosen[j]<=1
[0137] Therefore, opps_chosen[i] and opps_chosen[i] cannot both be equal to 1 because they would sum to 2, which violates the contract. In this case, either opportunity or neither opportunity (but not both) will be selected.
[0138] Constraint 2 Let opp_1, opp_2, ... opp_n be the opportunities that can fulfill a given task. The constraints can be expressed as follows: sum(opps_chosen[opp_i] for i in [|1...n|]) <= 1
[0139] This constraint must be used for all tasks considered by the optimization module 804 .
[0140] Constraint 3 We introduce Nmax as the maximum number of images that can be taken per orbit, and let opp_1, opp_2, ... opp_n be a set of opportunities in the same orbit. This imposes the constraint sum(opps_chosen[opp_i]~i)<=Nmax ~i means "for i in [|1...n|]".
[0141] This needs to be repeated for all orbits of all satellites. Nmax can be different for different satellites.
[0142] Constraint 4 Rather than using a mathematical formula for this constraint, it is easiest to eliminate the chance that performing the task will exceed the imaging duration.
[0143] Constraint 5 Since the total time spent imaging during a given trajectory depends on the total number of images requested during the trajectory, max_duration is introduced to represent the maximum image duration allowed per number of images. For example, max_duration[3]==95s means that the maximum total duration of three images taken in one trajectory is 95 seconds. For example, 30s + 30s + 30s is valid, but 40s + 30s + 30s is not. If four images are desired, the total imaging duration must not exceed max_duration[4], and so on.
[0144] One might be tempted to express this constraint as sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(sum(opps_chosen[opp_i]~i) However, this formula is not a valid formula for basic linear optimization problems because the right-hand side cannot be a function of the variables.
[0145] Another option would be to reformulate the equation in a similar way to the previous constraints, adding additional constraints to the set while considering all possible combinations of 1, 2, ..., Nmax opportunities.
[0146] Let k be a number in [1...Nmax] and let opp_i, for i in [1...k], be a set of k opportunities in a given trajectory (out of all opportunities for that trajectory). The constraint then becomes: sum(duration[opp_i] x opps_chosen[opp_i]) <= max_duration(k) for i in [|1..k|]
[0147] Consider 10 opportunities and assume Nmax is 5. First, add all constraints to all sets of 2 opportunities to be an image, which is 10 x 9 = 90 tuples. Then add all constraints to all sets of 3 opportunities to be an image, which is 10 x 9 x 8 = 720 tuples. Then add all constraints to all sets of 4 opportunities to be an image, which is 10 x 9 x 8 x 7 = 5040 tuples. Then add all constraints to all sets of 5 opportunities to be an image, which is 10 x 9 x 8 x 7 x 6 = 30240 tuples.
[0148] While still a relatively small number in this example, with Nmax=7 and 20 opportunities, we can see that we would need to add another 400 million constraints to just that trajectory. Therefore, a different approach may be necessary.
[0149] According to another approach, Nmax constraints are added to each trajectory. sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(2) sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(3) ... sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(Nmax)
[0150] The problem here is that the problem may be over-constrained. Ideally, a single constraint should be chosen based on a given condition.
[0151] To do so, we use an additional set of variables: a set of variables (per orbital) is introduced for k in [|1...Nmax|]. is_equal_to[k]=1 if sum(opps_chosen[opp_i]~i)==k, otherwise 0
[0152] A set of such variables can then be inserted into the above constraints. sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(2)+M x(1-is_equal_to[2]) sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(3)+M x(1-is_equal_to[3]) ... sum(duration[opp_i]x opps_chosen[opp_i]~i)<=max_duration(Nmax)+M x(1-is_equal_to[Nmax]) where M is a large number such that the constraint is essentially useless if (1-is_equal_to[k])=1.
[0153] However, this formula is also not suitable for linear optimization.
[0154] Therefore, we introduce two other sets of variables to replace is_equal_to: for k in [|1...Nmax|], is_more_than[k]=1 if sum(opps_chosen[opp_i]~i)>=k, otherwise 0 is_less_than[k]=1 if sum(opps_chosen[opp_i]~i)<=k, otherwise 0
[0155] Although this is also not suitable for linear optimization, the formula can be transformed as follows: for k in [|1...Nmax|], is_more_than[k]>=(sum(opps_chosen[opp_i]~i)-k) / Nmax+0.0001 is_more_than[k]<=(sum(opps_chosen[opp_i]~i)-k) / Nmax+1.0001
[0156] Similarly, is_less_than[k]>=(k-sum(opps_chosen[opp_i]~i)) / Nmax+0.0001 is_less_than[k]<=(k-sum(opps_chosen[opp_i]~i)) / Nmax+1.0001
[0157] The "0.001" is used to avoid using strict inequalities, which are typically difficult to handle with linear optimization solvers.
[0158] As can be seen, for constraint 5, 2 × Nmax more variables were introduced, 4 × Nmax constraints were introduced on these variables, and Nmax constraints were strictly introduced to express the total imaging duration limit per orbit.
[0159] As described above, the optimization module 804 assigns a score or heuristic to each opportunity based on a number of different factors. This initial score is updated during the optimization process. Once the optimization problem is solved (based on the constraints above), the resulting scores rank the various opportunities. In essence, when two opportunities conflict, the optimization module 804 selects the opportunity with the higher score.
[0160] According to some embodiments, the score of an opportunity considers four parameters ordered by importance as follows: 1. Task priority, which can be divided into: Task hierarchy: This is the hundreds of task priorities, i.e., priorities 300 and 320 are third-tier priorities. b. Intra-hierarchy task priority: This is the priority excluding the task hierarchy, i.e., priority 320 is the intra-hierarchy task priority 20. 2. Task seniority, i.e., task age. If the scores of two different opportunities are determined to be equal based on consideration 1 above, the opportunity associated with the older task (i.e., the task with higher seniority) wins the tiebreaker. Task seniority may be determined using the task ID, since task IDs are generated based on the order of task creation. That is, a smaller task ID means a higher seniority. 3. The time distance from the present to the opportunity, which may be referred to in code as "opps ahead." This score may be used to prioritize one or more opportunities from a set of opportunities associated with a common task.
[0161] The score is based on the above three parameters, which are combined to generate a single score. Specifically, according to some embodiments, parameter 1 is weighted more heavily than parameter 2, which is weighted more heavily than parameter 3. As an example, Opportunity A, a task with task priority 300 and ID 100, will generate a higher score than Opportunity B, a task with task priority 199 and ID 1 (because the task priority of Opportunity A is higher than the task priority of Opportunity B).
[0162] According to some embodiments, each parameter is evaluated, normalized between 0 and 99, and then concatenated. Taking the example above, the scores for opportunities A and B would be generated as follows: ●Opportunity A: Hierarchy 3, addition 0, priority within hierarchy 00, rarity 10, future opportunities 99, seniority 01, so the result is 3000109901. ●Opportunity B: Hierarchy 1, additions 0, priority within hierarchy 99, rarity 99, future opportunities 99, seniority 99, so the total is 1099999999.
[0163] Since the score 3000109901 is higher than the score 1099999999, in the case of a collision, Opportunity A will win.
[0164] The parameters do not necessarily have to be ordered and weighted as described above. The parameters can be ordered or weighted differently depending on the situation. For example, if a priority for a network operator is to try to complete as many tasks as possible, rather than simply ensuring that high priority tasks are processed first, then task seniority may be the most important parameter and therefore weighted more heavily.
[0165] In some embodiments, other parameters may be included, or some of the above parameters may be excluded from the calculation of the score. In one example, a parameter related to future downlink availability may also be included in the scoring or may replace one of the existing parameters (e.g., task seniority) in the scoring. In one embodiment, future downlink availability may include how long it will take to downlink the corresponding data after the task is performed.
[0166] In many cases, such as with SAR imaging, the imaging task is not useful until the raw data has been downloaded from the satellite and processed into an image. This can occur on the satellite, but more typically, it occurs on Earth after the data has been downlinked. Traditionally, because the number of SAR satellites in orbit was small and SAR constellations included at most three satellites, recurrence times (the amount of time between successive imaging tasks of a particular area of interest) could be measured in weeks or months. Thus, SAR is used for tasks such as mapping or to look at changes that occur over long periods of time, in which the time it takes to downlink images is less important.
[0167] Recently, the advent of larger constellations of SAR satellites, particularly micro-SAR satellites with masses of approximately 100–500 kg each, has enabled satellites to return to the same location above Earth more frequently, for example, once per day, once per 12 hours, once per 6 hours, or even more frequently. Such improvements enable tracking of more dynamic scenes and objects, where the time between capturing an image and downlinking it to ground image data becomes more critical. For example, downlink availability becomes crucial when identifying and locating moving objects such as ships. The longer the time between capturing an image and downlinking it to ground, the more inaccurate (and therefore less valuable) the data becomes. Thus, opportunities with a short time between image capture and image downlink may be scored higher, potentially higher than images that can be captured sooner but that would have to wait longer before downlinking. Counterintuitively, later imaging opportunities may be preferable to earlier ones, where downlinking can occur immediately after image capture. In such cases, a scheduling system that prioritizes opportunities based solely on the time distance between the present and the opportunity will not reach optimal results. A scheduling system that takes into account the availability of future downlinks can help solve this problem. In some cases, if the time between image acquisition and downlinking of the image becomes too long, the value of the image may drop to zero, or the downlink may not even occur if there are other higher-scoring opportunities to schedule.
[0168] The above describes an embodiment that uses linear programming techniques to optimize scheduling by formulating the constraints of a satellite problem, particularly those related to small SAR satellites, in a manner that can be used in linear programming.
[0169] In another embodiment, constraint programming or constraint optimization approaches can be used instead of or in combination with linear programming to optimize the schedule of a network of satellites. Constraint programming can be used to identify feasible solutions when there are many possible solutions. Constraint programming can use arbitrary constraints, which do not necessarily have to be formulated as linear constraints.
[0170] The above-described embodiments are fully automatic, although in some instances a user or operator of the system may manually instruct some steps of the method to be performed.
[0171] In the described embodiments, the system may be implemented as any form of computing and / or electronic device. Such devices may include one or more processors, which may be a microprocessor, a controller, or any other suitable type of processor for processing computer-executable instructions to control the operation of the device. In some examples, for example, when a system-on-chip architecture is used, the processor may include one or more fixed function blocks (also called accelerators) that implement portions of the method in hardware (rather than software or firmware). Computing-based devices may be provided with platform software, including an operating system or any other suitable platform software, to enable application software to be executed on the device.
[0172] Various functions described herein may be implemented in hardware, software, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media may include, for example, computer-readable storage media. Computer-readable storage media may also include volatile or nonvolatile, removable or non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. A computer-readable storage medium may be any available medium that can be accessed by a computer. By way of example, and not limitation, such computer-readable media may include RAM, ROM, EEPROM, flash memory or other memory devices, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. As used herein, disc and diskette include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs (BDs). Additionally, propagating signals are not included within the scope of computer-readable storage media. Computer-readable media also includes communication media, including any medium that facilitates transfer of a computer program from one place to another. A connection may, for example, be a communications medium. For example, software transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave, is included within the definition of communications media. Combinations of the above should also be included within the scope of computer-readable media.
[0173] Alternatively, or in addition, the functions described herein may be performed, at least in part, by one or more hardware logic components, such as, but not limited to, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on a chip (SoCs), complex programmable logic devices (CPLDs), and the like.
[0174] Although illustrated as a single system, it should be understood that the computing device may be a distributed system, so that, for example, several devices may be in communication over network connections and may collectively perform tasks described as being performed by the computing device.
[0175] Although illustrated as a local device, it will be appreciated that the computing device may be remotely located and accessed via a network or other communications link (e.g., using a communications interface).
[0176] The term "computer" is also used herein to refer to any device having processing capabilities such that it can execute instructions. Those skilled in the art will understand that such processing capabilities may be incorporated into many different devices, and thus the term "computer" includes PCs, servers, mobile phones, personal digital assistants, and many other devices.
[0177] Those skilled in the art will understand that storage devices used to store program instructions may be distributed across a network. For example, a remote computer may store an example of a process described as software. A local or terminal computer may access the remote computer and download some or all of the software to execute the program. Alternatively, a local computer may download portions of the software as needed, or execute some software instructions at a local terminal and some at a remote computer (or computer network). Those skilled in the art will also understand that all or some of the software instructions may be executed by dedicated circuitry, such as a DSP, programmable logic array, or the like, by utilizing conventional techniques known to those skilled in the art.
[0178] It will be understood that the benefits and advantages described above may relate to one embodiment or to several embodiments, and embodiments are not limited to those that solve any or all of the described problems or that have any or all of the described benefits and advantages.
[0179] A reference to "an" item refers to one or more of those items. The term "comprising" is used herein to mean including specified method steps or elements, but such steps or elements do not comprise an exclusive list and a method or apparatus may include additional steps or elements.
[0180] As used herein, the terms "component" and "system" are intended to encompass computer-readable data storage comprised of computer-executable instructions that, when executed by a processor, cause a function to be performed. Computer-executable instructions may include routines, functions, etc. It should also be understood that a component or system may be localized on a single device or distributed across several devices.
[0181] Moreover, as used herein, the word "exemplary" is intended to mean "serving as an example or instance of something."
[0182] Furthermore, to the extent the term "include" is used in this specification or the claims, it is intended to be inclusive in a manner similar to "comprising" when interpreted when "comprising" is used as a transitional term in the claims.
[0183] The drawings illustrate exemplary methods. Although the methods are shown and described as a series of acts performed in a particular sequence, it should be understood and appreciated that the methods are not limited to that sequential order. For example, some acts may be performed in a different order than described herein. Furthermore, some acts may occur simultaneously with other acts. Furthermore, in some instances, not all acts are required to implement a method described herein.
[0184] The above description of preferred embodiments is provided by way of example only, and it will be understood that various modifications may be made by those skilled in the art. The above description includes one or more example embodiments. Of course, it is not possible to describe every conceivable modification and variation of the above-described devices or methods for purposes of describing the foregoing aspects, but those skilled in the art will recognize that many further modifications and permutations of the various aspects are possible. Accordingly, the described aspects are intended to encompass all such alternatives, modifications, and variations that fall within the scope of the appended claims.
[0185] It is further contemplated that any portion of any aspect or embodiment discussed herein can be implemented or combined with any portion of any other aspect or embodiment discussed herein.
[0186] As used in this specification and claims, the terms "comprises" and "comprising" and variations thereof mean that the specified features, steps or integers are included. These terms are not to be interpreted as excluding the presence of other features, steps or components.
[0187] The invention may also broadly reside in the parts, elements, steps, examples, and / or features referred to herein individually or collectively in any combination of two or more parts, elements, steps, examples, and / or features. Specifically, one or more features in any of the embodiments described herein may be combined with one or more features from any other embodiment described herein.
[0188] Protection may be sought for any feature disclosed in any one or more of the publications referenced herein in connection with this disclosure.
[0189] While certain example embodiments of the present invention have been described, the appended claims are not intended to be limited to only these embodiments. The claims should be construed literally, for purpose, and / or to encompass equivalents.
Claims
1. 1. A method for allocating tasks to a network of satellites, performed by one or more computer processors, comprising: receiving one or more tasks; For each task, (a) identifying one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task; (b) for each opportunity, a scheduling score, based on the following constraints for the tasks associated with the opportunity corresponding to the scheduling score: a priority assigned to said task; the duration until the satellite corresponding to the opportunity is available to perform the task; and future downlink availability; and (c) assigning at least one of the one or more tasks to the satellite corresponding to an opportunity identified for the at least one task based on each scheduling score.
2. identifying the one or more opportunities, determining one or more second task constraints associated with the task; identifying the one or more opportunities based on the one or more second task constraints; The one or more second task constraints are: the duration of the task, and the time at which the task needs to be completed; The method of claim 1.
3. at least one of the one or more received tasks is image acquisition; and The one or more second task constraints may include the following further constraints: an imaging geometry for said image acquisition; and [0033] a region of interest of the imaged subject; The method of claim 2.
4. identifying the one or more opportunities, determining one or more satellite constraints associated with each satellite of the network of satellites; identifying the one or more opportunities based on the one or more satellite constraints; The determining step comprises: Obtaining a predicted orbit for each satellite; determining one or more imaging geometries associated with at least one imaging device on each satellite; and A method according to any one of claims 1 to 3, comprising one or more of: determining one or more parameters relating to power availability for each satellite.
5. The method of any one of claims 1 to 4, wherein the future downlink availability comprises a duration between the performance of the task and the downlink of data obtained as a result of the performance of the task.
6. generating the scheduling score, The method of any one of claims 1 to 5, comprising generating the scheduling score based on the availability of the future downlinks.
7. generating the scheduling score is further based on the seniority of the task; The method according to any one of claims 1 to 6, wherein a task that has been received for a long time is given priority over a task that has been received for a short time.
8. generating the scheduling score, generating an initial score for each opportunity; and for each opportunity, generating the scheduling score by optimizing each initial score based on one or more optimization constraints.
9. The one or more optimization constraints are the following constraints: a given satellite cannot spend more than a maximum amount of time performing any task assigned to said satellite; a given satellite cannot spend more than a maximum amount of time performing one or more tasks assigned to said satellite during one orbit of said satellite; and A given task cannot be assigned to more than one satellite.
10. identifying the one or more opportunities, Identifying one or more initial opportunities; and filtering the one or more initial opportunities based on one or more requirements, including a requirement that no opportunities may be identified for a satellite that is scheduled to perform a task within a preset time window extending from a current time to a time in the future.
11. A method according to any preceding claim, wherein each satellite is a Synthetic Aperture Radar (SAR) satellite.
12. receiving a further task while performing one or more of steps (a), (b), and (c); and preventing the further task from being included in steps (a), (b), and (c). The method according to any one of claims 1 to 11.
13. before receiving the one or more tasks, For each task in the set of tasks, determining if the task is locked; If the task is locked, preventing the task from being included in steps (a), (b), and (c); 13. The method of claim 1, wherein determining whether the task is locked comprises determining whether the task is scheduled to be executed within a preset time window extending from a current time to a time in the future.
14. before the method identifies the one or more opportunities, generating one or more updated opportunities for at least one of the one or more tasks, each updated opportunity corresponding to a satellite in the network of satellites that may perform the task; storing each updated opportunity in an opportunity cache; identifying the one or more opportunities includes retrieving at least one updated opportunity from the opportunity cache; The method according to any one of claims 1 to 13.
15. The method of any one of claims 1 to 14, wherein generating the scheduling score comprises using linear programming by formulating the one or more task constraints as linear constraints.
16. 1. A system comprising: satellite networks and one or more ground stations; a computer-implemented scheduling device; The scheduling device receiving one or more tasks; For each task, identifying one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task; For each opportunity, a scheduling score is calculated based on the following constraints for the tasks associated with the opportunity corresponding to the scheduling score: a priority assigned to said task; the duration until the satellite corresponding to the opportunity is available to perform the task; and future downlink availability; and assigning at least one of the one or more tasks to the satellite corresponding to an opportunity identified for the at least one task based on each scheduling score; uplinking instructions to the satellite to which the assigned task is assigned to cause the satellite to perform the assigned task; A system that is configured to:
17. 1. A computer-implemented scheduling device for assigning tasks to a network of satellites, comprising: receiving one or more tasks; For each task, identifying one or more opportunities, each opportunity corresponding to a satellite in the network of satellites that may perform the task; For each opportunity, a scheduling score is calculated based on the following constraints for the tasks associated with the opportunity corresponding to the scheduling score: a priority assigned to said task; the duration until the satellite corresponding to the opportunity is available to perform the task; and future downlink availability; and assigning at least one of the one or more tasks to the satellite corresponding to an opportunity identified for the at least one task based on each scheduling score; A scheduling device configured to: