VariableGearboxPlugin Class Reference

A plugin that uses piecewise cubic Hermite splines to support arbitrary smooth input-output relationships between the input and output angles of a gearbox. More...

#include <VariableGearboxPlugin.hh>

Inherits ModelPlugin.

Public Types

typedef boost::shared_ptr< ModelPluginTPtr
 plugin pointer type definition More...
 

Public Member Functions

 VariableGearboxPlugin ()
 Constructor. More...
 
virtual ~VariableGearboxPlugin ()
 Destructor. More...
 
std::string GetFilename () const
 Get the name of the handler. More...
 
std::string GetHandle () const
 Get the short name of the handler. More...
 
PluginType GetType () const
 Returns the type of the plugin. More...
 
virtual void Init ()
 Override this method for custom plugin initialization behavior. More...
 
void Load (physics::ModelPtr _parent, sdf::ElementPtr _sdf)
 Load the controller. More...
 
virtual void Reset ()
 Override this method for custom plugin reset behavior. More...
 

Static Public Member Functions

static TPtr Create (const std::string &_filename, const std::string &_name)
 a class method that creates a plugin from a file name. More...
 

Protected Member Functions

void LoadParam (const sdf::ElementPtr &_sdf, const std::string &_name, V &_target, V _defaultValue=V()) const
 Load parameter value from _sdf and store it to the given reference, using the supplied default value if the element in _sdf is not found. More...
 
void LoadParam (sdf::ElementPtr &_sdf, const std::string &_name, std::string &_target, const char *_defaultValue) const
 Load parameter value from _sdf and store it to the given reference, using the supplied default value if the element in _sdf is not found. More...
 

Protected Attributes

std::string filename
 Path to the shared library file. More...
 
std::string handleName
 Short name. More...
 
PluginType type
 Type of plugin. More...
 

Detailed Description

A plugin that uses piecewise cubic Hermite splines to support arbitrary smooth input-output relationships between the input and output angles of a gearbox.

It currently works for the ODE gearbox joint.

The ODE gearbox joint now supports linear constriants of the form:

    angle1 - refAngle1 = -ratio * (angle2 - refAngle2)

At each timestep, this plugin linearizes the splines based on the current joint state to compute refAngle1, refAngle2, and ratio and sets them in the ODE gearbox joint. The ODE solver then solves a linearized form of the nonlinear variable gearbox constraint.

The plugin parameters are the gearbox_joint_name as a string and multiple x_y_dydx parameters for specifying points and slopes of the input-output curves that will be interpolated by splines:

x: angle of the input joint y: angle of the output joint dy/dx: instantaneous gear ratio (change in output) / (change in input)

The following example snippet is taken from variable_gearbox_plugin.world

  <plugin name="variable_gearbox" filename="libVariableGearboxPlugin.so">
    <gearbox_joint_name>demo_joint_types::gearbox_demo</gearbox_joint_name>
    <x_y_dydx>1.2  -1.2  -1.0</x_y_dydx>
    <x_y_dydx>1.8  -7.5 -20.0</x_y_dydx>
  </plugin>

To aid in visualizing the splines produced by this plugin, please see the following ipython notebook: https://gist.github.com/scpeters/f7d87dd6578dee3fb95b90b402046679

Member Typedef Documentation

◆ TPtr

typedef boost::shared_ptr<ModelPlugin > TPtr
inherited

plugin pointer type definition

Constructor & Destructor Documentation

◆ VariableGearboxPlugin()

Constructor.

◆ ~VariableGearboxPlugin()

virtual ~VariableGearboxPlugin ( )
virtual

Destructor.

Member Function Documentation

◆ Create()

static TPtr Create ( const std::string &  _filename,
const std::string &  _name 
)
inlinestaticinherited

a class method that creates a plugin from a file name.

It locates the shared library and loads it dynamically.

Parameters
[in]_filenamethe path to the shared library.
[in]_nameshort name of the plugin
Returns
Shared Pointer to this class type

References PluginT< T >::filename, gzerr, and SingletonT< SystemPaths >::Instance().

◆ GetFilename()

std::string GetFilename ( ) const
inlineinherited

Get the name of the handler.

References PluginT< T >::filename.

◆ GetHandle()

std::string GetHandle ( ) const
inlineinherited

Get the short name of the handler.

References PluginT< T >::handleName.

◆ GetType()

PluginType GetType ( ) const
inlineinherited

Returns the type of the plugin.

Returns
type of the plugin

References PluginT< T >::type.

◆ Init()

◆ Load()

void Load ( physics::ModelPtr  _parent,
sdf::ElementPtr  _sdf 
)
virtual

Load the controller.

Implements ModelPlugin.

◆ LoadParam() [1/2]

void LoadParam ( const sdf::ElementPtr &  _sdf,
const std::string &  _name,
V &  _target,
_defaultValue = V() 
) const
inlineprotectedinherited

Load parameter value from _sdf and store it to the given reference, using the supplied default value if the element in _sdf is not found.

A message is written using gzmsg reporting whether the default value was used or not.

Parameters
[in]_sdfThe SDF element of the plugin.
[in]_nameName of a tag inside the SDF.
[out]_targetThe reference to store the param value to.
[in]_defaultValueThe default value.

References gzmsg, and PluginT< T >::handleName.

◆ LoadParam() [2/2]

void LoadParam ( sdf::ElementPtr &  _sdf,
const std::string &  _name,
std::string &  _target,
const char *  _defaultValue 
) const
inlineprotectedinherited

Load parameter value from _sdf and store it to the given reference, using the supplied default value if the element in _sdf is not found.

A message is written using gzmsg reporting whether the default value was used or not. String specialization to allow accepting const char* values for std::string parameters.

Parameters
[in]_sdfThe SDF element of the plugin.
[in]_nameName of a tag inside the SDF.
[out]_targetThe reference to store the param value to.
[in]_defaultValueThe default value.

◆ Reset()

virtual void Reset ( )
inlinevirtualinherited

Member Data Documentation

◆ filename

std::string filename
protectedinherited

Path to the shared library file.

◆ handleName

std::string handleName
protectedinherited

Short name.

◆ type

PluginType type
protectedinherited

Type of plugin.


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