ns-3
ns3::GaussMarkovMobilityModel Class Reference

Gauss-Markov mobility model. More...

#include <gauss-markov-mobility-model.h>

Inheritance diagram for ns3::GaussMarkovMobilityModel:
Collaboration diagram for ns3::GaussMarkovMobilityModel:

List of all members.

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::GaussMarkovMobilityModel.

Additional Inherited Members

- Public Member Functions inherited from ns3::MobilityModel
Vector GetPosition (void) const
void SetPosition (const Vector &position)
Vector GetVelocity (void) const
double GetDistanceFrom (Ptr< const MobilityModel > position) const
double GetRelativeSpeed (Ptr< const MobilityModel > other) const
- Public Member Functions inherited from ns3::Object
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Dispose (void)
void AggregateObject (Ptr< Object > other)
AggregateIterator GetAggregateIterator (void) const
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
uint32_t GetReferenceCount (void) const
- Public Member Functions inherited from ns3::ObjectBase
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
- Protected Member Functions inherited from ns3::MobilityModel
void NotifyCourseChange (void) const
- Protected Member Functions inherited from ns3::Object
virtual void NotifyNewAggregate (void)
virtual void DoStart (void)
 Object (const Object &o)

Detailed Description

Gauss-Markov mobility model.

This is a 3D version of the Gauss-Markov mobility model described in [1]. Unlike the other mobility models in ns-3, which are memoryless, the Gauss Markov model has both memory and variability. The tunable alpha parameter determines the how much memory and randomness you want to model. Each object starts with a specific velocity, direction (radians), and pitch angle (radians) equivalent to the mean velocity, direction, and pitch. At each timestep, a new velocity, direction, and pitch angle are generated based upon the previous value, the mean value, and a gaussian random variable. This version is suited for simple airplane flight, where direction, velocity, and pitch are the key variables. The motion field is limited by a 3D bounding box (called "box") which is a 3D version of the "rectangle" field that is used in 2-dimensional ns-3 mobility models.

Here is an example of how to implement the model and set the initial node positions:

MobilityHelper mobility;
mobility.SetMobilityModel ("ns3::GaussMarkovMobilityModel",
"Bounds", BoxValue (Box (0, 150000, 0, 150000, 0, 10000)),
"TimeStep", TimeValue (Seconds (0.5)),
"Alpha", DoubleValue (0.85),
"MeanVelocity", RandomVariableValue (UniformVariable (800, 1200)),
"MeanDirection", RandomVariableValue (UniformVariable (0, 6.283185307)),
"MeanPitch", RandomVariableValue (UniformVariable (0.05, 0.05)),
"NormalVelocity", RandomVariableValue (NormalVariable (0.0, 0.0, 0.0)),
"NormalDirection", RandomVariableValue (NormalVariable (0.0, 0.2, 0.4)),
"NormalPitch", RandomVariableValue (NormalVariable (0.0, 0.02, 0.04)));
mobility.SetPositionAllocator ("ns3::RandomBoxPositionAllocator",
"X", RandomVariableValue (UniformVariable (0, 150000)),
"Y", RandomVariableValue (UniformVariable (0, 150000)),
"Z", RandomVariableValue (UniformVariable (0, 10000)));
mobility.Install (wifiStaNodes);

[1] Tracy Camp, Jeff Boleng, Vanessa Davies, "A Survey of Mobility Models for Ad Hoc Network Research", Wireless Communications and Mobile Computing, Wiley, vol.2 iss.5, September 2002, pp.483-502


Member Function Documentation

TypeId ns3::GaussMarkovMobilityModel::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::GaussMarkovMobilityModel.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/$ns3::MobilityModel/$ns3::GaussMarkovMobilityModel

Attributes defined for this type:

  • Bounds: Bounds of the area to cruise.
    • Set with class: BoxValue
    • Underlying type: Box
    • Initial value: -100|100|-100|100|0|100
    • Flags: construct write read
  • TimeStep: Change current direction and speed after moving for this time.
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +1000000000.0ns
    • Flags: construct write read
  • Alpha: A constant representing the tunable parameter in the Gauss-Markov model.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 1
    • Flags: construct write read
  • MeanVelocity: A random variable used to assign the average velocity.
  • MeanDirection: A random variable used to assign the average direction.
  • MeanPitch: A random variable used to assign the average pitch.
  • NormalVelocity: A gaussian random variable used to calculate the next velocity value.
  • NormalDirection: A gaussian random variable used to calculate the next direction value.
  • NormalPitch: A gaussian random variable used to calculate the next pitch value.

Attributes defined in parent class ns3::MobilityModel:

  • Position: The current position of the mobility model.
  • Velocity: The current velocity of the mobility model.

No TraceSources defined for this type.
TraceSources defined in parent class ns3::MobilityModel:

  • CourseChange: The value of the position and/or velocity vector changed

Reimplemented from ns3::MobilityModel.

References ns3::Seconds(), and ns3::TypeId::SetParent().


The documentation for this class was generated from the following files: