21 #ifndef _GAZEBO_CONVEYOR_BELT_PLUGIN_HH_    22 #define _GAZEBO_CONVEYOR_BELT_PLUGIN_HH_    27 #include <gazebo/msgs/msgs.hh>    28 #include <gazebo/sensors/sensors.hh>    29 #include <gazebo/util/system.hh>    30 #include <ignition/math/Vector3.hh>    46     public: 
virtual void Load(physics::ModelPtr _model, sdf::ElementPtr _sdf);
    49     protected: 
void OnUpdate(
const common::UpdateInfo &_info);
    52     protected: transport::NodePtr 
node;
    58     protected: 
void OnControlCommand(ConstHeaderPtr& _msg);
    70     public: 
void SetVelocity(
double velocity);
    74     protected: std::string Topic(std::string topicName) 
const;
    77     protected: 
void ActOnContactingLinks(
double velocity);
 
double beltVelocity
Belt velocity (m/s) 
transport::SubscriberPtr controlCommandSub
Subscriber for the control commands. 
transport::NodePtr node
Pointer to this node for publishing/subscribing. 
std::mutex mutex
Mutex to protect the belt velocity. 
ignition::math::Vector3d velocityAxis
Axis for belt velocity in local frame (+Y by default) 
A plugin for a conveyor belt.