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