brian.motors package¶
Subpackages¶
brian.motors.EV3LargeMotor module¶
brian.motors.EV3MediumMotor module¶
brian.motors.Motor module¶
- class brian.motors.Motor.Motor(port: MotorPort)¶
Bases:
objectA 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:
MotorPortAlreadyInUse – When trying to create new Motor on a port that is already in use.
MotorInitializationFailedError – If autodetect fails (motor is not connected, unknown type of the connected motor).
- __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_connectedis done internally, if it returns false,is_readywill 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:
Trueif the motor has reached the goal.Trueif the maneuver had to be interrupted (e.g., motor was unplugged).Falseif 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¶
brian.motors.MovementEnd module¶
brian.motors.NXTMotor module¶
Module contents¶
- exception brian.motors.MotorException¶
Bases:
ExceptionDefault motor Exception
- exception brian.motors.MotorAlreadyClosedError¶
Bases:
MotorExceptionThrown when trying to access closed Motor
- exception brian.motors.MotorInitializationFailedError¶
Bases:
MotorExceptionThrown when motor initialization fails during innit
- exception brian.motors.MotorPortAlreadyInUse¶
Bases:
MotorExceptionThrown when trying to register motor or motor probe with port mode to already used port