Example #1
0
    def __init__(self):
        self.command = CommandSocket()
        self.command.at_config('general:navdata_demo', 'TRUE')

        self._speed = 1.0
        self._axis_state = [0.0, ] * 4
Example #2
0
class ArDrone(object):
    def __init__(self):
        self.command = CommandSocket()
        self.command.at_config('general:navdata_demo', 'TRUE')

        self._speed = 1.0
        self._axis_state = [0.0, ] * 4

    def _update_moving(self):
        # print self._axis_state
        if max(*(abs(x) for x in self._axis_state)) < 0.01:
            self.hover()

        else:
            axis_state = map(lambda x: x * self._speed, self._axis_state)
            self.move(*axis_state)

    def flat_trim(self):
        self.command.at_ftrim()

    def watchdog(self):
        self.command.at_comwdg()

    def takeoff(self):
        self.command.at_ref(takeoff=True)

    def land(self):
        self.command.at_ref(takeoff=False)

    def emergency(self):
        self.command.at_ref(emergency=True)

    def reset(self):
        self.command.at_ref(emergency=True)
        self.command.at_ref(emergency=False)

    def hover(self):
        self.command.at_pcmd(False, False, 0.0, 0.0, 0.0, 0.0)

    def move(self, tilt_x, tilt_y, altitude, yaw, combined_yaw=True):
        self.command.at_pcmd(True, combined_yaw, tilt_x, tilt_y, altitude, yaw)

    @property
    def tilt_x(self):
        return self._axis_state[0]

    @tilt_x.setter
    def tilt_x(self, value):
        self._axis_state[0] = value
        self._update_moving()

    @property
    def tilt_y(self):
        return self._axis_state[1]

    @tilt_y.setter
    def tilt_y(self, value):
        self._axis_state[1] = value
        self._update_moving()

    @property
    def altitude(self):
        return self._axis_state[2]

    @altitude.setter
    def altitude(self, value):
        self._axis_state[2] = value
        self._update_moving()

    @property
    def yaw(self):
        return self._axis_state[3]

    @yaw.setter
    def yaw(self, value):
        self._axis_state[3] = value
        self._update_moving()

    @property
    def speed(self):
        return self._speed

    @speed.setter
    def speed(self, value):
        self._speed = value
        self._update_moving()