Helper class used to assign positions and mobility models to nodes. More...
#include "mobility-helper.h"
Public Member Functions | |
MobilityHelper () | |
Construct a Mobility Helper which is used to make life easier when working with mobility models. | |
~MobilityHelper () | |
Destroy a Mobility Helper. | |
int64_t | AssignStreams (NodeContainer c, int64_t stream) |
Assign a fixed random variable stream number to the random variables used by the mobility models on these nodes. | |
std::string | GetMobilityModelType () const |
void | Install (NodeContainer container) const |
Layout a collection of nodes according to the current position allocator type. | |
void | Install (Ptr< Node > node) const |
"Layout" a single node according to the current position allocator type. | |
void | Install (std::string nodeName) const |
"Layout" a single node according to the current position allocator type. | |
void | InstallAll () const |
Perform the work of MobilityHelper::Install on all nodes which exist in the simulation. | |
void | PopReferenceMobilityModel () |
Remove the top item from the top of the stack of "reference mobility models". | |
void | PushReferenceMobilityModel (Ptr< Object > reference) |
void | PushReferenceMobilityModel (std::string referenceName) |
template<typename... Ts> | |
void | SetMobilityModel (std::string type, Ts &&... args) |
void | SetPositionAllocator (Ptr< PositionAllocator > allocator) |
Set the position allocator which will be used to allocate the initial position of every node initialized during MobilityModel::Install. | |
template<typename... Ts> | |
void | SetPositionAllocator (std::string type, Ts &&... args) |
Static Public Member Functions | |
static void | EnableAscii (Ptr< OutputStreamWrapper > stream, NodeContainer n) |
static void | EnableAscii (Ptr< OutputStreamWrapper > stream, uint32_t nodeid) |
static void | EnableAsciiAll (Ptr< OutputStreamWrapper > stream) |
static double | GetDistanceSquaredBetween (Ptr< Node > n1, Ptr< Node > n2) |
Static Private Member Functions | |
static void | CourseChanged (Ptr< OutputStreamWrapper > stream, Ptr< const MobilityModel > mobility) |
Output course change events from mobility model to output stream. | |
Private Attributes | |
ObjectFactory | m_mobility |
Object factory to create mobility objects. | |
std::vector< Ptr< MobilityModel > > | m_mobilityStack |
Internal stack of mobility models. | |
Ptr< PositionAllocator > | m_position |
Position allocator for use in hierarchical mobility model. | |
Helper class used to assign positions and mobility models to nodes.
MobilityHelper::Install is the most important method here.
Definition at line 32 of file mobility-helper.h.
ns3::MobilityHelper::MobilityHelper | ( | ) |
Construct a Mobility Helper which is used to make life easier when working with mobility models.
Definition at line 27 of file mobility-helper.cc.
References ns3::CreateObjectWithAttributes(), m_mobility, m_position, and ns3::ObjectFactory::SetTypeId().
ns3::MobilityHelper::~MobilityHelper | ( | ) |
Destroy a Mobility Helper.
Definition at line 37 of file mobility-helper.cc.
int64_t ns3::MobilityHelper::AssignStreams | ( | NodeContainer | c, |
int64_t | stream ) |
Assign a fixed random variable stream number to the random variables used by the mobility models on these nodes.
Return the number of streams (possibly zero) that have been assigned. The Install() method should have previously been called by the user.
c | NodeContainer of the set of nodes for which the MobilityModels should be modified to use a fixed stream |
stream | first stream index to use |
Definition at line 206 of file mobility-helper.cc.
References ns3::NodeContainer::Begin(), and ns3::NodeContainer::End().
Referenced by RoutingExperiment::Run().
|
staticprivate |
Output course change events from mobility model to output stream.
stream | output stream |
mobility | mobility model |
Definition at line 158 of file mobility-helper.cc.
References ns3::DoRound(), and ns3::Simulator::Now().
Referenced by EnableAscii().
|
static |
stream | an output stream wrapper |
n | node container |
Enable ascii output to record course changes from the mobility models associated to the the nodes in the input container and dump that to the specified output stream. Nodes that do not have a MobilityModel aggregated will not result in any output.
Definition at line 191 of file mobility-helper.cc.
References ns3::NodeContainer::Begin(), EnableAscii(), and ns3::NodeContainer::End().
|
static |
stream | an output stream wrapper |
nodeid | the id of the node to generate ascii output for. |
Enable ascii output to record course changes from the mobility model associated with the specified nodeid and dump that to the specified output stream. If the Node does not have a MobilityModel aggregated, this method will not produce any output.
Definition at line 181 of file mobility-helper.cc.
References ns3::Config::ConnectWithoutContextFailSafe(), CourseChanged(), and ns3::MakeBoundCallback().
Referenced by EnableAscii(), and EnableAsciiAll().
|
static |
stream | an output stream wrapper |
Enable ascii output to record course changes from the mobility models associated to every node in the system and dump that to the specified output stream. Nodes that do not have a MobilityModel aggregated will not result in any output.
Definition at line 200 of file mobility-helper.cc.
References EnableAscii(), and ns3::NodeContainer::GetGlobal().
Referenced by MobilityTraceTestCase::DoRun(), and RoutingExperiment::Run().
n1 | node 1 |
n2 | node 2 |
Definition at line 224 of file mobility-helper.cc.
References NS_ASSERT, and NS_LOG_FUNCTION_NOARGS.
std::string ns3::MobilityHelper::GetMobilityModelType | ( | ) | const |
Definition at line 68 of file mobility-helper.cc.
References ns3::TypeId::GetName(), ns3::ObjectFactory::GetTypeId(), and m_mobility.
void ns3::MobilityHelper::Install | ( | NodeContainer | container | ) | const |
Layout a collection of nodes according to the current position allocator type.
For each node in the provided NodeContainer, this method creates an instance of a ns3::MobilityModel subclass (the type of which was set with MobilityHelper::SetMobilityModel), aggregates it to the node, and sets an initial position based on the current position allocator (set through MobilityHelper::SetPositionAllocator).
container | The set of nodes to layout. |
Definition at line 116 of file mobility-helper.cc.
References ns3::NodeContainer::Begin(), ns3::NodeContainer::End(), and Install().
"Layout" a single node according to the current position allocator type.
This method creates an instance of a ns3::MobilityModel subclass (the type of which was set with MobilityHelper::SetMobilityModel), aggregates it to the provided node, and sets an initial position based on the current position allocator (set through MobilityHelper::SetPositionAllocator).
node | The node to "layout." |
Definition at line 74 of file mobility-helper.cc.
References ns3::ObjectFactory::Create(), ns3::CreateObjectWithAttributes(), ns3::TypeId::GetName(), ns3::Object::GetObject(), ns3::ObjectFactory::GetTypeId(), m_mobility, m_mobilityStack, m_position, NS_FATAL_ERROR, and NS_LOG_DEBUG.
Referenced by LteEpcE2eDataTestCase::DoRun(), LteHandoverDelayTestCase::DoRun(), LteHandoverFailureTestCase::DoRun(), LteHandoverTargetTestCase::DoRun(), LteX2HandoverMeasuresTestCase::DoRun(), WaypointMobilityModelViaHelper::DoRun(), Install(), Install(), InstallAll(), Experiment::Run(), RoutingExperiment::Run(), and UanExperiment::SetupPositions().
void ns3::MobilityHelper::Install | ( | std::string | nodeName | ) | const |
"Layout" a single node according to the current position allocator type.
This method creates an instance of a ns3::MobilityModel subclass (the type of which was set with MobilityHelper::SetMobilityModel), aggregates it to the provided node, and sets an initial position based on the current position allocator (set through MobilityHelper::SetPositionAllocator).
nodeName | The name of the node to "layout." |
Definition at line 109 of file mobility-helper.cc.
References ns3::Names::Find(), and Install().
void ns3::MobilityHelper::InstallAll | ( | ) | const |
Perform the work of MobilityHelper::Install on all nodes which exist in the simulation.
Definition at line 125 of file mobility-helper.cc.
References ns3::NodeContainer::GetGlobal(), and Install().
void ns3::MobilityHelper::PopReferenceMobilityModel | ( | ) |
Remove the top item from the top of the stack of "reference mobility models".
Definition at line 62 of file mobility-helper.cc.
References m_mobilityStack.
reference | item to push. |
Push an item on the top of the stack of "reference mobility models". The input item should be a node instance to which a mobility model has already been aggregated (usually by a call to Install).
If this stack is not empty when MobilityHelper::Install is called, the model from the top of the stack is used to create a ns3::HierarchicalMobilityModel to make the newly-created models define their positions relative to that of the parent mobility model.
This method is typically used to create hierarchical mobility patterns and positions by starting with the large-scale mobility features, and, then, defining the smaller-scale movements relative to a few reference points in the large-scale model.
Definition at line 48 of file mobility-helper.cc.
References m_mobilityStack.
void ns3::MobilityHelper::PushReferenceMobilityModel | ( | std::string | referenceName | ) |
referenceName | named item to push. |
Push an item on the top of the stack of "reference mobility models". The input item should be a node instance to which a mobility model has already been aggregated (usually by a call to Install).
If this stack is not empty when MobilityHelper::Install is called, the model from the top of the stack is used to create a ns3::HierarchicalMobilityModel to make the newly-created models define their positions relative to that of the parent mobility model.
This method is typically used to create hierarchical mobility patterns and positions by starting with the large-scale mobility features, and, then, defining the smaller-scale movements relative to a few reference points in the large-scale model.
Definition at line 55 of file mobility-helper.cc.
References ns3::Names::Find(), and m_mobilityStack.
void ns3::MobilityHelper::SetMobilityModel | ( | std::string | type, |
Ts &&... | args ) |
Ts | [deduced] Argument types |
type | the type of mobility model to use. | |
[in] | args | Name and AttributeValue pairs to set. |
Calls to MobilityHelper::Install will create an instance of a matching mobility model for each node.
Definition at line 248 of file mobility-helper.h.
References m_mobility, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().
Referenced by LteEpcE2eDataTestCase::DoRun(), LteHandoverDelayTestCase::DoRun(), LteHandoverFailureTestCase::DoRun(), LteHandoverTargetTestCase::DoRun(), LteX2HandoverMeasuresTestCase::DoRun(), WaypointMobilityModelViaHelper::DoRun(), Experiment::Run(), RoutingExperiment::Run(), and UanExperiment::SetupPositions().
void ns3::MobilityHelper::SetPositionAllocator | ( | Ptr< PositionAllocator > | allocator | ) |
Set the position allocator which will be used to allocate the initial position of every node initialized during MobilityModel::Install.
allocator | allocate initial node positions |
Definition at line 42 of file mobility-helper.cc.
References m_position.
Referenced by LteEpcE2eDataTestCase::DoRun(), LteHandoverDelayTestCase::DoRun(), LteHandoverFailureTestCase::DoRun(), LteHandoverTargetTestCase::DoRun(), LteX2HandoverMeasuresTestCase::DoRun(), WaypointMobilityModelViaHelper::DoRun(), Experiment::Run(), and RoutingExperiment::Run().
void ns3::MobilityHelper::SetPositionAllocator | ( | std::string | type, |
Ts &&... | args ) |
Ts | [deduced] Argument types |
type | the type of mobility model to use. | |
[in] | args | Name and AttributeValue pairs to set. |
Definition at line 240 of file mobility-helper.h.
References ns3::ObjectFactory::Create(), ns3::Object::GetObject(), and m_position.
|
private |
Object factory to create mobility objects.
Definition at line 229 of file mobility-helper.h.
Referenced by MobilityHelper(), GetMobilityModelType(), Install(), and SetMobilityModel().
|
private |
Internal stack of mobility models.
Definition at line 228 of file mobility-helper.h.
Referenced by Install(), PopReferenceMobilityModel(), PushReferenceMobilityModel(), and PushReferenceMobilityModel().
|
private |
Position allocator for use in hierarchical mobility model.
Definition at line 231 of file mobility-helper.h.
Referenced by MobilityHelper(), Install(), SetPositionAllocator(), and SetPositionAllocator().