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. More... | |
~MobilityHelper () | |
Destroy a Mobility Helper. More... | |
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. More... | |
std::string | GetMobilityModelType (void) const |
void | Install (NodeContainer container) const |
Layout a collection of nodes according to the current position allocator type. More... | |
void | Install (Ptr< Node > node) const |
"Layout" a single node according to the current position allocator type. More... | |
void | Install (std::string nodeName) const |
"Layout" a single node according to the current position allocator type. More... | |
void | InstallAll (void) |
Perform the work of MobilityHelper::Install on all nodes which exist in the simulation. More... | |
void | PopReferenceMobilityModel (void) |
Remove the top item from the top of the stack of "reference mobility models". More... | |
void | PushReferenceMobilityModel (Ptr< Object > reference) |
void | PushReferenceMobilityModel (std::string referenceName) |
void | SetMobilityModel (std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue()) |
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. More... | |
void | SetPositionAllocator (std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue()) |
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. More... | |
Private Attributes | |
ObjectFactory | m_mobility |
Object factory to create mobility objects. More... | |
std::vector< Ptr< MobilityModel > > | m_mobilityStack |
Internal stack of mobility models. More... | |
Ptr< PositionAllocator > | m_position |
Position allocator for use in hierarchical mobility model. More... | |
Helper class used to assign positions and mobility models to nodes.
MobilityHelper::Install is the most important method here.
Definition at line 42 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 36 of file mobility-helper.cc.
References m_mobility, m_position, and ns3::ObjectFactory::SetTypeId().
ns3::MobilityHelper::~MobilityHelper | ( | ) |
Destroy a Mobility Helper.
Definition at line 43 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 255 of file mobility-helper.cc.
References ns3::NodeContainer::Begin(), ns3::NodeContainer::End(), ns3::Object::GetObject(), and third::mobility.
Referenced by RoutingExperiment::Run(), and VanetRoutingExperiment::SetupAdhocMobilityNodes().
|
staticprivate |
Output course change events from mobility model to output stream.
stream | output stream |
mobility | mobility model |
Definition at line 209 of file mobility-helper.cc.
References ns3::DoRound(), ns3::OutputStreamWrapper::GetStream(), third::mobility, 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 242 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 234 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 250 of file mobility-helper.cc.
References EnableAscii(), and ns3::NodeContainer::GetGlobal().
n1 | node 1 |
n2 | node 2 |
Definition at line 273 of file mobility-helper.cc.
References ns3::Object::GetObject(), NS_ASSERT, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::BsmApplication::GenerateWaveTraffic(), and ns3::BsmApplication::HandleReceivedBsmPacket().
std::string ns3::MobilityHelper::GetMobilityModelType | ( | void | ) | const |
Definition at line 124 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 169 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 130 of file mobility-helper.cc.
References ns3::ObjectFactory::Create(), ns3::TypeId::GetName(), ns3::Object::GetObject(), ns3::ObjectFactory::GetTypeId(), m_mobility, m_mobilityStack, m_position, NS_FATAL_ERROR, NS_LOG_DEBUG, and ns3::MobilityModel::SetPosition().
Referenced by LteHandoverTargetTestCase::DoRun(), LteEpcE2eDataTestCase::DoRun(), LteHandoverDelayTestCase::DoRun(), LteX2HandoverMeasuresTestCase::DoRun(), WaypointMobilityModelViaHelper::DoRun(), Install(), InstallAll(), Experiment::Run(), RoutingExperiment::Run(), VanetRoutingExperiment::SetupAdhocMobilityNodes(), 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 163 of file mobility-helper.cc.
References Install().
void ns3::MobilityHelper::InstallAll | ( | void | ) |
Perform the work of MobilityHelper::Install on all nodes which exist in the simulation.
Definition at line 178 of file mobility-helper.cc.
References ns3::NodeContainer::GetGlobal(), and Install().
void ns3::MobilityHelper::PopReferenceMobilityModel | ( | void | ) |
Remove the top item from the top of the stack of "reference mobility models".
Definition at line 117 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 103 of file mobility-helper.cc.
References m_mobilityStack, third::mobility, and anonymous_namespace{print-introspected-doxygen.cc}::reference.
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 110 of file mobility-helper.cc.
References m_mobilityStack, and third::mobility.
void ns3::MobilityHelper::SetMobilityModel | ( | std::string | type, |
std::string | n1 = "" , |
||
const AttributeValue & | v1 = EmptyAttributeValue () , |
||
std::string | n2 = "" , |
||
const AttributeValue & | v2 = EmptyAttributeValue () , |
||
std::string | n3 = "" , |
||
const AttributeValue & | v3 = EmptyAttributeValue () , |
||
std::string | n4 = "" , |
||
const AttributeValue & | v4 = EmptyAttributeValue () , |
||
std::string | n5 = "" , |
||
const AttributeValue & | v5 = EmptyAttributeValue () , |
||
std::string | n6 = "" , |
||
const AttributeValue & | v6 = EmptyAttributeValue () , |
||
std::string | n7 = "" , |
||
const AttributeValue & | v7 = EmptyAttributeValue () , |
||
std::string | n8 = "" , |
||
const AttributeValue & | v8 = EmptyAttributeValue () , |
||
std::string | n9 = "" , |
||
const AttributeValue & | v9 = EmptyAttributeValue () |
||
) |
type | the type of mobility model to use. |
n1 | the name of the attribute to set in the mobility model. |
v1 | the value of the attribute to set in the mobility model. |
n2 | the name of the attribute to set in the mobility model. |
v2 | the value of the attribute to set in the mobility model. |
n3 | the name of the attribute to set in the mobility model. |
v3 | the value of the attribute to set in the mobility model. |
n4 | the name of the attribute to set in the mobility model. |
v4 | the value of the attribute to set in the mobility model. |
n5 | the name of the attribute to set in the mobility model. |
v5 | the value of the attribute to set in the mobility model. |
n6 | the name of the attribute to set in the mobility model. |
v6 | the value of the attribute to set in the mobility model. |
n7 | the name of the attribute to set in the mobility model. |
v7 | the value of the attribute to set in the mobility model. |
n8 | the name of the attribute to set in the mobility model. |
v8 | the value of the attribute to set in the mobility model. |
n9 | the name of the attribute to set in the mobility model. |
v9 | the value of the attribute to set in the mobility model. |
Calls to MobilityHelper::Install will create an instance of a matching mobility model for each node.
Definition at line 79 of file mobility-helper.cc.
References m_mobility, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().
Referenced by LteHandoverTargetTestCase::DoRun(), LteEpcE2eDataTestCase::DoRun(), LteHandoverDelayTestCase::DoRun(), LteX2HandoverMeasuresTestCase::DoRun(), WaypointMobilityModelViaHelper::DoRun(), Experiment::Run(), RoutingExperiment::Run(), VanetRoutingExperiment::SetupAdhocMobilityNodes(), 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 47 of file mobility-helper.cc.
References m_position.
Referenced by LteHandoverTargetTestCase::DoRun(), LteEpcE2eDataTestCase::DoRun(), LteHandoverDelayTestCase::DoRun(), LteX2HandoverMeasuresTestCase::DoRun(), WaypointMobilityModelViaHelper::DoRun(), Experiment::Run(), RoutingExperiment::Run(), and VanetRoutingExperiment::SetupAdhocMobilityNodes().
void ns3::MobilityHelper::SetPositionAllocator | ( | std::string | type, |
std::string | n1 = "" , |
||
const AttributeValue & | v1 = EmptyAttributeValue () , |
||
std::string | n2 = "" , |
||
const AttributeValue & | v2 = EmptyAttributeValue () , |
||
std::string | n3 = "" , |
||
const AttributeValue & | v3 = EmptyAttributeValue () , |
||
std::string | n4 = "" , |
||
const AttributeValue & | v4 = EmptyAttributeValue () , |
||
std::string | n5 = "" , |
||
const AttributeValue & | v5 = EmptyAttributeValue () , |
||
std::string | n6 = "" , |
||
const AttributeValue & | v6 = EmptyAttributeValue () , |
||
std::string | n7 = "" , |
||
const AttributeValue & | v7 = EmptyAttributeValue () , |
||
std::string | n8 = "" , |
||
const AttributeValue & | v8 = EmptyAttributeValue () , |
||
std::string | n9 = "" , |
||
const AttributeValue & | v9 = EmptyAttributeValue () |
||
) |
type | the type of mobility model to use. |
n1 | the name of the attribute to set in the mobility model. |
v1 | the value of the attribute to set in the mobility model. |
n2 | the name of the attribute to set in the mobility model. |
v2 | the value of the attribute to set in the mobility model. |
n3 | the name of the attribute to set in the mobility model. |
v3 | the value of the attribute to set in the mobility model. |
n4 | the name of the attribute to set in the mobility model. |
v4 | the value of the attribute to set in the mobility model. |
n5 | the name of the attribute to set in the mobility model. |
v5 | the value of the attribute to set in the mobility model. |
n6 | the name of the attribute to set in the mobility model. |
v6 | the value of the attribute to set in the mobility model. |
n7 | the name of the attribute to set in the mobility model. |
v7 | the value of the attribute to set in the mobility model. |
n8 | the name of the attribute to set in the mobility model. |
v8 | the value of the attribute to set in the mobility model. |
n9 | the name of the attribute to set in the mobility model. |
v9 | the value of the attribute to set in the mobility model. |
Definition at line 53 of file mobility-helper.cc.
References ns3::ObjectFactory::Create(), ns3::Object::GetObject(), m_position, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().
|
private |
Object factory to create mobility objects.
Definition at line 288 of file mobility-helper.h.
Referenced by MobilityHelper(), GetMobilityModelType(), Install(), and SetMobilityModel().
|
private |
Internal stack of mobility models.
Definition at line 287 of file mobility-helper.h.
Referenced by Install(), PopReferenceMobilityModel(), and PushReferenceMobilityModel().
|
private |
Position allocator for use in hierarchical mobility model.
Definition at line 289 of file mobility-helper.h.
Referenced by MobilityHelper(), Install(), and SetPositionAllocator().