brian.motors package

Subpackages

brian.motors.EV3LargeMotor module

class brian.motors.EV3LargeMotor.EV3LargeMotor(port: MotorPort)

Bases: Motor

A class to manage and control EV3LargeMotor operations.

__init__(port: MotorPort)

Initialize a new EV3LargeMotor motor object on the given port.

This constructor does not fail if the motor is not connected yet.

Parameters:

port – Motor port to use.

brian.motors.EV3MediumMotor module

class brian.motors.EV3MediumMotor.EV3MediumMotor(port: MotorPort)

Bases: Motor

A class to manage and control EV3MediumMotor operations.

__init__(port: MotorPort)

Initialize a new EV3MediumMotor motor object on the given port.

This constructor does not fail if the motor is not connected yet.

Parameters:

port – Motor port to use.

brian.motors.Motor module

class brian.motors.Motor.Motor(port: MotorPort)

Bases: object

A class to manage and control motor operations.

property limits: MotorLimits

Configure various controller limits.

Returns:

MotorLimits object that can be used for configuring the limits.

property motor_type: MotorType

Check what motor type was this object initialized with.

Returns:

Properties and default settings of the connected motor type.

__init__(port: MotorPort)

Tries to autodetect a motor, connected to the given port and initialize a new motor class.

Parameters:

port – Motor port to use.

Raises:
__del__()

Release the motor port for other uses.

close_motor()

Release the motor port for other uses.

is_connected() → bool

Check if something is connected to the port.

Returns:

True if a non-empty port was detected; False otherwise.

is_ready() → bool

Check if a correct motor is connected to the port and is ready to be controlled.

Test for is_connected is done internally, if it returns false, is_ready will always return false.

Returns:

True if a motor is connected, and it is the correct type; False otherwise.

wait_until_ready(timeout_ms: int | None = None) → bool

Waits until the motor is ready. This function is blocking.

Parameters:

timeout_ms – Maximum number of milliseconds to wait. - If the timeout is not provided or is None, the function will wait indefinitely.

Return success:
  • True: The sensor is ready.

  • False: The sensor is not ready and timeout ran out.

current_angle() → int

Query the current motor angle.

Returns:

Motor axle angle in degrees.

reset_angle(new_value: int = 0) → None

Set the accumulated angle to the provided position.

Assuming that the motor will not move, current_angle() will start returning the value in newValue.

Parameters:

new_value – New motor position in degrees.

current_speed() → int

Query the current motor rotational speed.

Returns:

Motor axle speed in degrees/second.

current_torque() → int

Query the current estimated motor torque.

Returns:

Motor torque in milli-newton-meters.

is_stalled() → bool

Check if the motor is currently stalled.

Returns:

True if the motor is exceeding some limit, False otherwise.

coast() → None

Let the motor spin freely.

This will float the motor windings.

brake() → None

Passively brake the motor.

This will short the motor windings.

hold() → None

Actively brake the motor at the current position.

This will actively control the motor to stay at the current position.

run_unregulated(fraction: float) → None

Run the motor at a given fraction of the maximum available voltage.

Parameters:

fraction – Value between -1.0 and +1.0 that determines the duty cycle.

run_at_voltage(volts: float) → None

Run the motor at the given voltage.

Parameters:

volts – Desired voltage on the motors, in volts. Useful range is -battery voltage to +battery voltage (this is cca. -8V to +8V). The maximum range accepted by this function is -12V to +12V.

run_at_speed(deg_per_sec: int) → None

Run the motor at a constant speed.

Parameters:

deg_per_sec – Desired rotational speed, in degrees per second.

rotate_by_angle(angle: int, speed: int, timeout: int | None = None) → MovementEnd

Turn the motor to a new position, relative to the current position.

Parameters:
  • angle – Angle to rotate by, in degrees.

  • speed – Speed to use for the maneuver, in degrees per second. If the provided speed is negative, absolute value is used.

  • timeout – How long to wait for the maneuver to complete, in milliseconds. If zero, the function will return immediately. If the timeout expires, the motor is not stopped.

Returns:

Whether the wait-for-end was successful or why it ended, if it ended early.

rotate_to_angle(position: int, speed: int, timeout: int | None = None) → MovementEnd

Turn the motor to a new position, relative to the zero position.

Parameters:
  • position – Angle to rotate to, in degrees.

  • speed – Speed to use for the maneuver, in degrees per second. If the provided speed is negative, absolute value is used.

  • timeout – How long to wait for the maneuver to complete, in milliseconds. If zero, the function will return immediately. If the timeout expires, the motor is not stopped.

Returns:

Whether the wait-for-end was successful or why it ended, if it ended early.

rotate_to_angle_without_speed_control(position: int) → None

Try to get as fast as possible to the specified position.

This will ignore any speed and acceleration limits - you must provide these yourself by periodically calling this function with new positions.

Parameters:

position – Angle to rotate to relative to the zero position, in degrees.

movement_done() → bool

Check whether the last invoked position command has completed.

Returns:

True if the motor has reached the goal. True if the maneuver had to be interrupted (e.g., motor was unplugged). False if the motor is still moving.

wait_for_movement(timeout_ms: int | None = None) → MovementEnd

Wait for the motor to complete the last position command.

Parameters:

timeout_ms – How long to wait for the maneuver to complete, in milliseconds. If zero, the function will return immediately. If the timeout expires, the motor is not stopped.

Returns:

Whether the wait-for-end was successful or why it ended, if it ended early.

brian.motors.MotorPort module

class brian.motors.MotorPort.MotorPort(*values)

Bases: Enum

Motor port constants

A = 0

Motor port A

B = 1

Motor port B

C = 2

Motor port C

D = 3

Motor port D

brian.motors.MovementEnd module

class brian.motors.MovementEnd.MovementEnd(*values)

Bases: Enum

Reasons for movement end.

FINISHED = 0

Movement finished

TIMED_OUT = 1

Timed out

brian.motors.NXTMotor module

class brian.motors.NXTMotor.NXTMotor(port: MotorPort)

Bases: Motor

__init__(port: MotorPort)

Initialize a new NXTMotor motor object on the given port.

This constructor does not fail if the motor is not connected yet.

Parameters:

port – Motor port to use.

Module contents

exception brian.motors.MotorException

Bases: Exception

Default motor Exception

exception brian.motors.MotorAlreadyClosedError

Bases: MotorException

Thrown when trying to access closed Motor

exception brian.motors.MotorInitializationFailedError

Bases: MotorException

Thrown when motor initialization fails during innit

exception brian.motors.MotorPortAlreadyInUse

Bases: MotorException

Thrown when trying to register motor or motor probe with port mode to already used port