Exemplo n.º 1
0
 def test_to_command_str(self):
     parallel_commands = ParallelDroneCommands()
     parallel_commands.add([])
     parallel_commands.add([
         SingleDroneCommand("abc", Command.takeoff()),
         SingleDroneCommand("abc", Command.up(1))
     ])
     self.assertEqual("{ } || { abc.takeoff(); abc.up(1); };",
                      parallel_commands.to_command_str())
     outer_parallel_commands = ParallelDroneCommands()
     outer_parallel_commands.add([])
     outer_parallel_commands.add([parallel_commands])
     self.assertEqual("{ } || { { } || { abc.takeoff(); abc.up(1); }; };",
                      outer_parallel_commands.to_command_str())
Exemplo n.º 2
0
    def _update_states_and_check_parallel_drone_commands(
            self, parallel_drone_commands: ParallelDroneCommands,
            state_updaters: Dict[str, StateUpdater],
            drone_state_map: Dict[str,
                                  State], drones_involved: Set[str]) -> float:
        assert len(parallel_drone_commands.branches) > 0
        time_used_in_branches = self._update_states_and_check_for_each_branch(
            parallel_drone_commands, state_updaters, drone_state_map)
        longest_time_used = self._update_states_to_wait_for_slowest_branch(
            parallel_drone_commands, drone_state_map, time_used_in_branches,
            drones_involved)

        for name, state in drone_state_map.items():
            try:
                self.boundary_config.check_state(name, state)
            except SafetyCheckError as e:
                raise SafetyCheckError(
                    "When running command '{}', boundary limits are violated: {}"
                    .format(parallel_drone_commands.to_command_str(), str(e)))
        return longest_time_used