Steady-state random waypoint mobility model. More...
#include "steady-state-random-waypoint-mobility-model.h"
Public Member Functions | |
SteadyStateRandomWaypointMobilityModel () | |
Public Member Functions inherited from ns3::MobilityModel | |
MobilityModel () | |
~MobilityModel () override=0 | |
int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
double | GetDistanceFrom (Ptr< const MobilityModel > position) const |
Vector | GetPosition () const |
Vector | GetPositionWithReference (const Vector &referencePosition) const |
This method may be used if the position returned may depend on some reference position provided. More... | |
double | GetRelativeSpeed (Ptr< const MobilityModel > other) const |
Vector | GetVelocity () const |
void | SetPosition (const Vector &position) |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Register this type with the TypeId system. More... | |
Static Public Member Functions inherited from ns3::MobilityModel | |
static TypeId | GetTypeId () |
Register this type with the TypeId system. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Protected Member Functions | |
void | DoInitialize () override |
Initialize() implementation. More... | |
Protected Member Functions inherited from ns3::MobilityModel | |
void | NotifyCourseChange () const |
Must be invoked by subclasses when the course of the position changes to notify course change listeners. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoDispose () |
Destructor implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
void | BeginWalk () |
Start a motion period and schedule the ending of the motion. More... | |
int64_t | DoAssignStreams (int64_t) override |
The default implementation does nothing but return the passed-in parameter. More... | |
Vector | DoGetPosition () const override |
Vector | DoGetVelocity () const override |
void | DoInitializePrivate () |
Configure random variables based on attributes; calculate the steady state probability that node is initially paused; schedule either end of pause time or initial motion of the node. More... | |
void | DoSetPosition (const Vector &position) override |
void | Start () |
Start a pause period and schedule the ending of the pause. More... | |
void | SteadyStateBeginWalk (const Vector &destination) |
Use provided destination to calculate travel delay, and schedule a Start() event at that time. More... | |
Private Attributes | |
bool | alreadyStarted |
flag for starting state More... | |
EventId | m_event |
current event ID More... | |
ConstantVelocityHelper | m_helper |
helper for velocity computations More... | |
double | m_maxPause |
maximum pause value (s) More... | |
double | m_maxSpeed |
maximum speed value (m/s) More... | |
double | m_maxX |
maximum x value of traveling region (m) More... | |
double | m_maxY |
maximum y value of traveling region (m) More... | |
double | m_minPause |
minimum pause value (s) More... | |
double | m_minSpeed |
minimum speed value (m/s) More... | |
double | m_minX |
minimum x value of traveling region (m) More... | |
double | m_minY |
minimum y value of traveling region (m) More... | |
Ptr< UniformRandomVariable > | m_pause |
random variable for pause values More... | |
Ptr< RandomBoxPositionAllocator > | m_position |
position allocator More... | |
Ptr< UniformRandomVariable > | m_speed |
random variable for speed values More... | |
Ptr< UniformRandomVariable > | m_u_r |
rv used in step 5 of algorithm More... | |
Ptr< UniformRandomVariable > | m_x |
rv used for position allocator More... | |
Ptr< UniformRandomVariable > | m_x1_r |
rv used in rejection sampling phase More... | |
Ptr< UniformRandomVariable > | m_x2_r |
rv used in rejection sampling phase More... | |
Ptr< UniformRandomVariable > | m_y |
rv used for position allocator More... | |
Ptr< UniformRandomVariable > | m_y1_r |
rv used in rejection sampling phase More... | |
Ptr< UniformRandomVariable > | m_y2_r |
rv used in rejection sampling phase More... | |
double | m_z |
z value of traveling region More... | |
Additional Inherited Members | |
Public Types inherited from ns3::MobilityModel | |
typedef void(* | TracedCallback) (Ptr< const MobilityModel > model) |
TracedCallback signature. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Steady-state random waypoint mobility model.
This model based on random waypoint mobility (RWM) model for case when speed, pause and position are uniformly distributed random variables. The difference is that the initial values of this parameters are not from uniform distribution but from stationary distribution of RWM model. The implementation of this model is 2D-specific and with nonzero nodes speeds. In the 3D ns-3 coordinate system, the movement occurs on the plane, where is a constant which can be configured using the Z attribute.
Based on NS-2 implementation by Toilers Research Group – Colorado School of Mines (http://toilers.mines.edu). The papers related to this code are: W. Navidi and T. Camp, Stationary Distributions for the Random Waypoint Mobility Model, IEEE Transactions on Mobile Computing, vol. 3, no. 1, pp. 99-108, January-March 2004. W. Navidi, T. Camp, and N. Bauer, Improving the Accuracy of Random Waypoint Simulations Through Steady-State Initialization, Proceedings of the 15th International Conference on Modeling and Simulation (MS '04), pp. 319-326, March 2004.
Definition at line 56 of file steady-state-random-waypoint-mobility-model.h.
ns3::SteadyStateRandomWaypointMobilityModel::SteadyStateRandomWaypointMobilityModel | ( | ) |
|
private |
Start a motion period and schedule the ending of the motion.
Definition at line 246 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::CalculateDistance(), ns3::ConstantVelocityHelper::GetCurrentPosition(), ns3::UniformRandomVariable::GetValue(), two-ray-to-three-gpp-ch-calibration::k, m_event, m_helper, m_maxX, m_maxY, m_minX, m_minY, m_position, m_speed, ns3::MobilityModel::NotifyCourseChange(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::ConstantVelocityHelper::SetVelocity(), Start(), ns3::ConstantVelocityHelper::Unpause(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoInitializePrivate(), and Start().
|
overrideprivatevirtual |
The default implementation does nothing but return the passed-in parameter.
Subclasses using random variables are expected to override this.
start | starting stream index |
Reimplemented from ns3::MobilityModel.
Definition at line 302 of file steady-state-random-waypoint-mobility-model.cc.
References m_pause, m_position, m_speed, m_u_r, m_x, m_x1_r, m_x2_r, m_y, m_y1_r, m_y2_r, and ns3::RandomVariableStream::SetStream().
|
overrideprivatevirtual |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 278 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetCurrentPosition(), m_helper, and ns3::ConstantVelocityHelper::Update().
|
overrideprivatevirtual |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 296 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::ConstantVelocityHelper::GetVelocity(), and m_helper.
|
overrideprotectedvirtual |
Initialize() implementation.
This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.
Reimplemented from ns3::Object.
Definition at line 105 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::Object::DoInitialize(), and DoInitializePrivate().
|
private |
Configure random variables based on attributes; calculate the steady state probability that node is initially paused; schedule either end of pause time or initial motion of the node.
Definition at line 112 of file steady-state-random-waypoint-mobility-model.cc.
References alreadyStarted, BeginWalk(), ns3::UniformRandomVariable::GetValue(), ns3::EventId::IsRunning(), m_event, m_helper, m_maxPause, m_maxSpeed, m_maxX, m_maxY, m_minPause, m_minSpeed, m_minX, m_minY, m_pause, m_position, m_speed, m_u_r, m_x, m_x1_r, m_x2_r, m_y, m_y1_r, m_y2_r, m_z, ns3::MobilityModel::NotifyCourseChange(), NS_ASSERT, ns3::ConstantVelocityHelper::Pause(), ns3::Simulator::Schedule(), ns3::Simulator::ScheduleNow(), ns3::Seconds(), ns3::ObjectBase::SetAttribute(), ns3::ConstantVelocityHelper::SetPosition(), SteadyStateBeginWalk(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoInitialize().
|
overrideprivatevirtual |
position | the position to set. |
Concrete subclasses of this base class must implement this method.
Implements ns3::MobilityModel.
Definition at line 285 of file steady-state-random-waypoint-mobility-model.cc.
References alreadyStarted, ns3::EventId::Cancel(), m_event, m_helper, ns3::Simulator::ScheduleNow(), ns3::ConstantVelocityHelper::SetPosition(), and Start().
|
static |
Register this type with the TypeId system.
Definition at line 33 of file steady-state-random-waypoint-mobility-model.cc.
References m_maxPause, m_maxSpeed, m_maxX, m_maxY, m_minPause, m_minSpeed, m_minX, m_minY, m_z, ns3::MakeDoubleAccessor(), and ns3::TypeId::SetParent().
|
private |
Start a pause period and schedule the ending of the pause.
Definition at line 268 of file steady-state-random-waypoint-mobility-model.cc.
References BeginWalk(), ns3::UniformRandomVariable::GetValue(), m_event, m_helper, m_pause, ns3::MobilityModel::NotifyCourseChange(), ns3::ConstantVelocityHelper::Pause(), ns3::Simulator::Schedule(), ns3::Seconds(), and ns3::ConstantVelocityHelper::Update().
Referenced by BeginWalk(), DoSetPosition(), and SteadyStateBeginWalk().
|
private |
Use provided destination to calculate travel delay, and schedule a Start() event at that time.
destination | the destination to move to |
Definition at line 222 of file steady-state-random-waypoint-mobility-model.cc.
References ns3::CalculateDistance(), ns3::ConstantVelocityHelper::GetCurrentPosition(), ns3::UniformRandomVariable::GetValue(), two-ray-to-three-gpp-ch-calibration::k, m_event, m_helper, m_maxSpeed, m_maxX, m_maxY, m_minSpeed, m_minX, m_minY, m_u_r, ns3::MobilityModel::NotifyCourseChange(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::ConstantVelocityHelper::SetVelocity(), Start(), ns3::ConstantVelocityHelper::Unpause(), and ns3::ConstantVelocityHelper::Update().
Referenced by DoInitializePrivate().
|
private |
flag for starting state
Definition at line 109 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and DoSetPosition().
|
private |
current event ID
Definition at line 108 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), DoSetPosition(), Start(), and SteadyStateBeginWalk().
|
private |
helper for velocity computations
Definition at line 95 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoGetPosition(), DoGetVelocity(), DoInitializePrivate(), DoSetPosition(), Start(), and SteadyStateBeginWalk().
|
private |
maximum pause value (s)
Definition at line 106 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and GetTypeId().
|
private |
maximum speed value (m/s)
Definition at line 96 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
maximum x value of traveling region (m)
Definition at line 100 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
maximum y value of traveling region (m)
Definition at line 102 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
minimum pause value (s)
Definition at line 105 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and GetTypeId().
|
private |
minimum speed value (m/s)
Definition at line 97 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
minimum x value of traveling region (m)
Definition at line 99 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
minimum y value of traveling region (m)
Definition at line 101 of file steady-state-random-waypoint-mobility-model.h.
Referenced by BeginWalk(), DoInitializePrivate(), GetTypeId(), and SteadyStateBeginWalk().
|
private |
random variable for pause values
Definition at line 107 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), DoInitializePrivate(), and Start().
|
private |
position allocator
Definition at line 104 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), BeginWalk(), DoAssignStreams(), and DoInitializePrivate().
|
private |
random variable for speed values
Definition at line 98 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), BeginWalk(), DoAssignStreams(), and DoInitializePrivate().
|
private |
rv used in step 5 of algorithm
Definition at line 114 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), DoInitializePrivate(), and SteadyStateBeginWalk().
|
private |
rv used for position allocator
Definition at line 115 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), and DoInitializePrivate().
|
private |
rv used in rejection sampling phase
Definition at line 110 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), and DoInitializePrivate().
|
private |
rv used in rejection sampling phase
Definition at line 112 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), and DoInitializePrivate().
|
private |
rv used for position allocator
Definition at line 116 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), and DoInitializePrivate().
|
private |
rv used in rejection sampling phase
Definition at line 111 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), and DoInitializePrivate().
|
private |
rv used in rejection sampling phase
Definition at line 113 of file steady-state-random-waypoint-mobility-model.h.
Referenced by SteadyStateRandomWaypointMobilityModel(), DoAssignStreams(), and DoInitializePrivate().
|
private |
z value of traveling region
Definition at line 103 of file steady-state-random-waypoint-mobility-model.h.
Referenced by DoInitializePrivate(), and GetTypeId().