class
AbstractMotor
Contents
Base classes
-
template<typename T>class ControllerOutput
Derived classes
- class Motor
- class MotorGroup
Public types
- struct GearsetRatioPair
- A simple structure representing the full ratio between motor and wheel.
- enum brakeMode { coast = 0, brake = 1, hold = 2, invalid = INT32_MAX }
- Indicates the 'brake mode' of a motor.
- enum encoderUnits { degrees = 0, rotations = 1, counts = 2, invalid = INT32_MAX }
- Indicates the units used by the motor encoders.
- enum gearset { red = 100, green = 200, blue = 600, invalid = INT32_MAX }
- Indicates the internal gear ratio of a motor.
Constructors, destructors, conversion operators
- ~AbstractMotor() virtual
Public functions
- auto moveAbsolute(double iposition, std::int32_t ivelocity) -> std::int32_t pure virtual
- Motor movement functions.
- auto moveRelative(double iposition, std::int32_t ivelocity) -> std::int32_t pure virtual
- Sets the relative target position for the motor to move to.
- auto moveVelocity(std::int16_t ivelocity) -> std::int32_t pure virtual
- Sets the velocity for the motor.
- auto moveVoltage(std::int16_t ivoltage) -> std::int32_t pure virtual
- Sets the voltage for the motor from -12000 to 12000.
- auto modifyProfiledVelocity(std::int32_t ivelocity) -> std::int32_t pure virtual
- Changes the output velocity for a profiled movement (moveAbsolute or moveRelative).
- auto getTargetPosition() -> double pure virtual
- Motor telemetry functions.
- auto getPosition() -> double pure virtual
- Gets the absolute position of the motor in its encoder units.
- auto getPositionError() -> double
- Gets the positional error (target position minus actual position) of the motor in its encoder units.
- auto tarePosition() -> std::int32_t pure virtual
- Sets the "absolute" zero position of the motor to its current position.
- auto getTargetVelocity() -> std::int32_t pure virtual
- Gets the velocity commanded to the motor by the user.
- auto getActualVelocity() -> double pure virtual
- Gets the actual velocity of the motor.
- auto getVelocityError() -> double
- Gets the difference between the target velocity of the motor and the actual velocity of the motor.
- auto getCurrentDraw() -> std::int32_t pure virtual
- Gets the current drawn by the motor in mA.
- auto getDirection() -> std::int32_t pure virtual
- Gets the direction of movement for the motor.
- auto getEfficiency() -> double pure virtual
- Gets the efficiency of the motor in percent.
- auto isOverCurrent() -> std::int32_t pure virtual
- Checks if the motor is drawing over its current limit.
- auto isOverTemp() -> std::int32_t pure virtual
- Checks if the motor's temperature is above its limit.
- auto isStopped() -> std::int32_t pure virtual
- Checks if the motor is stopped.
- auto getZeroPositionFlag() -> std::int32_t pure virtual
- Checks if the motor is at its zero position.
- auto getFaults() -> uint32_t pure virtual
- Gets the faults experienced by the motor.
- auto getFlags() -> uint32_t pure virtual
- Gets the flags set by the motor's operation.
- auto getRawPosition(std::uint32_t* timestamp) -> std::int32_t pure virtual
- Gets the raw encoder count of the motor at a given timestamp.
- auto getPower() -> double pure virtual
- Gets the power drawn by the motor in Watts.
- auto getTemperature() -> double pure virtual
- Gets the temperature of the motor in degrees Celsius.
- auto getTorque() -> double pure virtual
- Gets the torque generated by the motor in Newton Metres (Nm).
- auto getVoltage() -> std::int32_t pure virtual
- Gets the voltage delivered to the motor in millivolts.
- auto setBrakeMode(brakeMode imode) -> std::int32_t pure virtual
- Motor configuration functions.
- auto getBrakeMode() -> brakeMode pure virtual
- Gets the brake mode that was set for the motor.
- auto setCurrentLimit(std::int32_t ilimit) -> std::int32_t pure virtual
- Sets the current limit for the motor in mA.
- auto getCurrentLimit() -> std::int32_t pure virtual
- Gets the current limit for the motor in mA.
- auto setEncoderUnits(encoderUnits iunits) -> std::int32_t pure virtual
- Sets one of encoderUnits for the motor encoder.
- auto getEncoderUnits() -> encoderUnits pure virtual
- Gets the encoder units that were set for the motor.
- auto setGearing(gearset igearset) -> std::int32_t pure virtual
- Sets one of gearset for the motor.
- auto getGearing() -> gearset pure virtual
- Gets the gearset that was set for the motor.
- auto setReversed(bool ireverse) -> std::int32_t pure virtual
- Sets the reverse flag for the motor.
- auto setVoltageLimit(std::int32_t ilimit) -> std::int32_t pure virtual
- Sets the voltage limit for the motor in Volts.
- auto getEncoder() -> std::shared_ptr<ContinuousRotarySensor> pure virtual
- Returns the encoder associated with this motor.
Enum documentation
enum okapi:: AbstractMotor:: encoderUnits
Indicates the units used by the motor encoders.
Enumerators | |
---|---|
degrees |
degrees |
rotations |
rotations |
counts |
counts |
invalid |
invalid |
Function documentation
std::int32_t okapi:: AbstractMotor:: moveAbsolute(double iposition,
std::int32_t ivelocity) pure virtual
Motor movement functions.
Parameters | |
---|---|
iposition | The absolute position to move to in the motor's encoder units |
ivelocity | The maximum allowable velocity for the movement in RPM |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
These functions allow programmers to make motors move Sets the target absolute position for the motor to move to.
This movement is relative to the position of the motor when initialized or the position when it was most recently reset with setZeroPosition().
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: moveRelative(double iposition,
std::int32_t ivelocity) pure virtual
Sets the relative target position for the motor to move to.
Parameters | |
---|---|
iposition | The relative position to move to in the motor's encoder units |
ivelocity | The maximum allowable velocity for the movement in RPM |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This movement is relative to the current position of the motor. Providing 10.0 as the position parameter would result in the motor moving clockwise 10 units, no matter what the current position is.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: moveVelocity(std::int16_t ivelocity) pure virtual
Sets the velocity for the motor.
Parameters | |
---|---|
ivelocity | The new motor velocity from -+-100, +-200, or +-600 depending on the motor's gearset |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This velocity corresponds to different actual speeds depending on the gearset used for the motor. This results in a range of +-100 for pros::c::red, +-200 for green, and +-600 for blue. The velocity is held with PID to ensure consistent speed, as opposed to setting the motor's voltage.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: moveVoltage(std::int16_t ivoltage) pure virtual
Sets the voltage for the motor from -12000 to 12000.
Parameters | |
---|---|
ivoltage | The new voltage value from -12000 to 12000 |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: modifyProfiledVelocity(std::int32_t ivelocity) pure virtual
Changes the output velocity for a profiled movement (moveAbsolute or moveRelative).
Parameters | |
---|---|
ivelocity | The new motor velocity from -+-100, +-200, or +-600 depending on the motor's gearset |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This will have no effect if the motor is not following a profiled movement.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getTargetPosition() pure virtual
Motor telemetry functions.
Returns | The target position in its encoder units or PROS_ERR_F if the operation failed, setting errno. |
---|
These functions allow programmers to collect telemetry from motors Gets the target position set for the motor by the user.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getPosition() pure virtual
Gets the absolute position of the motor in its encoder units.
Returns | The motor's absolute position in its encoder units or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getPositionError()
Gets the positional error (target position minus actual position) of the motor in its encoder units.
Returns | The motor's positional error in its encoder units or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: tarePosition() pure virtual
Sets the "absolute" zero position of the motor to its current position.
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: getTargetVelocity() pure virtual
Gets the velocity commanded to the motor by the user.
Returns | The commanded motor velocity from +-100, +-200, or +-600, or PROS_ERR if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getActualVelocity() pure virtual
Gets the actual velocity of the motor.
Returns | The motor's actual velocity in RPM or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getVelocityError()
Gets the difference between the target velocity of the motor and the actual velocity of the motor.
Returns | The motor's velocity error in RPM or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: getCurrentDraw() pure virtual
Gets the current drawn by the motor in mA.
Returns | The motor's current in mA or PROS_ERR if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: getDirection() pure virtual
Gets the direction of movement for the motor.
Returns | 1 for moving in the positive direction, -1 for moving in the negative direction, and PROS_ERR if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getEfficiency() pure virtual
Gets the efficiency of the motor in percent.
Returns | The motor's efficiency in percent or PROS_ERR_F if the operation failed, setting errno. |
---|
An efficiency of 100% means that the motor is moving electrically while drawing no electrical power, and an efficiency of 0% means that the motor is drawing power but not moving.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: isOverCurrent() pure virtual
Checks if the motor is drawing over its current limit.
Returns | 1 if the motor's current limit is being exceeded and 0 if the current limit is not exceeded, or PROS_ERR if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: isOverTemp() pure virtual
Checks if the motor's temperature is above its limit.
Returns | 1 if the temperature limit is exceeded and 0 if the the temperature is below the limit, or PROS_ERR if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: isStopped() pure virtual
Checks if the motor is stopped.
Returns | 1 if the motor is not moving, 0 if the motor is moving, or PROS_ERR if the operation failed, setting errno |
---|
Although this function forwards data from the motor, the motor presently does not provide any value. This function returns PROS_ERR with errno set to ENOSYS.
std::int32_t okapi:: AbstractMotor:: getZeroPositionFlag() pure virtual
Checks if the motor is at its zero position.
Returns | 1 if the motor is at zero absolute position, 0 if the motor has moved from its absolute zero, or PROS_ERR if the operation failed, setting errno |
---|
Although this function forwards data from the motor, the motor presently does not provide any value. This function returns PROS_ERR with errno set to ENOSYS.
uint32_t okapi:: AbstractMotor:: getFaults() pure virtual
Gets the faults experienced by the motor.
Returns | A currently unknown bitfield containing the motor's faults. 0b00000100 = Current Limit Hit |
---|
Compare this bitfield to the bitmasks in pros::motor_fault_e_t.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
uint32_t okapi:: AbstractMotor:: getFlags() pure virtual
Gets the flags set by the motor's operation.
Returns | A currently unknown bitfield containing the motor's flags. These seem to be unrelated to the individual get_specific_flag functions |
---|
Compare this bitfield to the bitmasks in pros::motor_flag_e_t.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: getRawPosition(std::uint32_t* timestamp) pure virtual
Gets the raw encoder count of the motor at a given timestamp.
Parameters | |
---|---|
timestamp | A pointer to a time in milliseconds for which the encoder count will be returned. If NULL, the timestamp at which the encoder count was read will not be supplied |
Returns | The raw encoder count at the given timestamp or PROS_ERR if the operation failed. |
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getPower() pure virtual
Gets the power drawn by the motor in Watts.
Returns | The motor's power draw in Watts or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getTemperature() pure virtual
Gets the temperature of the motor in degrees Celsius.
Returns | The motor's temperature in degrees Celsius or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
double okapi:: AbstractMotor:: getTorque() pure virtual
Gets the torque generated by the motor in Newton Metres (Nm).
Returns | The motor's torque in NM or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: getVoltage() pure virtual
Gets the voltage delivered to the motor in millivolts.
Returns | The motor's voltage in V or PROS_ERR_F if the operation failed, setting errno. |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: setBrakeMode(brakeMode imode) pure virtual
Motor configuration functions.
Parameters | |
---|---|
imode | The new motor brake mode to set for the motor |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
These functions allow programmers to configure the behavior of motors Sets one of brakeMode to the motor.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
brakeMode okapi:: AbstractMotor:: getBrakeMode() pure virtual
Gets the brake mode that was set for the motor.
Returns | One of brakeMode, according to what was set for the motor, or brakeMode:: |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: setCurrentLimit(std::int32_t ilimit) pure virtual
Sets the current limit for the motor in mA.
Parameters | |
---|---|
ilimit | The new current limit in mA |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: getCurrentLimit() pure virtual
Gets the current limit for the motor in mA.
Returns | The motor's current limit in mA or PROS_ERR if the operation failed, setting errno. |
---|
The default value is 2500 mA.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: setEncoderUnits(encoderUnits iunits) pure virtual
Sets one of encoderUnits for the motor encoder.
Parameters | |
---|---|
iunits | The new motor encoder units |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
encoderUnits okapi:: AbstractMotor:: getEncoderUnits() pure virtual
Gets the encoder units that were set for the motor.
Returns | One of encoderUnits according to what is set for the motor or encoderUnits:: |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: setGearing(gearset igearset) pure virtual
Sets one of gearset for the motor.
Parameters | |
---|---|
igearset | The new motor gearset |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
gearset okapi:: AbstractMotor:: getGearing() pure virtual
Gets the gearset that was set for the motor.
Returns | One of gearset according to what is set for the motor, or gearset:: |
---|
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: setReversed(bool ireverse) pure virtual
Sets the reverse flag for the motor.
Parameters | |
---|---|
ireverse | True reverses the motor, false is default |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This will invert its movements and the values returned for its position.
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::int32_t okapi:: AbstractMotor:: setVoltageLimit(std::int32_t ilimit) pure virtual
Sets the voltage limit for the motor in Volts.
Parameters | |
---|---|
ilimit | The new voltage limit in Volts |
Returns | 1 if the operation was successful or PROS_ERR if the operation failed, setting errno. |
This function uses the following values of errno when an error state is reached: EACCES - Another resource is currently trying to access the port.
std::shared_ptr<ContinuousRotarySensor> okapi:: AbstractMotor:: getEncoder() pure virtual
Returns the encoder associated with this motor.
Returns | the encoder for this motor |
---|