Esempio n. 1
0
class BotController(object):
    """
    This controller uses PID in a closed-loop to stabilise bot speed regardless
    of surface it is on (hard, carpet, asphalt).

    It also presents signed ticks and signed speed readings to the user,
    courtesy of Helper class (see below).

    This class expects that its on_timer() method is called at 100Hz frequency.
    """

    def __init__(self, config):
        self._motors = Motors(config)
        self._sensors = Sensors(config)

        def left_speed():
            return self._sensors.speed_left

        def right_speed():
            return self._sensors.speed_right

        def left_ticks():
            return self._sensors.enc_ticks_left

        def right_ticks():
            return self._sensors.enc_ticks_left

        self._left = Helper(speed_sensor=left_speed,
                            ticks_sensor=left_ticks)
        self._right = Helper(speed_sensor=right_speed,
                             ticks_sensor=right_ticks)

    def start(self):
        self._sensors.start()

    def stop(self):
        self._motors.run(0, 0)
        self._motors.close()
        self._sensors.stop()

    def on_timer(self):
        self._sensors.read()

        self._left.on_timer()
        self._right.on_timer()
        self._motors.run(self._left.torque, self._right.torque)

    def run(self, speed_left, speed_right):
        self._left.run(speed_left)
        self._right.run(speed_right)

    @property
    def ticks(self):
        return self._left.ticks, self._right.ticks

    @property
    def actual_speed(self):
        return self._left.speed, self._right.speed

    @property
    def timer(self):
        return self._sensors.timer

    @property
    def values(self):
        return self._sensors.values
Esempio n. 2
0
from robot.motor import Motors
from robot.sensors import Sensors
import config
import time

if __name__ == '__main__':

	SPEED = 40

	motors = Motors(config)
	sensors = Sensors(config)
	sensors.start()

	torque = 0

	data = []

	for _ in range(300):
		time.sleep(0.01)
		sensors.read()
		
		data.append((sensors.timer, 
			sensors.speed_left, 
			sensors.speed_right, 
			sensors.enc_ticks_left, 
			sensors.enc_ticks_right, 
			torque))

		if _ == 50:
			torque = SPEED
			motors.run(SPEED, SPEED)
Esempio n. 3
0
class BotController(object):
    """
    This controller uses PID in a closed-loop to stabilise bot speed regardless
    of surface it is on (hard, carpet, asphalt).

    It also presents signed ticks and signed speed readings to the user,
    courtesy of Helper class (see below).

    This class expects that its on_timer() method is called at 100Hz frequency.
    """
    def __init__(self, config):
        self._motors = Motors(config)
        self._sensors = Sensors(config)

        def left_speed():
            return self._sensors.speed_left

        def right_speed():
            return self._sensors.speed_right

        def left_ticks():
            return self._sensors.enc_ticks_left

        def right_ticks():
            return self._sensors.enc_ticks_right

        self._left = Helper(speed_sensor=left_speed, ticks_sensor=left_ticks)
        self._right = Helper(speed_sensor=right_speed,
                             ticks_sensor=right_ticks)

    def start(self):
        self._sensors.start()

    def stop(self):
        self._motors.run(0, 0)
        self._motors.close()
        self._sensors.stop()

    def on_timer(self):
        self._sensors.read()

        self._left.on_timer()
        self._right.on_timer()
        self._motors.run(self._left.torque, self._right.torque)

    def run(self, speed_left, speed_right):
        self._left.run(speed_left)
        self._right.run(speed_right)

    @property
    def ticks(self):
        return self._left.ticks, self._right.ticks

    @property
    def actual_speed(self):
        return self._left.speed, self._right.speed

    @property
    def timer(self):
        return self._sensors.timer

    @property
    def values(self):
        return self._sensors.values
Esempio n. 4
0
from robot.motor import Motors
from robot.sensors import Sensors
import config
import time

if __name__ == '__main__':

    SPEED = 40

    motors = Motors(config)
    sensors = Sensors(config)
    sensors.start()

    torque = 0

    data = []

    for _ in range(300):
        time.sleep(0.01)
        sensors.read()

        data.append((sensors.timer, sensors.speed_left, sensors.speed_right,
                     sensors.enc_ticks_left, sensors.enc_ticks_right, torque))

        if _ == 50:
            torque = SPEED
            motors.run(SPEED, SPEED)

        if _ == 150:
            torque = -SPEED
            motors.run(-SPEED, -SPEED)