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< ModelPlugin > | TPtr |
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... | |
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
|
inherited |
plugin pointer type definition
Constructor.
|
virtual |
Destructor.
|
inlinestaticinherited |
a class method that creates a plugin from a file name.
It locates the shared library and loads it dynamically.
[in] | _filename | the path to the shared library. |
[in] | _name | short name of the plugin |
References PluginT< T >::filename, gzerr, and SingletonT< SystemPaths >::Instance().
|
inlineinherited |
Get the name of the handler.
References PluginT< T >::filename.
|
inlineinherited |
Get the short name of the handler.
References PluginT< T >::handleName.
|
inlineinherited |
|
inlinevirtualinherited |
Override this method for custom plugin initialization behavior.
Reimplemented in TrackedVehiclePlugin, KeysToCmdVelPlugin, SimpleTrackedVehiclePlugin, BuoyancyPlugin, HarnessPlugin, WheelTrackedVehiclePlugin, FollowerPlugin, PlaneDemoPlugin, MudPlugin, CartDemoPlugin, VehiclePlugin, GimbalSmall2dPlugin, LinearBatteryPlugin, DiffDrivePlugin, and SphereAtlasDemoPlugin.
|
virtual |
Load the controller.
Implements ModelPlugin.
|
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.
[in] | _sdf | The SDF element of the plugin. |
[in] | _name | Name of a tag inside the SDF. |
[out] | _target | The reference to store the param value to. |
[in] | _defaultValue | The default value. |
References gzmsg, and PluginT< T >::handleName.
|
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.
[in] | _sdf | The SDF element of the plugin. |
[in] | _name | Name of a tag inside the SDF. |
[out] | _target | The reference to store the param value to. |
[in] | _defaultValue | The default value. |
|
inlinevirtualinherited |
Override this method for custom plugin reset behavior.
Reimplemented in TrackedVehiclePlugin, KeysToCmdVelPlugin, RandomVelocityPlugin, SimpleTrackedVehiclePlugin, ElevatorPlugin, WheelTrackedVehiclePlugin, FollowerPlugin, LinearBatteryPlugin, ActorPlugin, InitialVelocityPlugin, and SphereAtlasDemoPlugin.
|
protectedinherited |
Path to the shared library file.
|
protectedinherited |
Short name.
|
protectedinherited |
Type of plugin.