21 #ifndef __SWARM_COMMS_MODEL_HH__
22 #define __SWARM_COMMS_MODEL_HH__
28 #include <gazebo/common/Time.hh>
29 #include <gazebo/physics/PhysicsTypes.hh>
30 #include <ignition/math.hh>
33 #include "swarm/SwarmTypes.hh"
46 gazebo::physics::WorldPtr _world,
47 sdf::ElementPtr _sdf);
54 public:
void Update();
57 private:
void UpdateOutages();
60 private:
void UpdateNeighbors();
66 private:
void UpdateNeighborList(
const std::string &_address);
69 private:
void UpdateVisibility();
83 private:
bool LineOfSight(
const ignition::math::Pose3d &_p1,
84 const ignition::math::Pose3d &_p2,
85 std::vector<std::string> &_entities);
91 private:
void LoadParameters(sdf::ElementPtr _sdf);
95 private:
double neighborDistanceMin = -1.0;
99 private:
double neighborDistanceMax = -1.0;
104 private:
double neighborDistancePenaltyTree = 0.0;
108 private:
double commsDistanceMin = -1.0;
112 private:
double commsDistanceMax = -1.0;
117 private:
double commsDistancePenaltyTree = 0.0;
121 private:
double commsDropProbabilityMin = 0.0;
125 private:
double commsDropProbabilityMax = 0.0;
128 private:
double commsOutageProbability = 0.0;
132 private:
double commsOutageDurationMin = -1.0;
136 private:
double commsOutageDurationMax = -1.0;
139 private: SwarmMembershipPtr
swarm;
142 private: gazebo::physics::WorldPtr world;
145 private: gazebo::common::Time lastUpdateTime;
148 private: gazebo::physics::RayShapePtr ray;
155 private: std::map<std::pair<std::string, std::string>,
156 std::vector<std::string>> visibility;
Definition: BooPlugin.hh:37
Class used to store information about the communication model.
Definition: CommsModel.hh:38