Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _GAZEBO_LIGHT_CURTAIN_PLUGIN_HH_
00023 #define _GAZEBO_LIGHT_CURTAIN_PLUGIN_HH_
00024
00025 #include "gazebo/common/Plugin.hh"
00026 #include "gazebo/msgs/msgs.hh"
00027 #include "gazebo/sensors/SensorTypes.hh"
00028 #include "gazebo/sensors/RaySensor.hh"
00029 #include "gazebo/util/system.hh"
00030
00031 namespace gazebo
00032 {
00034 class GAZEBO_VISIBLE ProximityRayPlugin : public SensorPlugin
00035 {
00037 public: ProximityRayPlugin();
00038
00040 public: virtual ~ProximityRayPlugin();
00041
00043 public: virtual void OnNewLaserScans();
00044
00047 public: virtual bool ProcessScan();
00048
00051 public: void Load(sensors::SensorPtr _parent, sdf::ElementPtr _sdf);
00052
00055 protected: std::string Topic(std::string topicName) const;
00056
00058 protected: transport::PublisherPtr statePub;
00059
00061 protected: transport::PublisherPtr stateChangePub;
00062
00064 protected: msgs::Header stateMsg;
00065
00067 protected: std::mutex mutex;
00068
00070 protected: std::string stateTopic;
00071
00073 protected: std::string stateChangeTopic;
00074
00076 protected: bool objectDetected;
00077
00079 protected: bool useLinkFrame;
00080
00082 protected: double sensingRangeMin;
00083
00085 protected: double sensingRangeMax;
00086
00088 protected: bool normallyOpen;
00089
00091 protected: physics::LinkPtr link;
00092
00094 protected: physics::WorldPtr world;
00095
00097 protected: transport::NodePtr node;
00098
00100 protected: sensors::RaySensorPtr parentSensor;
00101
00103 protected: event::ConnectionPtr newLaserScansConnection;
00104
00105 };
00106 }
00107 #endif