An approximate model of non-deformable tracks emulated by wheels. More...
#include <WheelTrackedVehiclePlugin.hh>
Inherits TrackedVehiclePlugin.
Classes | |
struct | WheelInfo |
Holds information about each wheel. More... | |
Public Types | |
typedef boost::shared_ptr< ModelPlugin > | TPtr |
plugin pointer type definition More... | |
Public Member Functions | |
WheelTrackedVehiclePlugin ()=default | |
virtual | ~WheelTrackedVehiclePlugin ()=default |
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... | |
void | Init () override |
Initialize the plugin. More... | |
void | Load (physics::ModelPtr _model, sdf::ElementPtr _sdf) override |
Called when the plugin is loaded. More... | |
void | Reset () override |
Reset the plugin. 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 Types | |
typedef std::vector< WheelInfoPtr > | WheelInfo_V |
typedef std::shared_ptr< WheelInfo > | WheelInfoPtr |
Protected Member Functions | |
virtual std::string | GetRobotNamespace () |
Namespace used as a prefix for gazebo topic names. More... | |
virtual double | GetSteeringEfficiency () |
Steering efficiency coefficient (between 0.0 and 1.0). More... | |
virtual boost::optional< double > | GetTrackMu () |
Friction coefficient in the first friction direction. More... | |
virtual boost::optional< double > | GetTrackMu2 () |
Friction coefficient in the second friction direction. More... | |
virtual double | GetTracksSeparation () |
Distance between the centers of the tracks. More... | |
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... | |
void | LoadWheel (physics::ModelPtr &_model, Tracks &_track, const std::string &_jointName) |
Load a wheel connected to joint named jointName and append it to this->wheels[track]. More... | |
virtual void | OnVelMsg (ConstPosePtr &_msg) GAZEBO_DEPRECATED(9.0) |
Callback for setting desired body velocity. More... | |
void | OnVelMsg (ConstTwistPtr &_msg) |
Callback for setting desired body velocity. More... | |
void | SetBodyVelocity (double _linear, double _angular) |
Set new target velocity for the tracks based on the desired. More... | |
void | SetLinkMu (const physics::LinkPtr &_link) |
Set mu and mu2 of all collisions of the given link to values given by GetTrackMu() and GetTrackMu2(). More... | |
virtual void | SetSteeringEfficiency (double _steeringEfficiency) |
Set steering efficiency coefficient (between 0.0 and 1.0). More... | |
virtual void | SetTrackMu (double _mu) |
Friction coefficient in the first friction direction. More... | |
virtual void | SetTrackMu2 (double _mu2) |
Friction coefficient in the second friction direction. More... | |
virtual void | SetTrackVelocity (double _left, double _right) |
Set new target velocity for the tracks. More... | |
void | SetTrackVelocityImpl (double _left, double _right) override |
Set new target velocity for the tracks. More... | |
void | UpdateTrackSurface () override |
Update surface parameters of the tracks to correspond to the values set in this plugin. More... | |
Protected Attributes | |
double | defaultWheelRadius |
The radius (in meters) used for wheels where autodetection fails. More... | |
std::string | filename |
Path to the shared library file. More... | |
std::string | handleName |
Short name. More... | |
std::mutex | mutex |
Mutex to protect updates. More... | |
std::unordered_map< Tracks, std::string > | trackNames |
Textual lowercase names of the tracks. More... | |
std::unordered_map< Tracks, double > | trackVelocity |
Desired velocities of the tracks. More... | |
PluginType | type |
Type of plugin. More... | |
std::unordered_map< Tracks, WheelInfo_V > | wheels |
The wheels on the LEFT/RIGHT track. More... | |
physics::WorldPtr | world |
Pointer to the world the model lives in. More... | |
An approximate model of non-deformable tracks emulated by wheels.
Inserting this model in simulation automatically sets the friction model to "cone_model", which is required for the model to correctly steer.
The plugin processes the following parameters, plus the common parameters defined in TrackedVehiclePlugin.
<left_joint> Name of the revolute joint connecting a left wheel (should appear multiple times, once for each left wheel). <right_joint> Name of the revolute joint connecting a right wheel (should appear multiple times, once for each right wheel). <default_wheel_radius> The radius used for wheels where radius autodetection fails (default is 0.5 meters).
|
inherited |
plugin pointer type definition
|
protected |
|
protected |
|
default |
|
virtualdefault |
|
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.
|
protectedvirtualinherited |
Namespace used as a prefix for gazebo topic names.
|
protectedvirtualinherited |
Steering efficiency coefficient (between 0.0 and 1.0).
|
protectedvirtualinherited |
Friction coefficient in the first friction direction.
|
protectedvirtualinherited |
Friction coefficient in the second friction direction.
|
protectedvirtualinherited |
Distance between the centers of the tracks.
|
inlineinherited |
|
overridevirtual |
Initialize the plugin.
Reimplemented from TrackedVehiclePlugin.
|
overridevirtual |
Called when the plugin is loaded.
[in] | model | Pointer to the model for which the plugin is loaded |
[in] | _sdf | Pointer to the SDF for _model |
Reimplemented from TrackedVehiclePlugin.
|
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. |
|
protected |
Load a wheel connected to joint named jointName and append it to this->wheels[track].
[in] | _model | The model to work with. |
[in] | _track | The track this wheel belongs to. |
[in] | _jointName | Name of the wheel joint. |
|
protectedvirtualinherited |
Callback for setting desired body velocity.
Normally, this callback converts the x/yaw message to track velocities and calls SetTrackVelocity().
[in] | _msg | Pose message from external publisher |
|
protectedinherited |
Callback for setting desired body velocity.
Normally, this callback converts the x/yaw message to track velocities and calls SetTrackVelocity().
[in] | _msg | Twist message from external publisher |
|
overridevirtual |
Reset the plugin.
Reimplemented from TrackedVehiclePlugin.
|
protectedinherited |
Set new target velocity for the tracks based on the desired.
[in] | _linear | Desired linear velocity of the vehicle. |
[in] | _angular | Desired angular velocity of the vehicle. |
|
protectedinherited |
Set mu and mu2 of all collisions of the given link to values given by GetTrackMu() and GetTrackMu2().
[in] | _link | The link whose "mu"s are to be set. |
|
protectedvirtualinherited |
Set steering efficiency coefficient (between 0.0 and 1.0).
[in] | _steeringEfficiency | The new steering efficiency. |
|
protectedvirtualinherited |
Friction coefficient in the first friction direction.
[in] | _mu | The new coefficient. |
|
protectedvirtualinherited |
Friction coefficient in the second friction direction.
[in] | _mu2 | The new coefficient. |
|
protectedvirtualinherited |
Set new target velocity for the tracks.
Descendant classes need to implement this function.
[in] | _left | Velocity of left track. |
[in] | _right | Velocity of right track. |
|
overrideprotectedvirtual |
Set new target velocity for the tracks.
[in] | _left | Velocity of left track. |
[in] | _right | Velocity of right track. |
Implements TrackedVehiclePlugin.
|
overrideprotectedvirtual |
Update surface parameters of the tracks to correspond to the values set in this plugin.
Implements TrackedVehiclePlugin.
|
protected |
The radius (in meters) used for wheels where autodetection fails.
|
protectedinherited |
Path to the shared library file.
|
protectedinherited |
Short name.
|
protected |
Mutex to protect updates.
|
protectedinherited |
Textual lowercase names of the tracks.
|
protected |
Desired velocities of the tracks.
|
protectedinherited |
Type of plugin.
|
protected |
The wheels on the LEFT/RIGHT track.
|
protected |
Pointer to the world the model lives in.