PPL API Reference
Overview Core Algorithm Abstractions Utilities Parallel Methods
Modules Class Hierarchy Classes Functions
Todo List Bug List Dead Code
List of all members
ICreateController Class Reference

Public Member Functions

Construction
 ICreateController (Robot *const _r, const double _gain, const double _max=std::numeric_limits< double >::infinity())
 
 ICreateController (Robot *const _r, XMLNode &_node)
 
 ICreateController (Robot *const _r, const ICreateController &_c)
 
virtual std::unique_ptr< ControllerMethodClone (Robot *const _r) const
 
virtual ~ICreateController ()
 
Interface
virtual Control operator() (const Cfg &_current, const Cfg &_target, const double _dt)
 
virtual Control GetRandomControl (const Cfg &_current, const double _dt) const noexcept
 
ControlSet * GetControlSet () noexcept
 
void SetControlSet (ControlSet *const _c) noexcept
 

Static Public Member Functions

Construction
static std::unique_ptr< ControllerMethodFactory (Robot *const _r, XMLNode &_node)
 

Protected Member Functions

Control Selection Overrides
virtual std::vector< double > ComputeDesiredForce (const Cfg &_current, const Cfg &_target, const double _dt) override
 
Control Selection
virtual Control ComputeNearestControl (const Cfg &_current, std::vector< double > &&_force)
 
virtual Control ComputeNearestContinuousControl (const Cfg &_current, std::vector< double > &&_force)
 
virtual Control ComputeNearestDiscreteControl (const Cfg &_current, std::vector< double > &&_force)
 

Protected Attributes

Internal State
Robot *const m_robot
 The owning robot object.
 
ControlSet * m_controls {nullptr}
 The discrete controls, if any.
 
bool m_debug {false}
 Show debug messages?
 

Detailed Description

Selects controls that require an iCreate-like robot to first turn towards its target and then translate in the desired direction.

Constructor & Destructor Documentation

◆ ICreateController() [1/3]

ICreateController::ICreateController ( Robot *const  _r,
const double  _gain,
const double  _max = std::numeric_limits<double>::infinity() 
)

Construct a simple controller.

Parameters
[in]_rThe robot to control.
[in]_gainThe direct error gain.
[in]_maxThe maximum force to request.

◆ ICreateController() [2/3]

ICreateController::ICreateController ( Robot *const  _r,
XMLNode _node 
)

Construct a simple controller from an XML node.

Parameters
[in]_rThe robot to control.
[in]_nodeThe XML node to parse.

◆ ICreateController() [3/3]

ICreateController::ICreateController ( Robot *const  _r,
const ICreateController _c 
)

Copy a controller for another robot.

Parameters
_rThe destination robot.
_cThe controller to copy.

Member Function Documentation

◆ Clone()

std::unique_ptr< ControllerMethod > ICreateController::Clone ( Robot *const  _r) const
virtual

Create a copy of this controller for another robot. This is provided so that we can copy controllers without knowing their derived type.

Parameters
_rThe robot receiving the cloned controller.
Returns
The cloned controller.

Implements ControllerMethod.

◆ ComputeDesiredForce()

std::vector< double > ICreateController::ComputeDesiredForce ( const Cfg _current,
const Cfg _target,
const double  _dt 
)
overrideprotectedvirtual

Compute the desired generalized force (or velocity) in the robot's local frame to move from the current position to the target.

Parameters
_currentThe current configuration.
_targetThe target configuration.
_dtThe timestep length.
Returns
The ideal generalized force.

Implements ControllerMethod.

◆ Factory()

std::unique_ptr< ControllerMethod > ControllerMethod::Factory ( Robot *const  _r,
XMLNode _node 
)
staticinherited

Create a dynamically-allocated controller from an XML node.

Parameters
_rThe robot to control.
_nodeThe XML node to read parameters from.
Returns
A controller of the type described by _node.

◆ operator()()

Control ControllerMethod::operator() ( const Cfg _current,
const Cfg _target,
const double  _dt 
)
virtualinherited

Find the best available control to steer a robot from a starting configuration to a target configuration.

Parameters
_currentThe current configuration.
_targetThe target configuration.
_dtThe timestep length.
Returns
The best available control for steering from _current to _target.

Reimplemented in PIDFeedback, and MatlabNeedleController.

◆ GetRandomControl()

Control ControllerMethod::GetRandomControl ( const Cfg _current,
const double  _dt 
) const
virtualnoexceptinherited

Find a random control.

Parameters
_currentThe current configuration.
_dtThe timestep length.
Returns
A random control that can be executed from _current for _dt steps.

Reimplemented in CarlikeNeedleController, and MatlabNeedleController.

◆ GetControlSet()

ControlSet * ControllerMethod::GetControlSet ( )
noexceptinherited

Get the discrete set of controls that this controller can use, if any.

Returns
The discrete set of controls for this controller, or null if it uses a continuous space(s) of controls.

◆ SetControlSet()

void ControllerMethod::SetControlSet ( ControlSet *const  _c)
noexceptinherited

Set a discrete set of controls for this controller to use. This limits the controller to a subset of all possible controls accepted by a robot's actuators.

Parameters
_cThe control set to use.

◆ ComputeNearestControl()

Control ControllerMethod::ComputeNearestControl ( const Cfg _current,
std::vector< double > &&  _force 
)
protectedvirtualinherited

Compute the control that produces the closest force to the ideal.

Parameters
_currentThe current configuration.
_forceThe desired force in the robot's local frame.
Returns
The control whose result is nearest to _force.

◆ ComputeNearestContinuousControl()

Control ControllerMethod::ComputeNearestContinuousControl ( const Cfg _current,
std::vector< double > &&  _force 
)
protectedvirtualinherited

Compute the continuous control that produces the closest force to the ideal.

Parameters
_currentThe current configuration.
_forceThe desired force in the robot's local frame.
Returns
The control whose result is nearest to _force.

Reimplemented in CarlikeNeedleController.

◆ ComputeNearestDiscreteControl()

Control ControllerMethod::ComputeNearestDiscreteControl ( const Cfg _current,
std::vector< double > &&  _force 
)
protectedvirtualinherited

Compute the discrete control that produces the closest force to the ideal.

Parameters
_currentThe current configuration.
_forceThe desired force in the robot's local frame.
Returns
The control whose result is nearest to _force.

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