Beispiel #1
0
 def test_get_drones_involved(self):
     parallel_commands = ParallelDroneCommands()
     self.assertEqual(set(), parallel_commands.get_drones_involved())
     parallel_commands = ParallelDroneCommands(
         [[SingleDroneCommand("DRONE1", Command.takeoff())],
          [SingleDroneCommand("DRONE2", Command.takeoff())],
          [
              ParallelDroneCommands(
                  [[SingleDroneCommand("DRONE3", Command.takeoff())],
                   [SingleDroneCommand("DRONE4", Command.takeoff())]])
          ]])
     self.assertEqual({"DRONE1", "DRONE2", "DRONE3", "DRONE4"},
                      parallel_commands.get_drones_involved())
Beispiel #2
0
 def _update_states_to_wait_for_slowest_branch(
         self, parallel_drone_commands: ParallelDroneCommands,
         state_updaters: Dict[str, StateUpdater],
         drone_trajectory_map: Dict[str, List[State]],
         time_used_in_branches: List[float],
         drones_involved: Set[str]) -> float:
     longest_time_used = max(time_used_in_branches)
     # for each branch, let drones involved in the branch wait until longest_time_used
     for i, time_used in enumerate(time_used_in_branches):
         for name in parallel_drone_commands.drones_involved_each_branch[i]:
             wait_command = Command.wait(longest_time_used - time_used)
             self._update_states_for_single_drone_command(
                 SingleDroneCommand(name, wait_command),
                 state_updaters,
                 drone_trajectory_map,
                 drones_involved={name})
     # let drones not involved in any branch wait for longest_time_used
     for name in drones_involved.difference(
             parallel_drone_commands.get_drones_involved()):
         wait_command = Command.wait(longest_time_used)
         self._update_states_for_single_drone_command(
             SingleDroneCommand(name, wait_command),
             state_updaters,
             drone_trajectory_map,
             drones_involved={name})
     return longest_time_used
Beispiel #3
0
 def _update_states_to_wait_for_slowest_branch(
         self, parallel_drone_commands: ParallelDroneCommands,
         drone_state_map: Dict[str,
                               State], time_used_in_branches: List[float],
         drones_involved: Set[str]) -> float:
     longest_time_used = max(time_used_in_branches)
     # for each branch, let drones involved in the branch wait until longest_time_used
     for i, time_used in enumerate(time_used_in_branches):
         for name in parallel_drone_commands.drones_involved_each_branch[i]:
             old_state = drone_state_map[name]
             drone_state_map[
                 name] = old_state.copy_and_set_time_used_seconds(
                     old_state.time_used_seconds + longest_time_used -
                     time_used)
     # let drones not involved in any branch wait for longest_time_used
     for name in drones_involved.difference(
             parallel_drone_commands.get_drones_involved()):
         old_state = drone_state_map[name]
         drone_state_map[name] = old_state.copy_and_set_time_used_seconds(
             old_state.time_used_seconds + longest_time_used)
     return longest_time_used