ME 405 Term Project
Loading...
Searching...
No Matches
motor_task.MotorControlTask Class Reference

Public Member Functions

 __init__ (self, left_motor, right_motor, left_encoder, right_encoder, battery, eff, mtr_enable, motor_data_ready, run_observer, abort, driving_mode, setpoint, kp, ki, control_mode, start_time, time_sh, left_pos_sh, right_pos_sh, left_vel_sh, right_vel_sh, left_sp_sh, right_sp_sh, left_eff_sh, right_eff_sh)
 run (self)

Public Attributes

 left_motor = left_motor
 right_motor = right_motor
 left_encoder = left_encoder
 right_encoder = right_encoder
 battery = battery
 eff = eff
 driving_mode = driving_mode
 setpoint = setpoint
 kp = kp
 ki = ki
 control_mode = control_mode
 left_sp_sh = left_sp_sh
 right_sp_sh = right_sp_sh
 left_eff_sh = left_eff_sh
 right_eff_sh = right_eff_sh
 start_time = start_time
 time_sh = time_sh
 left_pos_sh = left_pos_sh
 right_pos_sh = right_pos_sh
 left_vel_sh = left_vel_sh
 right_vel_sh = right_vel_sh
 mtr_enable = mtr_enable
 abort = abort
 motor_data_ready = motor_data_ready
 run_observer = run_observer
 left_controller = ClosedLoop(self.kp, self.ki, self.left_sp_sh, self.battery, effort_limits=(-100, 100))
 right_controller = ClosedLoop(self.kp, self.ki, self.right_sp_sh, self.battery, effort_limits=(-100, 100))
int t0 = 0
int state = self.S0_INIT
 0: INIT STATE -----------------------------------------------—

Static Public Attributes

int S0_INIT = 0
int S1_WAIT_FOR_ENABLE = 1
int S2_RUN = 2

Protected Member Functions

 _split_setpoints (self, driving_mode_val, setpoint)

Detailed Description

Handles reading from encoders and actuating motors, updates encoder position and velocity

Attributes:
    left_motor: Motor object for the left motor
    right_motor: Motor object for the right motor
    left_encoder: Encoder object for the left motor
    right_encoder: Encoder object for the right motor
    battery: Battery object for voltage monitoring and droop compensation
    eff: Share for desired effort command
    mtr_enable: Share flag to enable/disable motors
    motor_data_ready: Share flag indicating new motor data is available
    run_observer: Share flag to enable/disable state estimator
    abort: Share flag to abort motor operation
    driving_mode: Share for driving mode (0=straight, 1=pivot, 2=arc)
    setpoint: Share for desired setpoint (effort or velocity)
    kp: Share for proportional gain of the controller
    ki: Share for integral gain of the controller
    control_mode: Share for control mode (0=effort, 1=velocity, 2=line follow)
    start_time: Share for logging start time when motors are enabled
    time_sh: Share for logging timestamps of motor data
    left_pos_sh: Share for logging left encoder position
    right_pos_sh: Share for logging right encoder position
    left_vel_sh: Share for logging left encoder velocity
    right_vel_sh: Share for logging right encoder velocity
    left_sp_sh: Share for desired left motor setpoint (for closed-loop control)
    right_sp_sh: Share for desired right motor setpoint (for closed-loop control)
    left_eff_sh: Share for logging left motor effort command
    right_eff_sh: Share for logging right motor effort command

Constructor & Destructor Documentation

◆ __init__()

motor_task.MotorControlTask.__init__ ( self,
left_motor,
right_motor,
left_encoder,
right_encoder,
battery,
eff,
mtr_enable,
motor_data_ready,
run_observer,
abort,
driving_mode,
setpoint,
kp,
ki,
control_mode,
start_time,
time_sh,
left_pos_sh,
right_pos_sh,
left_vel_sh,
right_vel_sh,
left_sp_sh,
right_sp_sh,
left_eff_sh,
right_eff_sh )

Initialize the object's attributes

Member Function Documentation

◆ _split_setpoints()

motor_task.MotorControlTask._split_setpoints ( self,
driving_mode_val,
setpoint )
protected

HELPER FUNCTIONS

Split setpoints for left and right motors based on driving mode

mode 0: straight  -> (spL, spR) = ( sp,  sp)
mode 1: pivot     -> (spL, spR) = ( sp, -sp)
mode 2: arc       -> (spL, spR) = ( sp, sp*RATIO )

◆ run()

motor_task.MotorControlTask.run ( self)

FINITE STATE MACHINE

Member Data Documentation

◆ abort

motor_task.MotorControlTask.abort = abort

◆ battery

motor_task.MotorControlTask.battery = battery

◆ control_mode

motor_task.MotorControlTask.control_mode = control_mode

◆ driving_mode

motor_task.MotorControlTask.driving_mode = driving_mode

◆ eff

motor_task.MotorControlTask.eff = eff

◆ ki

motor_task.MotorControlTask.ki = ki

◆ kp

motor_task.MotorControlTask.kp = kp

◆ left_controller

motor_task.MotorControlTask.left_controller = ClosedLoop(self.kp, self.ki, self.left_sp_sh, self.battery, effort_limits=(-100, 100))

◆ left_eff_sh

motor_task.MotorControlTask.left_eff_sh = left_eff_sh

◆ left_encoder

motor_task.MotorControlTask.left_encoder = left_encoder

◆ left_motor

motor_task.MotorControlTask.left_motor = left_motor

◆ left_pos_sh

motor_task.MotorControlTask.left_pos_sh = left_pos_sh

◆ left_sp_sh

motor_task.MotorControlTask.left_sp_sh = left_sp_sh

◆ left_vel_sh

motor_task.MotorControlTask.left_vel_sh = left_vel_sh

◆ motor_data_ready

motor_task.MotorControlTask.motor_data_ready = motor_data_ready

◆ mtr_enable

motor_task.MotorControlTask.mtr_enable = mtr_enable

◆ right_controller

motor_task.MotorControlTask.right_controller = ClosedLoop(self.kp, self.ki, self.right_sp_sh, self.battery, effort_limits=(-100, 100))

◆ right_eff_sh

motor_task.MotorControlTask.right_eff_sh = right_eff_sh

◆ right_encoder

motor_task.MotorControlTask.right_encoder = right_encoder

◆ right_motor

motor_task.MotorControlTask.right_motor = right_motor

◆ right_pos_sh

motor_task.MotorControlTask.right_pos_sh = right_pos_sh

◆ right_sp_sh

motor_task.MotorControlTask.right_sp_sh = right_sp_sh

◆ right_vel_sh

motor_task.MotorControlTask.right_vel_sh = right_vel_sh

◆ run_observer

motor_task.MotorControlTask.run_observer = run_observer

◆ S0_INIT

int motor_task.MotorControlTask.S0_INIT = 0
static

◆ S1_WAIT_FOR_ENABLE

int motor_task.MotorControlTask.S1_WAIT_FOR_ENABLE = 1
static

◆ S2_RUN

int motor_task.MotorControlTask.S2_RUN = 2
static

◆ setpoint

motor_task.MotorControlTask.setpoint = setpoint

◆ start_time

motor_task.MotorControlTask.start_time = start_time

◆ state

int motor_task.MotorControlTask.state = self.S0_INIT

0: INIT STATE -----------------------------------------------—

1: WAITING STATE --------------------------------------------—

◆ t0

motor_task.MotorControlTask.t0 = 0

◆ time_sh

motor_task.MotorControlTask.time_sh = time_sh

The documentation for this class was generated from the following file: