LightLib
PROS library for VEX V5: EKF/MCL localization, RAMSETE path following, high-level chassis API
Loading...
Searching...
No Matches
okapi::DefaultOdomChassisController Class Reference

#include <defaultOdomChassisController.hpp>

Inheritance diagram for okapi::DefaultOdomChassisController:
okapi::OdomChassisController okapi::ChassisController

Public Member Functions

 DefaultOdomChassisController (const TimeUtil &itimeUtil, std::shared_ptr< Odometry > iodometry, std::shared_ptr< ChassisController > icontroller, const StateMode &imode=StateMode::FRAME_TRANSFORMATION, QLength imoveThreshold=0_mm, QAngle iturnThreshold=0_deg, std::shared_ptr< Logger > ilogger=Logger::getDefaultLogger())
 Odometry based chassis controller that moves using a separately constructed chassis controller.
 
 DefaultOdomChassisController (const DefaultOdomChassisController &)=delete
 
 DefaultOdomChassisController (DefaultOdomChassisController &&other)=delete
 
DefaultOdomChassisControlleroperator= (const DefaultOdomChassisController &other)=delete
 
DefaultOdomChassisControlleroperator= (DefaultOdomChassisController &&other)=delete
 
void driveToPoint (const Point &ipoint, bool ibackwards=false, const QLength &ioffset=0_mm) override
 Drives the robot straight to a point in the odom frame.
 
void turnToPoint (const Point &ipoint) override
 Turns the robot to face a point in the odom frame.
 
std::shared_ptr< ChassisControllergetChassisController ()
 
ChassisControllerchassisController ()
 
void turnToAngle (const QAngle &iangle) override
 This delegates to the input ChassisController.
 
void moveDistance (QLength itarget) override
 This delegates to the input ChassisController.
 
void moveRaw (double itarget) override
 This delegates to the input ChassisController.
 
void moveDistanceAsync (QLength itarget) override
 This delegates to the input ChassisController.
 
void moveRawAsync (double itarget) override
 This delegates to the input ChassisController.
 
void turnAngle (QAngle idegTarget) override
 Turns chassis to desired angle (turns in the direction of smallest angle) (ex.
 
void turnRaw (double idegTarget) override
 This delegates to the input ChassisController.
 
void turnAngleAsync (QAngle idegTarget) override
 Turns chassis to desired angle (turns in the direction of smallest angle) (ex.
 
void turnRawAsync (double idegTarget) override
 This delegates to the input ChassisController.
 
void setTurnsMirrored (bool ishouldMirror) override
 This delegates to the input ChassisController.
 
bool isSettled () override
 This delegates to the input ChassisController.
 
void waitUntilSettled () override
 This delegates to the input ChassisController.
 
void stop () override
 This delegates to the input ChassisController.
 
void setMaxVelocity (double imaxVelocity) override
 This delegates to the input ChassisController.
 
double getMaxVelocity () const override
 This delegates to the input ChassisController.
 
ChassisScales getChassisScales () const override
 This delegates to the input ChassisController.
 
AbstractMotor::GearsetRatioPair getGearsetRatioPair () const override
 This delegates to the input ChassisController.
 
std::shared_ptr< ChassisModelgetModel () override
 This delegates to the input ChassisController.
 
ChassisModelmodel () override
 This delegates to the input ChassisController.
 
- Public Member Functions inherited from okapi::OdomChassisController
 OdomChassisController (TimeUtil itimeUtil, std::shared_ptr< Odometry > iodometry, const StateMode &imode=StateMode::FRAME_TRANSFORMATION, const QLength &imoveThreshold=0_mm, const QAngle &iturnThreshold=0_deg, std::shared_ptr< Logger > ilogger=Logger::getDefaultLogger())
 Odometry based chassis controller.
 
 ~OdomChassisController () override
 
 OdomChassisController (const OdomChassisController &)=delete
 
 OdomChassisController (OdomChassisController &&other)=delete
 
OdomChassisControlleroperator= (const OdomChassisController &other)=delete
 
OdomChassisControlleroperator= (OdomChassisController &&other)=delete
 
virtual OdomState getState () const
 
virtual void setState (const OdomState &istate)
 Set a new state to be the current state.
 
void setDefaultStateMode (const StateMode &imode)
 Sets a default StateMode that will be used to interpret target points and query the Odometry state.
 
virtual void setMoveThreshold (const QLength &imoveThreshold)
 Set a new move threshold.
 
virtual void setTurnThreshold (const QAngle &iturnTreshold)
 Set a new turn threshold.
 
virtual QLength getMoveThreshold () const
 
virtual QAngle getTurnThreshold () const
 
void startOdomThread ()
 Starts the internal odometry thread.
 
CrossplatformThreadgetOdomThread () const
 
std::shared_ptr< OdometrygetOdometry ()
 
- Public Member Functions inherited from okapi::ChassisController
 ChassisController ()=default
 A ChassisController adds a closed-loop layer on top of a ChassisModel.
 
virtual ~ChassisController ()=default
 

Protected Member Functions

void waitForOdomTask ()
 
- Protected Member Functions inherited from okapi::OdomChassisController
void loop ()
 

Protected Attributes

std::shared_ptr< Loggerlogger
 
std::shared_ptr< ChassisControllercontroller
 
- Protected Attributes inherited from okapi::OdomChassisController
std::shared_ptr< Loggerlogger
 
TimeUtil timeUtil
 
QLength moveThreshold
 
QAngle turnThreshold
 
std::shared_ptr< Odometryodom
 
CrossplatformThreadodomTask {nullptr}
 
std::atomic_bool dtorCalled {false}
 
StateMode defaultStateMode {StateMode::FRAME_TRANSFORMATION}
 
std::atomic_bool odomTaskRunning {false}
 

Additional Inherited Members

- Static Protected Member Functions inherited from okapi::OdomChassisController
static void trampoline (void *context)
 

Detailed Description

Definition at line 15 of file defaultOdomChassisController.hpp.

Constructor & Destructor Documentation

◆ DefaultOdomChassisController() [1/3]

okapi::DefaultOdomChassisController::DefaultOdomChassisController ( const TimeUtil itimeUtil,
std::shared_ptr< Odometry iodometry,
std::shared_ptr< ChassisController icontroller,
const StateMode imode = StateMode::FRAME_TRANSFORMATION,
QLength  imoveThreshold = 0_mm,
QAngle  iturnThreshold = 0_deg,
std::shared_ptr< Logger ilogger = Logger::getDefaultLogger() 
)

Odometry based chassis controller that moves using a separately constructed chassis controller.

Spins up a task at the default priority plus 1 for odometry when constructed.

Moves the robot around in the odom frame. Instead of telling the robot to drive forward or turn some amount, you instead tell it to drive to a specific point on the field or turn to a specific angle, relative to its starting position.

Parameters
itimeUtilThe TimeUtil.
iodometryThe odometry to read state estimates from.
icontrollerThe chassis controller to delegate to.
imodeThe new default StateMode used to interpret target points and query the Odometry state.
imoveThresholdminimum length movement (smaller movements will be skipped)
iturnThresholdminimum angle turn (smaller turns will be skipped)
iloggerThe logger this instance will log to.

◆ DefaultOdomChassisController() [2/3]

okapi::DefaultOdomChassisController::DefaultOdomChassisController ( const DefaultOdomChassisController )
delete

◆ DefaultOdomChassisController() [3/3]

okapi::DefaultOdomChassisController::DefaultOdomChassisController ( DefaultOdomChassisController &&  other)
delete

Member Function Documentation

◆ chassisController()

ChassisController & okapi::DefaultOdomChassisController::chassisController ( )
Returns
The internal ChassisController.

◆ driveToPoint()

void okapi::DefaultOdomChassisController::driveToPoint ( const Point ipoint,
bool  ibackwards = false,
const QLength &  ioffset = 0_mm 
)
overridevirtual

Drives the robot straight to a point in the odom frame.

Parameters
ipointThe target point to navigate to.
ibackwardsWhether to drive to the target point backwards.
ioffsetAn offset from the target point in the direction pointing towards the robot. The robot will stop this far away from the target point.

Implements okapi::OdomChassisController.

◆ getChassisController()

std::shared_ptr< ChassisController > okapi::DefaultOdomChassisController::getChassisController ( )
Returns
The internal ChassisController.

◆ getChassisScales()

ChassisScales okapi::DefaultOdomChassisController::getChassisScales ( ) const
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ getGearsetRatioPair()

AbstractMotor::GearsetRatioPair okapi::DefaultOdomChassisController::getGearsetRatioPair ( ) const
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ getMaxVelocity()

double okapi::DefaultOdomChassisController::getMaxVelocity ( ) const
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ getModel()

std::shared_ptr< ChassisModel > okapi::DefaultOdomChassisController::getModel ( )
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ isSettled()

bool okapi::DefaultOdomChassisController::isSettled ( )
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ model()

ChassisModel & okapi::DefaultOdomChassisController::model ( )
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ moveDistance()

void okapi::DefaultOdomChassisController::moveDistance ( QLength  itarget)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ moveDistanceAsync()

void okapi::DefaultOdomChassisController::moveDistanceAsync ( QLength  itarget)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ moveRaw()

void okapi::DefaultOdomChassisController::moveRaw ( double  itarget)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ moveRawAsync()

void okapi::DefaultOdomChassisController::moveRawAsync ( double  itarget)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ operator=() [1/2]

DefaultOdomChassisController & okapi::DefaultOdomChassisController::operator= ( const DefaultOdomChassisController other)
delete

◆ operator=() [2/2]

DefaultOdomChassisController & okapi::DefaultOdomChassisController::operator= ( DefaultOdomChassisController &&  other)
delete

◆ setMaxVelocity()

void okapi::DefaultOdomChassisController::setMaxVelocity ( double  imaxVelocity)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ setTurnsMirrored()

void okapi::DefaultOdomChassisController::setTurnsMirrored ( bool  ishouldMirror)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ stop()

void okapi::DefaultOdomChassisController::stop ( )
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ turnAngle()

void okapi::DefaultOdomChassisController::turnAngle ( QAngle  idegTarget)
overridevirtual

Turns chassis to desired angle (turns in the direction of smallest angle) (ex.

If current angle is 0 and target is 270, the chassis will turn -90 degrees)

Parameters
idegTargettarget angle

Implements okapi::ChassisController.

◆ turnAngleAsync()

void okapi::DefaultOdomChassisController::turnAngleAsync ( QAngle  idegTarget)
overridevirtual

Turns chassis to desired angle (turns in the direction of smallest angle) (ex.

If current angle is 0 and target is 270, the chassis will turn -90 degrees)

Parameters
idegTargettarget angle

Implements okapi::ChassisController.

◆ turnRaw()

void okapi::DefaultOdomChassisController::turnRaw ( double  idegTarget)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ turnRawAsync()

void okapi::DefaultOdomChassisController::turnRawAsync ( double  idegTarget)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

◆ turnToAngle()

void okapi::DefaultOdomChassisController::turnToAngle ( const QAngle &  iangle)
overridevirtual

This delegates to the input ChassisController.

Implements okapi::OdomChassisController.

◆ turnToPoint()

void okapi::DefaultOdomChassisController::turnToPoint ( const Point ipoint)
overridevirtual

Turns the robot to face a point in the odom frame.

Parameters
ipointThe target point to turn to face.

Implements okapi::OdomChassisController.

◆ waitForOdomTask()

void okapi::DefaultOdomChassisController::waitForOdomTask ( )
protected

◆ waitUntilSettled()

void okapi::DefaultOdomChassisController::waitUntilSettled ( )
overridevirtual

This delegates to the input ChassisController.

Implements okapi::ChassisController.

Member Data Documentation

◆ controller

std::shared_ptr<ChassisController> okapi::DefaultOdomChassisController::controller
protected

Definition at line 179 of file defaultOdomChassisController.hpp.

◆ logger

std::shared_ptr<Logger> okapi::DefaultOdomChassisController::logger
protected

Definition at line 178 of file defaultOdomChassisController.hpp.


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