Gauss-Markov mobility model. More...
#include <gauss-markov-mobility-model.h>
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::MobilityModel | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
virtual int64_t | DoAssignStreams (int64_t) |
virtual void | DoDispose (void) |
virtual Vector | DoGetPosition (void) const |
virtual Vector | DoGetVelocity (void) const |
virtual void | DoSetPosition (const Vector &position) |
void | DoWalk (Time timeLeft) |
void | Start (void) |
Private Attributes | |
double | m_alpha |
Box | m_bounds |
double | m_Direction |
EventId | m_event |
ConstantVelocityHelper | m_helper |
double | m_meanDirection |
double | m_meanPitch |
double | m_meanVelocity |
Ptr< NormalRandomVariable > | m_normalDirection |
Ptr< NormalRandomVariable > | m_normalPitch |
Ptr< NormalRandomVariable > | m_normalVelocity |
double | m_Pitch |
Ptr< RandomVariableStream > | m_rndMeanDirection |
Ptr< RandomVariableStream > | m_rndMeanPitch |
Ptr< RandomVariableStream > | m_rndMeanVelocity |
Time | m_timeStep |
double | m_Velocity |
Additional Inherited Members | |
Public Member Functions inherited from ns3::MobilityModel | |
int64_t | AssignStreams (int64_t stream) |
double | GetDistanceFrom (Ptr< const MobilityModel > position) const |
Vector | GetPosition (void) const |
double | GetRelativeSpeed (Ptr< const MobilityModel > other) const |
Vector | GetVelocity (void) const |
void | SetPosition (const Vector &position) |
Public Member Functions inherited from ns3::Object | |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
Public Member Functions inherited from ns3::ObjectBase | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
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 | |
Object (const Object &o) | |
virtual void | DoInitialize (void) |
virtual void | NotifyNewAggregate (void) |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
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:
[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
ns3::GaussMarkovMobilityModel is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 80 of file gauss-markov-mobility-model.h.
|
privatevirtual |
The default implementation does nothing but return the passed-in parameter. Subclasses using random variables are expected to override this.
Reimplemented from ns3::MobilityModel.
Definition at line 222 of file gauss-markov-mobility-model.cc.
References ns3::RandomVariableStream::SetStream().
|
privatevirtual |
This method is called by Object::Dispose or by the object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.
It is safe to call GetObject from within this method.
Reimplemented from ns3::Object.
Definition at line 196 of file gauss-markov-mobility-model.cc.
References ns3::Object::DoDispose().
|
privatevirtual |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 203 of file gauss-markov-mobility-model.cc.
|
privatevirtual |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 216 of file gauss-markov-mobility-model.cc.
|
privatevirtual |
position | the position to set. |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 209 of file gauss-markov-mobility-model.cc.
References ns3::Simulator::Remove(), and ns3::Simulator::ScheduleNow().