Send velocity commands to a model based on keypress messages received. More...
#include <KeysToCmdVelPlugin.hh>
Inherits ModelPlugin.
Public Types | |
typedef boost::shared_ptr< ModelPlugin > | TPtr |
plugin pointer type definition More... | |
Public Member Functions | |
KeysToCmdVelPlugin () | |
Constructor. More... | |
~KeysToCmdVelPlugin () | |
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... | |
void | Init () override |
Override this method for custom plugin initialization behavior. More... | |
void | Load (physics::ModelPtr _model, sdf::ElementPtr _sdf) override |
Load function. More... | |
void | Reset () override |
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... | |
virtual void | OnKeyPress (ConstAnyPtr &_msg) |
Callback each time a key message is received. 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... | |
Send velocity commands to a model based on keypress messages received.
The commands are instances of Pose type with x field denoting linear speed and yaw denoting angular speed.
The keypresses are taken from topic "~/keyboard/keypress" generated by the KeyboardGUIPlugin.
Unfortunately, due to the implementation of the KeyboardGUIPlugin, this plugin can only process the "key down" events and not "key up" events, so it is not possible to react on the set of keys currently pressed, but only to a sequence of keypresses.
The plugin processes the following parameters:
<publish_as_twist> If true, the published message type will be Twist. If false, it will be Pose. Default is false. The Pose message isn't very good for angular speed representation since it will always clamp the speed to interval -pi to pi. <cmd_vel_topic> The topic to which velocity commands are be published. Default is "~/cmd_vel". <max_linear_vel> Maximum linear velocity commanded to the vehicle (m/s). Default is 1.0 (m/s). <min_linear_vel> Minimum linear velocity commanded to the vehicle (m/s). Default is -max_linear_vel (m/s). <max_angular_vel> Maximum angular velocity commanded to the vehicle (rad/s). Default is 1.0 (rad/s). <key_controls> If this tag is empty or missing, the default assignment (arrow keys) is used; otherwise, the keys can be set using the (repeatable) subelements <stop>, <accelerate>, <decelerate>, <left> and <right> containing the keycodes.
|
inherited |
plugin pointer type definition
Constructor.
~KeysToCmdVelPlugin | ( | ) |
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 |
|
overridevirtual |
Override this method for custom plugin initialization behavior.
Reimplemented from ModelPlugin.
|
overridevirtual |
Load function.
Called when a Plugin is first created, and after the World has been loaded. This function should not be blocking.
[in] | _model | Pointer to the Model |
[in] | _sdf | Pointer to the SDF element of the plugin. |
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. |
|
protectedvirtual |
Callback each time a key message is received.
[in] | _msg | Keypress message. |
|
overridevirtual |
Override this method for custom plugin reset behavior.
Reimplemented from ModelPlugin.
|
protectedinherited |
Path to the shared library file.
|
protectedinherited |
Short name.
|
protectedinherited |
Type of plugin.