import wni.config as config
[docs]class AzElController(object):
"""Provides abstraction layer over the motor and actuator."""
_RECV_TIMEOUT = -1
def __init__(self, recv_timeout=-1):
from wni.util import ActuatorClient, MotorClient
self.actuator = ActuatorClient(recv_timeout=recv_timeout)
self.motor = MotorClient(config.MOTOR_ADDR, recv_timeout=recv_timeout)
self.last_data = []
[docs] def stop(self):
self.motor.stop()
[docs] def go_home(self):
self.motor.home()
@property
def acceleration(self):
acceleration = self.motor.get_acceleration()
return acceleration
@property
def home_angle(self):
return self.motor.home_angle
@home_angle.setter
def home_angle(self, val):
self.motor.home_angle = val
@acceleration.setter
def acceleration(self, value):
self.motor.acceleration(value)
@property
def is_spinning(self):
return self.motor.is_spinning
[docs] def spin(self):
self.motor.spin()
@property
def point(self):
return self.motor.get_actual_position()
@point.setter
def point(self, position):
self.motor.point(position)
@property
def degrees_per_second(self):
dps = self.motor.get_degrees_per_second()
return dps
@degrees_per_second.setter
def degrees_per_second(self, value):
self.motor.degrees_per_second(value)
@property
def elevation(self):
return self.actuator.position
@elevation.setter
def elevation(self, value):
self.actuator.position = value
if __name__ == '__main__':
az_el = AzElController()