Gauss-Markov mobility model. More...
#include <gauss-markov-mobility-model.h>
Public Member Functions | |
GaussMarkovMobilityModel () | |
![]() | |
MobilityModel () | |
virtual | ~MobilityModel ()=0 |
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) |
![]() | |
Object () | |
virtual | ~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 | Start (void) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~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) |
Static Public Member Functions | |
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 | |
![]() | |
void | NotifyCourseChange (void) const |
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.
ns3::GaussMarkovMobilityModel::GaussMarkovMobilityModel | ( | ) |
Definition at line 88 of file gauss-markov-mobility-model.cc.
References m_event, m_helper, m_meanDirection, m_meanPitch, m_meanVelocity, ns3::Simulator::ScheduleNow(), Start(), and ns3::ConstantVelocityHelper::Unpause().
|
privatevirtual |
Definition at line 222 of file gauss-markov-mobility-model.cc.
References m_normalDirection, m_normalPitch, m_normalVelocity, m_rndMeanDirection, m_rndMeanPitch, m_rndMeanVelocity, and ns3::RandomVariableStream::SetStream().
|
privatevirtual |
Definition at line 196 of file gauss-markov-mobility-model.cc.
|
privatevirtual |
Definition at line 203 of file gauss-markov-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetCurrentPosition(), m_helper, and ns3::ConstantVelocityHelper::Update().
|
privatevirtual |
Definition at line 216 of file gauss-markov-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetVelocity(), and m_helper.
|
privatevirtual |
Definition at line 209 of file gauss-markov-mobility-model.cc.
References m_event, m_helper, ns3::Simulator::Remove(), ns3::Simulator::ScheduleNow(), ns3::ConstantVelocityHelper::SetPosition(), and Start().
|
private |
Definition at line 149 of file gauss-markov-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetCurrentPosition(), ns3::Time::GetSeconds(), ns3::ConstantVelocityHelper::GetVelocity(), ns3::Box::IsInside(), m_bounds, m_Direction, m_event, m_helper, m_meanDirection, m_meanPitch, m_Pitch, ns3::MobilityModel::NotifyCourseChange(), ns3::Simulator::Schedule(), ns3::Seconds(), ns3::ConstantVelocityHelper::SetVelocity(), Start(), ns3::ConstantVelocityHelper::Unpause(), ns3::ConstantVelocityHelper::UpdateWithBounds(), ns3::Vector3D::x, ns3::Box::xMax, ns3::Box::xMin, ns3::Vector3D::y, ns3::Box::yMax, ns3::Box::yMin, ns3::Vector3D::z, ns3::Box::zMax, and ns3::Box::zMin.
Referenced by Start().
|
static |
Reimplemented from ns3::MobilityModel.
Definition at line 33 of file gauss-markov-mobility-model.cc.
References m_alpha, m_bounds, m_normalDirection, m_normalPitch, m_normalVelocity, m_rndMeanDirection, m_rndMeanPitch, m_rndMeanVelocity, m_timeStep, ns3::Seconds(), and ns3::TypeId::SetParent().
|
private |
Definition at line 98 of file gauss-markov-mobility-model.cc.
References DoWalk(), ns3::RandomVariableStream::GetValue(), ns3::NormalRandomVariable::GetValue(), m_alpha, m_Direction, m_helper, m_meanDirection, m_meanPitch, m_meanVelocity, m_normalDirection, m_normalPitch, m_normalVelocity, m_Pitch, m_rndMeanDirection, m_rndMeanPitch, m_rndMeanVelocity, m_timeStep, m_Velocity, ns3::ConstantVelocityHelper::SetVelocity(), ns3::ConstantVelocityHelper::Unpause(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoSetPosition(), DoWalk(), and GaussMarkovMobilityModel().
|
private |
Definition at line 95 of file gauss-markov-mobility-model.h.
Referenced by GetTypeId(), and Start().
|
private |
Definition at line 109 of file gauss-markov-mobility-model.h.
Referenced by DoWalk(), and GetTypeId().
|
private |
Definition at line 100 of file gauss-markov-mobility-model.h.
|
private |
Definition at line 108 of file gauss-markov-mobility-model.h.
Referenced by DoSetPosition(), DoWalk(), and GaussMarkovMobilityModel().
|
private |
Definition at line 93 of file gauss-markov-mobility-model.h.
Referenced by DoGetPosition(), DoGetVelocity(), DoSetPosition(), DoWalk(), GaussMarkovMobilityModel(), and Start().
|
private |
Definition at line 97 of file gauss-markov-mobility-model.h.
Referenced by DoWalk(), GaussMarkovMobilityModel(), and Start().
|
private |
Definition at line 98 of file gauss-markov-mobility-model.h.
Referenced by DoWalk(), GaussMarkovMobilityModel(), and Start().
|
private |
Definition at line 96 of file gauss-markov-mobility-model.h.
Referenced by GaussMarkovMobilityModel(), and Start().
|
private |
Definition at line 105 of file gauss-markov-mobility-model.h.
Referenced by DoAssignStreams(), GetTypeId(), and Start().
|
private |
Definition at line 107 of file gauss-markov-mobility-model.h.
Referenced by DoAssignStreams(), GetTypeId(), and Start().
|
private |
Definition at line 103 of file gauss-markov-mobility-model.h.
Referenced by DoAssignStreams(), GetTypeId(), and Start().
|
private |
Definition at line 101 of file gauss-markov-mobility-model.h.
|
private |
Definition at line 104 of file gauss-markov-mobility-model.h.
Referenced by DoAssignStreams(), GetTypeId(), and Start().
|
private |
Definition at line 106 of file gauss-markov-mobility-model.h.
Referenced by DoAssignStreams(), GetTypeId(), and Start().
|
private |
Definition at line 102 of file gauss-markov-mobility-model.h.
Referenced by DoAssignStreams(), GetTypeId(), and Start().
|
private |
Definition at line 94 of file gauss-markov-mobility-model.h.
Referenced by GetTypeId(), and Start().
|
private |
Definition at line 99 of file gauss-markov-mobility-model.h.
Referenced by Start().