Files
allwpilib/simulation/frc_gazebo_plugins/rangefinder/src/rangefinder.h
Colby Skeggs 8ae64a12ea Removed modules from the simulation infrastructure and refactored FRCPlugin.
Pneumatics still have CAN modules. The refactored code is now eight
plugins for sensors and actuators. There is some code reuse that should
be refactored out, but that level of abstraction will wait until we
figure out how these plugins are integrating with gazebo proper.

Change-Id: I357e695ef05af6dda83a39ba60380686bd57d11a
Closes: artf2610, artf2623
2014-07-07 13:33:34 -07:00

47 lines
1.4 KiB
C++

#pragma once
#include <gazebo/gazebo.hh>
using namespace gazebo;
/**
* \brief Plugin for reading the range of obstacles.
*
* This plugin publishes the range of obstacles detected by a sonar
* rangefinder every physics update.
*
* To add a rangefinder to your robot, add the following XML to your
* robot model:
*
* <plugin name="my_rangefinder" filename="libgz_rangefinder.so">
* <sensor>Sensor Name</sensor>
* <topic>~/my/topic</topic>
* </plugin>
*
* - `sensor`: Name of the sonar sensor that this rangefinder uses.
* - `topic`: Optional. Message will be published as a gazebo.msgs.Float64.
*/
class Rangefinder: public ModelPlugin {
public:
Rangefinder();
~Rangefinder();
/// \brief Load the rangefinder and configures it according to the sdf.
void Load(physics::ModelPtr model, sdf::ElementPtr sdf);
/// \brief Sends out the rangefinder reading each timestep.
void Update(const common::UpdateInfo &info);
private:
/// \brief Publish the range on this topic.
std::string topic;
/// \brief The sonar sensor that this rangefinder uses
sensors::SonarSensorPtr sensor;
physics::ModelPtr model; ///< \brief The model that this is attached to.
event::ConnectionPtr updateConn; ///< \brief Pointer to the world update function.
transport::NodePtr node; ///< \brief The node we're advertising on.
transport::PublisherPtr pub; ///< \brief Publisher handle.
};